标题 | 简介 | 类型 | 公开时间 | ||||||||||
|
|||||||||||||
|
|||||||||||||
详情 | |||||||||||||
[SAFE-ID: JIWO-2024-3049] 作者: 闲云野鸡 发表于: [2022-03-25] [2022-03-25]被用户:幽灵娃娃 修改过
本文共 [272] 位读者顶过
web service渗透测试一、什么是Web Service
[出自:jiwo.org]
二、Web Service基础
三、Web Service分类
2、SOAP结构 必需的 Envelope 元素,可把此 XML 文档标识为一条 SOAP 消息 可选的 Header 元素,包含头部信息 必需的 Body 元素,包含所有的调用和响应信息 可选的 Fault 元素,提供有关在处理此消息所发生错误的信息
四、Web Service技术支持
1、XML 可扩展的标记语言(标准通用标记语言下的一个子集)是Web service平台中表示数据的基本格式。
2、XSD数据类型 Web service平台就是用XSD来作为其数据类型系统的。当你用某种语言(如VB. NET或C#)来构造一个Web service时,为了符合Web service标准,所有你使用的数据类型都必须被转换为XSD类型。
3、WSDL WSDL(Web Services Description Language,网络服务描述语言)给出了SOAP型Web Service的基本定义,WSDL基于XML语言,描述了与服务交互的基本元素,说明服务端接口、方法、参数和返回值,WSDL是随服务发布成功,自动生成,无需编写。少数情况下,WSDL也可以用来描述REST型Web Service。SOAP也是基于XML(标准通用标记语言下的一个子集)和XSD的,XML是SOAP的数据编码方式。
4、文档结构
5、阅读方法 先看service标签,看相应port的binding属性,然后通过值查找上面的binding标签。 通过binding标签可以获得具体协议等信息,然后查看binding的type属性 通过binding的type属性,查找对应的portType,可以获得可操作的方法和参数、返回值等。 通过portType下的operation标签的message属性,可以向上查找message获取具体的数据参数 叁数解析 Service:相关端口的集合,包括其关联的接口、操作、消息等。 Binding:特定端口类型的具体协议和数据格式规范 portType: 服务端点,描述 web service可被执行的操作方法,以及相关的消息,通过bindin message: 定义一个操作(方法)的数据参数 types: 定义 web service 使用的全部数据类型 WSDL文档是从下往上阅读。
五、如何发现Web Service
1、使用burp等等代理软件,检查所捕获的数据。 使用burp等等代理软件,检查所捕获的数据。 在BurpSuite中设定的过滤规则,用来筛选抓包数据中的Web Service地址。可以通过搜索与表达式相匹配的数据,探测诸如“.dll?wsdl”、“.ashx?wsdl”、“.exe?wsdl”或者“.php?wsdl”等等的Web Service地址。 2、使用Google语法。 inurl:(_vti_bin | api | webservice | ws ) 3、通过搜索引擎探测Web应用程序暴露的接口(比如目录遍历漏洞、lfi(本地文件包含)等)。 4、爬取并解压swf、jar等类似文件。 5、模糊测试。
六、Web Service渗透测试
Web Service的漏洞分类可以分为2种: 1、Web 应用安全漏洞: sql注入 xss攻击 命令执行 越权 LDAP注入 缓冲区溢出 逻辑漏洞 等等
2、XML 相关的特殊安全漏洞:
1、sql注入 Web Service中的SQL注入(SQLi)漏洞与普通Web渗透测试中漏洞并无区别
2、XPath注入 XPath 作为用来查询 XML 数据的语言,同样容易存在很多注入漏洞。某种程度来说,XPath 注入比 SQL 注入更简单,因为不同数据库产品的 SQL 语句有不同的语法,而XPath 只有一个标准。我们假定某 Web 服务后台采用了这段代码来查询某 XML 数据文件中的记录。
存在注入漏洞的 XPath 查询 Stmt = "//users/user[username/text()='" + username+ "' and password/text()='" 其中 username 和 password 是通过 SOAP 消息进行传输,如下文: 传递 XPath 查询参数的 SOAP 消息片段
testuser testpassword
假如黑客利用 SOAP 传入 username="admin", password="' or '1'='1",以上 XPath 查询就变为: 遭注入的 XPath 查询1Stmt="//users/user[username/text()='admin' and password/te 这样我们可以访问到 admin 用户信息。
3、拒绝服务攻击
由于 Web 服务基于 XML 格式的协议进行通信(例如 SOAP 消息)。当 SOAP 消息到达Web 服务器段时,服务器端会调用 XML Parser 解析 XML 数据(包括 DTD 声明),黑客可以利用大量的超大消息体或者递归的 XML 实体声明,让服务器端长时间解析 XML 数据,直至服务器资源耗竭,从而形成拒绝访问攻击,导致 Web 服务停止服务。
|