用途:审计使用 SAML 2.0 进行认证或联合登录的 Web 应用,测试身份提供方(IdP)或服务提供方(SP)的 SSO 弱点,评估 SAML 签名校验能否被绕过以冒充任意用户,并检查 SSO 流程中的 XML 注入与重放问题。
主要能力:拦截并篡改 SAML 响应,测试 XML 签名包装(XSW1–XSW8)、签名移除/剥离、NameID 注释注入、SAML 重放、SAML 响应中的 XXE,以及断言消费服务(ACS)URL 操纵。
前置条件:需安装 curl、base64(GNU coreutils)与 xmllint(apt install libxml2-utils);需能拦截并重放 SAML 响应(浏览器代理或已捕获断言);需一份来自合法认证流程的有效 SAML 响应。
输入变量:ACS_URL(接收 SAML 响应的 SP 端点)、SAML_RESPONSE_B64(从有效登录捕获的 Base64 编码 SAML 响应)、TARGET_USER(测试中要冒充的用户名/邮箱)、LEGITIMATE_USER(获取真实断言所用账号)。
使用方式:先解码并格式化 SAML 响应、检查结构;再依次尝试签名剥离、XSW 变体、NameID 注释注入、SAML 重放与 XXE DOCTYPE 注入;最后按严重级别记录发现与修复建议。完整 XSW1–XSW8 测试建议使用 SAMLRaider(Burp 扩展,https://github.com/SAMLRaider/SAMLRaider)。
限制与注意:SAML 响应从浏览器流量捕获时通常经过 URL 编码,需先用 urllib.parse.unquote() 解码再 Base64 解码;XSW 攻击依赖 SP 提取签名元素所用的 XPath 表达式;XXE 可能为带外,需检查 Burp Collaborator 或 SSRF 金丝雀;未经明确书面授权,切勿对生产 IdP/SP 测试,重放断言可能触发账号锁定或审计告警。具体脚本与严重级别指南见 REFERENCE.md,本资料未提供其完整内容。