webservice暴漏接⼝_BurpSuite测试WebServices接⼝漏洞
⿊⽩⽹()成⽴于2014年,多年来以其专业的视⾓,优质的服务为⼴⼤安全技术爱好者提供了⽬前国内最全的学习资料,普及中国⽹络安全知识,宣扬正确的⿊客极客⽂化,全⽅⾯提⾼国内安全技术⽔平。
Burp Suite
Burp Suite 从这⼀章开始,我们进⼊了Burp的综合使⽤。通过⼀系列的使⽤场景的简单学习,逐渐熟悉Burp在中,如何结合其他的⼯具,组合使⽤,提⾼⼯作效率。本章主要讲述在测试Web Services服务中,如何使⽤Burp Suite和SoapUI NG Pro的组合,对服务接⼝进⾏安全测试。 本章讲述的主要内容有:使⽤场景和渗透测试环境配置
渗透测试过程中组合软件的使⽤
使⽤场景和渗透测试环境配置
在⽇常的web测试过程中,除了基于浏览器展现技术的客户端应⽤程序外,基于SOAP协议进⾏通信的服务也很常见。WebService的出现是为了解决分布式、跨平台、低耦合⽽实现的不同编程语⾔之间采⽤统⼀的数据通信的技术规范,在应⽤程序中,常作为独⽴的业务模块对外提供具体的业务功能或者为前
段提供数据处理的业务接⼝。因SAOP协议中的接⼝定义使⽤XML作为描述性语⾔,这与php、jsp之类的通信交互在渗透测试上还是有很⼤的差异。如果使⽤Burp 对通信消息进⾏拦截抓包,⼀次典型的消息内容如下图所⽰:
其http消息头中包含SOAPAction字段,且消息体为封装的xml⽂本(更多关于WebService的⽂章请阅读者⾃⾏搜索)。正因为WebService 这些特征,所以在渗透测试中我们也需要选择能解析SOAP协议和WSDL描述的软件。这⾥,我们使⽤的是SoapUI NG Pro 和Burp Suite。他们各⾃的作⽤分别是:SoapUI NG Pro: 渗透测试流程的发起,通信报⽂的解析、集合payload之后通信报⽂的重新组装等。
Burp Suite: 代理拦截,跟踪通信过程和结果,对通信进⾏重放和⼆次处理等。
如果按照时序图来展现,他们在通信过程中,各⾃的时序位置如下:
从图中我们可以看出,作为代理服务Burp起着通信中间⼈的作⽤,可以对消息进⾏拦截后的编码、解码、转发、丢弃等各种操作,并记录原始消息。⽽SoapUI NG Pro作为WebService的测试⼯具,通过构造不同类型的payload来测试、验证漏洞的存在。他们组合在⼀起,共同完成复杂场景下WebService服务的渗透测试过程中的安全性验证。
安装完毕后,我们⾸先要做的是将SoapUI NG Pro的代理服务指向Burp Suite。假设我的Burp Proxy设置为127.0.0.1:8080。则SoapUI NG Pro的配置是:点击上图中3部分的Preferences,或者上图中2部分的【File】>>【Preferences】
在弹出的界⾯中打开proxy选项卡,录⼊代理地址和端⼝
完成以上的配置后,我们对WebService的渗透测试环境已经基本具备,可以开始对⼀个具体的WebService服务进⾏渗透测试了。
渗透测试过程中组合软件的使⽤
⼀次简单的渗透测试过程⼤体包含如下环节: 1.⾸先,我们通过SoapUI NG Pro 创建安全测试⽤例。如下图:
2.在弹出的界⾯中,选择通过WSDL创建,接着输⼊WSDL地址。如下图:
3.当SoapUI NG Pro对WSDL解析完成后,会⾃动⽣成⼀系列的安全测试项:
4.我们可以对上图中的安全测试项进⾏增加和删除,默认情况下,这些安全测试项都是选中的。⽐如,如果我们只需要测试是否存在XPath 注⼊,则只要上图中的勾选最下⾯的⼀项即可。 当SoapUI NG Pro根据安全测试项,完成不同的测试⽤例的创建之后,主操作界⾯如下图所⽰:
5.我们可以选择指定的SOAPAction或者某个SOAPAction下的某个安全项进⾏单⼀测试,也可以直接点击run运⾏所有的安全测试项。如果测试项过多的话,此操作执⾏时间会⽐较长,同时,如果并发数过多,会给服务器端造成压⼒,这是测试时候需要注意的。如下图所⽰,图中WebService接⼝正在安全测试中,进度条中显⽰调⽤的SOAPAction名称。
6.如果出现下图的状态,则表⽰测试进程已经执⾏完毕
7.7. 此时,我们可以在Burp的Http history⾯板中查询到刚才发⽣的所有请求消息,通过不同的过滤条件查我们关⼼的请求或响应消息,并发送到Burp的其他⼯具组件进⾏消息重放和处理、验证。
SoapUI NG Pro的安全测试项包括以下内容:边界扫描
SQL注⼊
XPath/XQuery注⼊
模糊测试
⽆效的参数类型
XML格式畸形
XML
跨站脚本
上传附件安全
⾃定义扫描
下⾯就以SQL注⼊为例,我们看看SoapUI NG Pro的安全测试配置参数
对于每⼀个安全测试项,其基本配置主要分三部分: 1.配置项(Configuration)
主要是指协议描述中定义的输⼊参数、编码类型、SOAP协议中的特定参数(namespace、import….)
2.⾃动化测试策略(Straegy)
主要设置测试过程中的请求延时、选择策略、运⾏⽅式等
3.⾼级选项(Advanced)
当我们配置完毕后,运⾏安全测试项时,可以在Burp中查看到发送的payload值,如下图(阴影选中部
分)所⽰的XSS脚本测试的payload:同时,我们根据http状态码,对应答进⾏排序,跟踪可疑的响应消息,获取服务器的敏感信息。如下图获取的服务器Banner信息:
被Burp拦截到的消息记录,我们可以发送到Intruder,使⽤fuzzdb进⾏指定的fuzz测试;也可以发送到Repeater进⾏⼿⼯的消息内容修改和漏洞是否存在性的验证。具体到某个⽅⾯的漏洞,⽐如说Xpath注⼊漏洞,在测试过程中,需要测试⼈员理解Xpath的注⼊原理,理解Xpath的语法,根据服务器端的响应消息,⾃⼰⼿⼯构造特定的payload才能获得更重要的信息。这些都是在平时的⼯作中慢慢积累的,⽽不是光靠⼀款⼯具软件就作为万能的解决⽅案,希望读者能明⽩这个道理。
使⽤Wsdler测试WebService接⼝:
除了前⾯我们说的使⽤SOAPUI NG Pro 测试WebService外,在Burp⾥也有⼀个通过WSDL解析接⼝定义,⼿⼯测试WebService的插件:Wsdler
如果你安装了此插件,则在Burp的 Proxy >> History 中,可以直接使⽤【Parse WSDL】功能。调用webservice服务
确认使⽤【Parse WSDL】解析功能后,此插件⾃动解析出服务的Operation、Binding、Endpoint。当选中某个Operation之后,可以查看SOAP消息⽂本。同时,可以发送到Burp的其他组件进⾏进⼀步操作。
⽐如,我们将上图中的消息发送到Intruder,使⽤字符块(Character blocks)的对参数进⾏边界测试。
发送Intruder后的截图如下:
使⽤的payload为字符串1,从1到50,即1,11,111,1111……直到50个1,来测试参数的边界长度
⽣成payload并执⾏后的结果如下图所⽰:
上⾯仅仅简单地叙述了Wsdler的使⽤,在实际的安全测试中,你可以使⽤Fuzzdb的字典,进⾏更复杂的渗透测试和功能验证。⽆论你使⽤什么样的⼯具,只要能通过⼀系列的⾃动化测试或者⼿⼯测试,完成WebService应⽤程序的安全脆弱性验证,保障应⽤程序的安全性,提供了应⽤程序的安全系统,这就达到我们做渗透测试的⽬的了

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。