SOAP注入和XPath注入
| 分类: SQL注入 |
SOAP是一种使用XML格式封装数据、基于消息的通信技术。它主要用于在Web服务中,通过浏览器访问的Web应用程序常使用SOAP在后端应用程序组件进行通信。
http://s2/mw690/002n7U63zy77HfFXxf341&690
消息中的XML元素与HTML请求中的参数对应,以及应用程序如何添加ClearedFunds元素。这时,应用程序逻辑确定账户中没有足够的资金可以进行转账,并将这个元素(ClearedFunds)值设置为False,因此收到SOAP消息的组件将拒绝转账。
消息中的XML元素与HTML请求中的参数对应,以及应用程序如何添加ClearedFunds元素。这时,应用程序逻辑确定账户中没有足够的资金可以进行转账,并将这个元素(ClearedFunds)值设置为False,因此收到SOAP消息的组件将拒绝转账。
此时,攻击者可以通过各种方法注入SOAP消息,从而破坏应用程序的逻辑。如,提交下面的请求将会在最初的元素之前插入另一个ClearedFunds元素
XPath注入
XPath(XML路径语言)是一种用于导航XML文档并从中获取数据的解释型语言。很多时候,一个XPath表达式代表由一个文档节点导航到另一个文档节点所需的一系列步骤。
如果Web应用程序将数据保存在XML文档中,则它们可能使用XPath访问数据,以响应用户提交的输入。
//address/email/text()
一个返回Dawes的全部用户资料的查询为:
//address[surname/text()='Dawes']
破坏应用程序逻辑
例子:根据用户名 和密码获取用户的信用卡号码:
//address[surname/text()='Dawes' and
password/text()='secret']/ccard/text()
与利用SQL注入漏洞一样,这时攻击者可以破坏应用程序的查询。例如,提交密码值 'or 'a'='a
将导致XPath查询,获取所有用户的信用卡信息:
//address[surname/text()='Dawes' and
password/text()='' or 'a'='a']/ccard/text()
与SQL查询不同,XPath查询中的关键字区分大小写,XML文档中的元素名也区分大小写
盲目XPath注入
以上攻击中,注入的测试条件指定了被提取数据的绝对路径(address)以及目标字段的名称。若不了解这些信息
,攻击者仍有可能发动完全盲目的攻击。
XPath从当前节点可以导航到父节点或一个特定的子节点。例如,使用子字符串技巧,提交如下
格式的密码,提取当前节点的父节点的名称:
' or substring(name(parent::*[position()=1]),1,1)='a
若有结果返回,则说明节点的第一个字母为'a',则继续测试第二个字母:
//address[postion()=3]/child:node()[position()=4]/text()
前一篇:SQL语法与错误参考
后一篇:ctf上传漏洞

加载中…