如何在SAML中查找bug——第二部分
字数 1772 2025-08-26 22:11:40
SAML漏洞挖掘与测试指南(第二部分)
1. SAML Raider工具介绍
SAML Raider是一款功能强大的Burp Suite扩展插件,专门用于测试SAML基础设施。它提供两大核心功能:
- SAML消息操作能力
- X.509证书管理系统
1.1 安装SAML Raider
- 打开Burp Suite并单击"Extender"选项卡
- 单击"BApp Store"子选项卡
- 在扩展列表中找到"SAML Raider"
- 单击"安装"按钮
安装完成后,Burp Suite将新增一个名为"SAML Raider Certificates"的选项卡。
2. X.509证书管理
SAML Raider的证书管理器提供以下功能:
- 导入/导出X.509证书
- 显示X.509证书信息
- 导入/导出私钥
- 克隆X.509证书和证书链
- 编辑和自签署现有X.509证书
2.1 生成测试证书
使用OpenSSL生成测试证书:
openssl req -x509 -newkey rsa:4096 -keyout /tmp/key.pem -out /tmp/cert.pem -days 365 -nodes
2.2 证书克隆与编辑
- 在SAML Raider中导入证书
- 选中证书后点击"Clone"按钮创建副本
- 可修改证书字段后点击"Save and Self-Sign"生成新证书
3. SAML消息操作
3.1 拦截SAML消息
使用SAMLRaider提供的测试脚本生成SAML响应:
git clone https://github.com/SAMLRaider/SAMLRaider.git
cd SAMLRaider/scripts/samltest
./samltest
3.2 修改SAML属性
- 在Burp中拦截SAML响应
- 在SAML Raider选项卡中找到AttributeValue标签
- 修改属性值(如将bowser@saml.lan改为mario@saml.lan)
- 转发修改后的响应
注意:使用"Reset Message"按钮可将SAML消息恢复到原始状态。
3.3 Repeater功能
SAML Raider在Burp的Repeater选项卡中添加了专用功能,便于反复修改和测试同一SAML消息。
4. XML签名包装攻击(XSW)
XML签名包装攻击的基本原理:
- XML签名验证阶段:应用程序验证特定XML元素的签名
- 数据处理阶段:应用程序使用XML解析器定位所需元素
- 攻击者通过精心构造的XML文档,使验证阶段和数据处理阶段定位到不同元素
4.1 攻击类型详解
XSW-1(响应包装)
- 复制整个SAML响应
- 将原始签名作为复制响应的子元素插入
- 使XML解析器优先找到并使用攻击者控制的复制响应
XSW-2(响应包装-分离签名)
与XSW-1类似,但使用分离签名而非封装签名
XSW-3(断言包装)
- 复制Assertion元素
- 将复制的Assertion作为根Response元素的第一个子元素插入
- 原始断言成为复制断言的兄弟节点
XSW-4(断言包装-子节点)
- 复制Assertion元素
- 原始断言成为复制断言的子节点
XSW-5(断言包装-封装签名)
- 复制Assertion元素
- 复制的断言封装签名
XSW-6(多层包装)
- 复制Assertion元素
- 复制的断言封装签名
- 签名又封装原始断言
XSW-7(扩展元素利用)
- 插入Extension元素
- 将复制的断言作为Extension的子元素
- 利用限制较少的架构定义绕过验证
XSW-8(变体扩展利用)
- 使用限制较少的XML元素
- 原始断言作为该元素的子元素
4.2 实施XSW攻击的步骤
-
设置拦截规则:
- 进入Proxy → Options
- 创建拦截规则匹配SAMLResponse参数
-
拦截SAML响应并发送到Repeater
-
在Repeater的SAML Raider选项卡中:
- 从下拉菜单中选择XSW攻击类型
- 应用攻击后发送修改后的响应
-
测试不同攻击类型时:
- 每次使用原始消息重新开始
- 尝试修改用户标识等关键属性
- 成功访问SP后立即注销并重复测试
5. 测试方法论
-
准备阶段:
- 安装配置SAML Raider
- 生成测试证书
- 设置拦截环境
-
攻击执行:
- 按顺序尝试各种XSW攻击
- 记录每种攻击的效果
- 重点关注身份属性篡改
-
验证阶段:
- 检查是否绕过身份验证
- 验证权限提升效果
- 确认攻击的持久性
6. 防御建议
- 实施严格的XML解析策略
- 验证签名后强制使用签名元素
- 限制XML扩展元素的使用
- 实施完整的消息而不仅是部分验证
- 使用最新的SAML库并保持更新
通过系统性地应用这些测试技术,安全人员可以全面评估SAML实现的健壮性,发现潜在的身份验证绕过漏洞。