加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

SOAP注入和XPath注入

(2017-01-03 15:45:26)
分类: SQL注入
SOAP是一种使用XML格式封装数据、基于消息的通信技术。它主要用于在Web服务中,通过浏览器访问的Web应用程序常使用SOAP在后端应用程序组件进行通信。
http://s2/mw690/002n7U63zy77HfFXxf341&690
消息中的XML元素与HTML请求中的参数对应,以及应用程序如何添加ClearedFunds元素。这时,应用程序逻辑确定账户中没有足够的资金可以进行转账,并将这个元素(ClearedFunds)值设置为False,因此收到SOAP消息的组件将拒绝转账。
此时,攻击者可以通过各种方法注入SOAP消息,从而破坏应用程序的逻辑。如,提交下面的请求将会在最初的元素之前插入另一个ClearedFunds元素
XPath注入
XPath(XML路径语言)是一种用于导航XML文档并从中获取数据的解释型语言。很多时候,一个XPath表达式代表由一个文档节点导航到另一个文档节点所需的一系列步骤。
如果Web应用程序将数据保存在XML文档中,则它们可能使用XPath访问数据,以响应用户提交的输入。
http://s4/mw690/002n7U63zy77HhGla8j43&690
一个获取所有电子邮件地址的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',则继续测试第二个字母:
http://s14/mw690/002n7U63zy77Hj7kMI51d&690
确定address节点的名称后,攻击者就可以轮流攻击它的每个子节点,提取出它们的名称与值。(通过索引)
//address[postion()=3]/child:node()[position()=4]/text()

0

阅读 收藏 喜欢 打印举报/Report
后一篇:ctf上传漏洞
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有