STATEMENT
声明
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测及文章作者不为此承担任何责任。
雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。
概述
在平时做测试的过程中,多为直接通过图形界面话调用接口进行安全测试,通过构造接口请求的接口测试应该遇到的相对比较,本文也是借鉴最近一次应客户需求进行的接口测试来讲讲接口测试的方法以及所需的便捷性工具。Web Service简介:Web Service是一个平台独立的、低耦合的、自包含的、基于可编程的Web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的交互操作的应用程序。
一般的,Web Service分为:
SOAP型Web Service:SOAP型Web Service允许使用XML格式与服务器进行通信;
REST型Web Service:REST型Web Service允许使用JSON格式(也可以使用XML格式)与服务器进行通信。与HTTP类似,该类型服务支持GET、POST、PUT、DELETE方法。不需要WSDL、UDDI;
Web Service三要素:
Web Service三要素包括SOAP(Simple Object Access Protocol)、WSDL
(WebServicesDescriptionLanguage)、UDDI
(UniversalDescriptionDiscovery andIntegration)。其中SOAP用来描述传递信息的格式, WSDL用来描述如何访问具体的接口, UDDI用来管理、分发、查询Web Service 。
其中WSDL(Web Services Description Language)即网络服务描述语言,用于描述Web服务的公共接口。这是一个基于XML的关于如何与Web服务通讯和使用的服务描述;也就是描述与目录中列出的Web服务进行交互时需要绑定的协议和信息格式。通常采用抽象语言描述该服务支持的操作和信息,使用的时候再将实际的网络协议和信息格式绑定给该服务。
WSDL给出了SOAP型Web Service的基本定义,WSDL基于XML语言,描述了与服务交互的基本元素,说明服务端接口、方法、参数和返回值,WSDL是随服务发布成功,自动生成,无需编写。少数情况下,WSDL也可以用来描述REST型Web Service。SOAP也是基于XML(标准通用标记语言下的一个子集)和XSD的,XML是SOAP的数据编码方式。
工具介绍
针对Web Service的渗透测试的工具有很多,例如:
WebScarap
SoapUI
WCFStorm
SOA Cleaner
WSDigger
wsScanner
Wfuzz
RESTClient
BurpSuite
WS-Attacker
ZAP
Metasploit
WSDL Analyze
这里我以BurpSuite结合SoapUI工具讲讲如何对web service服务进行渗透测试,当然ReadyAPI也可以。特别ReadyAPI执行自动化的安全检查,会方便很多,只不过目前我这手头就SoapUI资源,而且之前也都是用的这块,所以先以SoapUI来阐述,两者其实都差不多,只是少了安全测试的扫描功能而已
网上下载好SoapUI后,双击打开
打开File/-Preferences-Proxy Settings设置burp代理
新建SOAP项目,填入WSDL地址完成解析后会显示如下图左边所有的Web Service服务和方法,其中可以单个填入参数值发送对应的请求报文并获取结果回显到界面中:
其中“?”部分便是我们可直接用来操作的参数值,等同于我们平时做渗透测试的“param=test”,只不过这里是XML格式。测试方式就等同于平时的渗透测试了
同样的burp也能收到该请求包
测试操作在SoapUI界面和Burp均可。
当然Burpsuit其实自身也是具备有该接口的测试插件的
BurpSuite插件之Wslder
Wslder是BurpSuite,其在Extender的BApp Store中可以直接下载安装。虽然比前面的方法简便,但是有时候生成的请求会存在问题导致无法成功发包,此时就需要用到前面的方法了。
首先burp商店下载后
访问wsdl接口地址
使用该插件转换就可以在该插件下看到对应的服务接口的各接口xml文档了
剩下的就针对该接口文档内进行测试了
Web Service漏洞案例
SOAP型Web Service漏洞和Web漏洞并没有区别,只是请求的payload构造需要满足一些格式要求而已,具体还是要看Web Service服务端代码是怎么写的。比如命令注入、SQL注入、XSS、XXE、XPath注入、DoS、逻辑漏洞、信息泄露…等等。
这里以DVWS靶场为例演示几个SOAP类型Web Service请求的漏洞利用。例如说XSS
换SOAP请求攻击时,注意点就是在SOAP中XSS payload的尖括号要进行HTML编码,不然会造成SOAP标签解析错误从而报错:
XXE
回显型XXE,注意exp的XML内容要写在SOAP的前面才能正常解析利用:
任意用户枚举
就是常规的API逻辑漏洞而已,利用响应结果二元组来推断:
小结
其实接口测试与常规的渗透测试并没有什么太大差别,核心区别就在于我们日常对web进行渗透测试的时候,调用的服务接口是封装好的,我们只需要填写对应传输的参数到服务器就能自动填充解析,但是接口的就不一样,webservice为xml格式,就需要我们自行去构造相关的表单去请求,往往这块的测试一般测试人员也都会疏忽,特别是接口fuzz测试往往都能获得不错的收获。
安恒信息
✦
杭州亚运会网络安全服务官方合作伙伴
成都大运会网络信息安全类官方赞助商
武汉军运会、北京一带一路峰会
青岛上合峰会、上海进博会
厦门金砖峰会、G20杭州峰会
支撑单位北京奥运会等近百场国家级
重大活动网络安保支撑单位
END
长按识别二维码关注我们