首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【技术干货】Attacking SOAP API

【技术干货】Attacking SOAP API

原创
作者头像
小阑本阑
发布2023-10-07 11:43:47
2170
发布2023-10-07 11:43:47
举报
文章被收录于专栏:API安全API安全

SOAP API 介绍

SOAP(Simple Object Access Protocol)简单对象访问协议是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息。

1696648979_6520cf130d016a7295e69.png!small?1696648980635
1696648979_6520cf130d016a7295e69.png!small?1696648980635

SOAP API是采用SOAP协议的应用程序接口,和REST API不同的是,SOAP 是一种协议,而 REST 是一种架构风格,这对 SOAP API 和 REST API 的行为造成了显著差异,比如:

  • SOAP API 仅允许在应用程序之间进行 XML 消息收发
  • SOAP 消息更大、更复杂,这使得其传输和处理速度变慢
  • SOAP 协议要求应用程序存储请求之间的状态,提高了带宽和内存要求,更难以扩展。
  • SOAP 内置了错误处理逻辑,因此相比于REST API更加可靠。

SOAP的组成

在SOAP API的消息中存在了四个不同的元素:

  • Envelope: 是将文档标识为 SOAP 消息而不是任何其他类型的 XML 文档的基本元素。消息以信封的标签开始和结束。(必须元素)
  • Header: 是一个可选元素,可以使用 SOAP 模块添加新特性和功能。一个Envelope中可以包含多个标题。(可选元素)
  • body: 正文包含实际消息:请求或响应。(必须元素)
  • Fault: 如果在处理过程中出现问题,则用于错误消息和状态信息。(可选元素)

SOAP API 发现

  • 消息体格式判断,一般来说SOAP API请求数据包采用xml格式进行消息传输
  • WSDL文件,可以通过Googlehacking的语法找到对应的WSDL文件,例如:

inurl:jws?wsdl inurl:asmx?wsdl inurl:aspx?wsdl inurl:ascx?wsdl inurl:ashx?wsdl inurl:dll?wsdl inurl:exe?wsdl inurl:php?wsdl inurl:pl?wsdl inurl:?wsdl filetype:jws filetype:asmx filetype:ascx ......

  • 通过流量被动识别,例如通过burpsuite插件或者其他工具进行被动特征识别。

SOAP API 攻击面

SOAP 注入

SOAP 注入是指在SOAP 协议中,连接服务端和客户端API处发生的注入,通过向SOAP API发送消息的参数添加注入语句来实现注入效果,通常包括SQL注入、XML注入、代码注入。

漏洞案例

在识别到SOAP API之后,通过对消息体中的参数进行简单的sql注入判断,发现数据库报错信息

1696649003_6520cf2b30b429ed10048.png!small?1696649004528
1696649003_6520cf2b30b429ed10048.png!small?1696649004528

使用条件语句继续进行判断

' or 1=1 ---qqq ’ or 1=2 ---qqq

1696649015_6520cf37cb0fcc6d8a0f2.png!small?1696649017252
1696649015_6520cf37cb0fcc6d8a0f2.png!small?1696649017252

从返回的结果判断该参数部分存在sql注入

1696649026_6520cf42c931bd07e86a3.png!small?1696649028724
1696649026_6520cf42c931bd07e86a3.png!small?1696649028724

后续使用sqlmap工具进一步利用

1696649037_6520cf4d3e84144667bd4.png!small?1696649039070
1696649037_6520cf4d3e84144667bd4.png!small?1696649039070

成功注入并获取数据库名。

XXE

在SOAP API中,当允许引用外部实体时,通过构造恶意内容,可能导致任意文件读取、系统命令执行、内网端口探测等风险危害。

漏洞案例

通过Wsdler插件找到SOAP API

1696649047_6520cf57840fcbfceb629.png!small?1696649048816
1696649047_6520cf57840fcbfceb629.png!small?1696649048816

尝试进行外部实体注入,执行任意文件读取

1696649058_6520cf622bf333eef7910.png!small?1696649059802
1696649058_6520cf622bf333eef7910.png!small?1696649059802

成功利用并回显。

SSRF

在SOAP API中,如果允许本地主机或者其他服务器不限制输入,就可能遭受服务端请求伪造攻击风险。

漏洞案例

1696649069_6520cf6d480f204212b87.png!small?1696649070866
1696649069_6520cf6d480f204212b87.png!small?1696649070866
1696649079_6520cf7735fa3e65fd5c7.png!small?1696649080864
1696649079_6520cf7735fa3e65fd5c7.png!small?1696649080864

XSS

在SOAP API请求消息中,同样容易遭受XSS漏洞攻击

漏洞案例

同样的,在相关参数部分插入xss payload,值得注意的是payload中的尖括号要进行HTML编码,不然会造成SOAP标签解析错误从而报错。

1696649088_6520cf80a2b2594442174.png!small?1696649089986
1696649088_6520cf80a2b2594442174.png!small?1696649089986

成功解析并触发弹框

1696649098_6520cf8a19510a1467937.png!small?1696649099305
1696649098_6520cf8a19510a1467937.png!small?1696649099305

用户名枚举

在SOAP API中,同样由于相关业务设计的疏忽,可能也会存在一些业务性漏洞,比如:用户名枚举、验证码爆破等等

漏洞案例

在SOAP API请求中对username参数进行枚举

1696649108_6520cf945cc2f5ac9abaf.png!small?1696649109680
1696649108_6520cf945cc2f5ac9abaf.png!small?1696649109680

当存在用户时返回:User Exists

当不存在用户时返回:User Not Found

1696649132_6520cfac454a07c85acf4.png!small?1696649133613
1696649132_6520cfac454a07c85acf4.png!small?1696649133613

命令执行

SOAP API的命令执行漏洞其实也输入SOAP注入的一种,通过对相关参数部分植入命令执行payload,由于相关验证机制不全或者被绕过,可能导致恶意命令被执行。

漏洞案例

1696649141_6520cfb5378b6133309aa.png!small?1696649142525
1696649141_6520cfb5378b6133309aa.png!small?1696649142525

DOS

在SOAP API中采用的一般都是XML数据格式,请求中的XML数据会由服务端的XML解析器进行解析和处理,在这个过程中,通过对相关元素、属性进行操作可以实行DOS攻击,除此之外利用XXE漏洞也可以进行DOS攻击。下面将列举相关DOS攻击示例:

针对元素名称的DoS攻击的示例

1696649150_6520cfbe06b1679641c2b.png!small?1696649151392
1696649150_6520cfbe06b1679641c2b.png!small?1696649151392

针对元素属性的DoS攻击的示例

1696649159_6520cfc7b44dd4a3c438f.png!small?1696649161213
1696649159_6520cfc7b44dd4a3c438f.png!small?1696649161213

针对元素个数的DoS攻击的示例(也可以通过重复某个特定元素达到同样效果)

1696649170_6520cfd2c6d498970c124.png!small?1696649172246
1696649170_6520cfd2c6d498970c124.png!small?1696649172246

利用XXE漏洞造成DoS示例

1696649180_6520cfdc88b26a429e8a1.png!small?1696649182106
1696649180_6520cfdc88b26a429e8a1.png!small?1696649182106

渗透测试工具

SOAP API的渗透测试和对常规API渗透测试是一样的、只是,可以使用安全工具来辅助进行,部分工具如下:

  • SoapUI,地址:https://www.soapui.org/
  • SOApSonar,地址:http://www.crosschecknet.com/products/soapsonar/
  • SoapUI NG Pro,地址:https://smartbear.com/product/ready-api/soapui-ng/free-trial/
  • WSSAT,地址:https://github.com/YalcinYolalan/WSSAT
  • Wsdler,Burp应用商店下载。

工具的介绍和使用在这里不做过多演示,感兴趣的小伙伴可以利用靶场等环境自行测试。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SOAP API 介绍
  • SOAP API 发现
  • SOAP API 攻击面
    • SOAP 注入
      • XXE
        • SSRF
          • XSS
            • 用户名枚举
              • 命令执行
                • DOS
                • 渗透测试工具
                相关产品与服务
                云 API
                云 API 是腾讯云开放生态的基石。通过云 API,只需少量的代码即可快速操作云产品;在熟练的情况下,使用云 API 完成一些频繁调用的功能可以极大提高效率;除此之外,通过 API 可以组合功能,实现更高级的功能,易于自动化, 易于远程调用, 兼容性强,对系统要求低。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档