WSDL测试webservice接口指南

  • Post author:
  • Post category:其他




WSDL测试webservice接口指南

原创 Angus [雷神众测](javascript:void(0)😉

2022-07-08 15:00


发表于浙江

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pViLCqaU-1657456477341)(https://mmbiz.qpic.cn/mmbiz_svg/ofvnGicEPbfRLqgKGNJyxz2QJ70M4rb5eRAz3nQ7KZea7k7ZRLq4TJatUCqX8IuPss3ddib8JtcrBVOmMRvZ6icLOzu1SG3YGTT/640?wx_fmt=svg&wxfrom=5&wx_lazy=1&wx_co=1)]


STATEMENT


声明

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测及文章作者不为此承担任何责任。

雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MFGhPusf-1657456477341)(https://mmbiz.qpic.cn/mmbiz_svg/ofvnGicEPbfRLqgKGNJyxz2QJ70M4rb5eRAz3nQ7KZea7k7ZRLq4TJatUCqX8IuPss3ddib8JtcrBVOmMRvZ6icLOzu1SG3YGTT/640?wx_fmt=svg&wxfrom=5&wx_lazy=1&wx_co=1)]

概述

在平时做测试的过程中,多为直接通过图形界面话调用接口进行安全测试,通过构造接口请求的接口测试应该遇到的相对比较,本文也是借鉴最近一次应客户需求进行的接口测试来讲讲接口测试的方法以及所需的便捷性工具。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的数据编码方式。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YkHx5vI9-1657456477342)(https://mmbiz.qpic.cn/mmbiz_svg/ofvnGicEPbfRLqgKGNJyxz2QJ70M4rb5eRAz3nQ7KZea7k7ZRLq4TJatUCqX8IuPss3ddib8JtcrBVOmMRvZ6icLOzu1SG3YGTT/640?wx_fmt=svg&wxfrom=5&wx_lazy=1&wx_co=1)]

工具介绍

针对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后,双击打开

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hXxfctLH-1657456477343)(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==)]

打开File/-Preferences-Proxy Settings设置burp代理

新建SOAP项目,填入WSDL地址完成解析后会显示如下图左边所有的Web Service服务和方法,其中可以单个填入参数值发送对应的请求报文并获取结果回显到界面中:

图片

图片

图片

其中“?”部分便是我们可直接用来操作的参数值,等同于我们平时做渗透测试的“param=test”,只不过这里是XML格式。测试方式就等同于平时的渗透测试了

同样的burp也能收到该请求包

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IbAMgZbV-1657456477349)(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==)]

测试操作在SoapUI界面和Burp均可。

当然Burpsuit其实自身也是具备有该接口的测试插件的


BurpSuite插件之Wslder

Wslder是BurpSuite,其在Extender的BApp Store中可以直接下载安装。虽然比前面的方法简便,但是有时候生成的请求会存在问题导致无法成功发包,此时就需要用到前面的方法了。

首先burp商店下载后

图片

访问wsdl接口地址

图片

使用该插件转换就可以在该插件下看到对应的服务接口的各接口xml文档了

图片

剩下的就针对该接口文档内进行测试了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-30lBpkD0-1657456477354)(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==)]

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逻辑漏洞而已,利用响应结果二元组来推断:

图片

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1Gajff0P-1657456477359)(https://mmbiz.qpic.cn/mmbiz_svg/ofvnGicEPbfRLqgKGNJyxz2QJ70M4rb5eRAz3nQ7KZea7k7ZRLq4TJatUCqX8IuPss3ddib8JtcrBVOmMRvZ6icLOzu1SG3YGTT/640?wx_fmt=svg&wxfrom=5&wx_lazy=1&wx_co=1)]

小结

其实接口测试与常规的渗透测试并没有什么太大差别,核心区别就在于我们日常对web进行渗透测试的时候,调用的服务接口是封装好的,我们只需要填写对应传输的参数到服务器就能自动填充解析,但是接口的就不一样,webservice为xml格式,就需要我们自行去构造相关的表单去请求,往往这块的测试一般测试人员也都会疏忽,特别是接口fuzz测试往往都能获得不错的收获。