IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> CVE-2022-30525 Zyxel 防火墙远程命令注入漏洞 -> 正文阅读

[网络协议]CVE-2022-30525 Zyxel 防火墙远程命令注入漏洞

摘要

合勤科技(ZyXEL)是国际知名品牌的网络宽带系统及解决方案的供应商,成立于1989年,目前是台湾证交所上市公司(2391),总部设于台湾新竹科学园区。官网:http://www.zyxel.cn。

Zyxel USG FLEX 100(W) 固件版本 5.00 至 5.21 补丁 1、USG FLEX 200 固件版本 5.00 至 5.21 补丁 1、USG FLEX 500 固件版本 5.00 至 5.21 补丁 1、USG FLEX 700 的 CGI 程序中的操作系统命令注入漏洞固件版本 5.00 到 5.21 补丁 1,USG FLEX 50(W) 固件版本 5.10 到 5.21 补丁 1,USG20(W)-VPN 固件版本 5.10 到 5.21 补丁 1,ATP 系列固件版本 5.10 到 5.21 补丁 1,VPN 系列固件版本4.60 到 5.21 补丁 1,该漏洞存在于某些Zyxel防火墙版本的 CGI 程序中,允许在未经身份验证的情况下在受影响设备上以nobody用户身份执行任意命令。这可能允许攻击者修改特定文件,然后在易受攻击的设备上执行一些操作系统命令。

评分

2022 年 4 月 28 日,合勤发布了修复 CVE-2022-30525 的固件。Rapid7 发现的该漏洞是一个未经身份验证的远程命令注入漏洞,影响某些 Zyxel 防火墙的管理 Web 界面。利用此漏洞的攻击者可以将远程命令执行为nobody. 该漏洞评分为?CVSSv3 9.8

影响范围

下表包含受影响的型号和固件版本。

受影响的模型受影响的固件版本
USG FLEX 100、100W、200、500、700ZLD5.00 至 ZLD5.21 补丁 1
USG20-VPN、USG20W-VPNZLD5.10 至 ZLD5.21 补丁 1
ATP 100、200、500、700、800ZLD5.10 至 ZLD5.21 补丁 1

2022 年 5 月 12 日,Rapid7 发布了针对此漏洞的公告和Metasploit 模块。Shodan的观察表明,相当多的用户已经升级了他们的防火墙。但是,仍有一部分互联网暴露资产可被野外利用。

漏洞分析

该漏洞源于使用os.system攻击者提供的数据。攻击是通过/ztp/cgi-bin/handler端点发起的。handler是一个处理各种命令的 Python 脚本。我们使用固件版本 5.21 的测试Zyxel USG FLEX 100使用handler.py带有以下支持的命令。

?

supported_cmd = ["ping", "dnsanswer", "ps", "peek", "kill", "pcap", "traceroute", \
  "atraceroute", "iptables", "getorchstat", \
  "getInterfaceName_out", "getInterfaceInfo", \
  #"getSingleInterfaceInfo", "getAllInterfaceInfo", \
  #"getInterfaceNameAll", "getInterfaceNameMapping", \
  "nslookup", "iproget", \
  "diagnosticinfo", "networkUnitedTest", \
  #"setRemoteAssistActive", "getRemoteAssist", \
  "setRemoteZyxelSupport", "getRemoteZyxelSupport", \
  "getWanPortList", "getWanPortSt", "setWanPortSt", "getZTPurl", "getWanConnSt", \
  "getUSBSt","setUSBmount","setUSBactive", \
  "getDiagnosticInfoUsb", \
  "getDeviceCloudInfo", "getpacketcapconf", "getpacketcapst", "packetcapstart", "packetcapend", "packetcapremovefile", \
  "getlanguagest","setlanguage"
]

这些命令通过设计为未经身份验证的用户提供了各种有趣的选项。易受 CVE-2022-30525 攻击的命令是getWanPortSt.???????

elif req["command"] == "getWanPortSt":
    reply = lib_wan_setting.getWanPortSt()

我们可以看到getWanPortSt调用了lib_wan_setting.getWanPortSt.?该getWanPortSt命令需要四个参数:vlanidprotodatavlan_tagged。此外,它接受一个mtu参数。两者都data可以mtu被利用来进行命令注入。data实际上包含一个额外的 JSON blob,因此更容易利用mtu.

'''
***************************************************************************
* setwanport function
* @param port: port for setting
* @param vlanid: vlan id , 0 for default disalbing vlan
* @param proto: type of wan (dhcp, static, pppoe)
* @param data: detail setting for different port type
*
* @return reply{
*               "code": <exception error code>,
*               "message": <exception>,
*               "result": {'ZTPurl':"xx"}
*          }
***************************************************************************
'''
def setWanPortSt(req):

    reply = {}
    vlan_tagged = ''
    logging.info(req)
    port = req["port"].strip()

    vlanid = req["vlanid"]
    proto = req["proto"]
    data = req["data"]
    vlan_tagged = req["vlan_tagged"]
…

最终,经过一定程度的验证,所有提供的参数都组合成一个命令并执行。

???????

    cmdLine += extname + ' ' + port.lower() + ' ' + data['username'] + ' ' + data['password'] \
        + ' ' + data['auth_type'] \
        + ' ' + data['ipaddr'] + ' ' + data['gateway'] \
        + ' ' + data['firstDnsServer'] + ' ' + req['mtu']
    if vlan_tagged == '1':
        cmdLine += ' ' + vlanid
    cmdLine += ' >/dev/null 2>&1'
    
logging.info("cmdLine = %s" % cmdLine)
with open("/tmp/local_gui_write_flag", "w") as fout:
    fout.write("1");

response = os.system(cmdLine) 
logging.info(response)

漏洞复现

https://youtu.be/x8Vzq9tm47c

CVE-2022-30525 Zyxel 防火墙远程命令注入

本地复现

相关POC及检测工具关注公众号401SecNote后台回复CVE-2022-30525获取

修复建议

防火墙的日志记录并没有提供任何有用的洞察力。受影响的防火墙确实支持诊断功能,但在生产环境中运行并不可取。如果可能,建议监控系统入口和出口是否存在异常行为。以下 Suricata 规则应有助于在该mtu字段用于漏洞利用时识别漏洞利用:

???????

alert http any any -> any any ( \
    msg:"Possible Zyxel ZTP setWanPortSt mtu Exploit Attempt"; \
    flow:to_server; \
    http.method; content:"POST"; \
    http.uri; content:"/ztp/cgi-bin/handler"; \
    http.request_body; content:"setWanPortSt"; \
    http.request_body; content:"mtu"; \
    http.request_body; pcre:"/mtu["']\s*:\s*["']\s*[^0-9]+/i";
    classtype:misc-attack; \
    sid:221270;)

尽快更新受影响的防火墙。受影响的防火墙都支持自动更新,但需要启用该功能。建议立即启用自动更新。最后,在理想情况下,管理 Web 界面不会暴露在互联网上。如果可能,请禁用 WAN 访问。如果这不可能,请尝试强制执行严格的 IP 允许列表。

https://www.zyxel.com/support/Zyxel-security-advisory-for-OS-command-injection-vulnerability-of-firewalls.shtml

参考链接:

https://www.zyxel.com/support/Zyxel-security-advisory-for-OS-command-injection-vulnerability-of-firewalls.shtml

https://attackerkb.com/topics/LbcysnvxO2/cve-2022-30525/rapid7-analysis?referrer=notificationEmail

https://nvd.nist.gov/vuln/detail/CVE-2022-30525

声明:文章中所涉及工具仅限学习记录使用,请勿用于非法用途,如有侵权,请联系后台删除。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-05-16 11:29:04  更:2022-05-16 11:29:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 10:04:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码