一、SOAP API 介绍
SOAP(Simple Object Access Protocol)简单对象访问协议是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息。
-
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 攻击面
1. SOAP 注入
SOAP 注入是指在SOAP 协议中,连接服务端和客户端API处发生的注入,通过向SOAP API发送消息的参数添加注入语句来实现注入效果,通常包括SQL注入、XML注入、代码注入。
漏洞案例:
在识别到SOAP API之后,通过对消息体中的参数进行简单的sql注入判断,发现数据库报错信息。
使用条件语句继续进行判断。
' or 1=1 ---qqq
’ or 1=2 ---qqq
从返回的结果判断该参数部分存在sql注入。
后续使用sqlmap工具进一步利用。
成功注入并获取数据库名。
2. XXE
在SOAP API中,当允许引用外部实体时,通过构造恶意内容,可能导致任意文件读取、系统命令执行、内网端口探测等风险危害。
漏洞案例:
通过Wsdler插件找到SOAP API。
尝试进行外部实体注入,执行任意文件读取。
成功利用并回显。
3. SSRF
在SOAP API中,如果允许本地主机或者其他服务器不限制输入,就可能遭受服务端请求伪造攻击风险。
漏洞案例:
4. XSS
在SOAP API请求消息中,同样容易遭受XSS漏洞攻击。
漏洞案例:
同样的,在相关参数部分插入xss payload,值得注意的是payload中的尖括号要进行HTML编码,不然会造成SOAP标签解析错误从而报错。
成功解析并触发弹框。
5. 用户名枚举
在SOAP API中,同样由于相关业务设计的疏忽,可能也会存在一些业务性漏洞,比如:用户名枚举、验证码爆破等等。
漏洞案例:
在SOAP API请求中对username参数进行枚举。
当存在用户时返回:User Exists
当不存在用户时返回:User Not Found
6. 命令执行
SOAP API的命令执行漏洞其实也输入SOAP注入的一种,通过对相关参数部分植入命令执行payload,由于相关验证机制不全或者被绕过,可能导致恶意命令被执行。
漏洞案例:
7. DOS
在SOAP API中采用的一般都是XML数据格式,请求中的XML数据会由服务端的XML解析器进行解析和处理,在这个过程中,通过对相关元素、属性进行操作可以实行DOS攻击,除此之外利用XXE漏洞也可以进行DOS攻击。下面将列举相关DOS攻击示例:
针对元素名称的DoS攻击的示例。
针对元素属性的DoS攻击的示例。
针对元素个数的DoS攻击的示例(也可以通过重复某个特定元素达到同样效果)。
利用XXE漏洞造成DoS示例。
渗透测试工具
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应用商店下载。
工具的介绍和使用在这里不做过多演示,感兴趣的小伙伴可以利用靶场等环境自行测试。
关于Portal Lab
星阑科技 Portal Lab 致力于前沿安全技术研究及能力工具化。主要研究方向为数据流动安全、API 安全、应用安全、攻防对抗等领域。实验室成员研究成果曾发表于BlackHat、HITB、BlueHat、KCon、XCon等国内外知名安全会议,并多次发布开源安全工具。未来,Portal Lab将继续以开放创新的态度积极投入各类安全技术研究,持续为安全社区及企业级客户提供高质量技术输出。
原文始发于微信公众号(星阑实验室):【技术干货】Attacking SOAP API
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论