zoukankan      html  css  js  c++  java
  • XPath注入与CRLF注入

    知识面决定攻击面!

    XPath注入

    参考文章
    XPath注入详解

    前提:了解XPath语法,可以在这里——W3C 学习 XPath 语法

    概念:XPath注入攻击,是指利用XPath 解析器的松散输入和容错特性,能够在 URL、表单或其它信息上附带恶意的XPath 查询代码,以获得权限信息的访问权并更改这些信息。XPath注入攻击是针对Web服务应用新的攻击方法,它允许攻击者在事先不知道XPath查询相关知 识的情况下,通过XPath查询得到一个XML文档的完整内容。Xpath注入攻击本质上和SQL注入攻击是类似的,都是输入一些恶意的查询等代码字符串,从而对网站进行攻击。

    示例

    //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]
    
    有回显的注入:
    $xpath = "//users/user[username/text()='".$_POST["username"]."' and password/text()='".$_POST["password"]."']";
    当构造
    Username: ' or '1' = '1
    Password: ' or '1' = '1
    
    那么整个 XPath 查询语句就变成了这个样子
    $xpath = "//users/user[username/text()='' or '1' = '1' and password/text()='' or '1' = '1']";
    类似于SQL注入
    
    盲注:
    Username:1' or substring(username(/*[position()=1]),1,1)='r' or '1'='1
    

    CRLF注入

    参考文章
    CRLF注入
    CRLF注入(响应截断)挖掘技巧及实战案例全汇总

    前提:CRLF指的是CR回车LF换行。CR、LF的URL编码分别为:%0d、%0a

    在HTTP规范中,行应该使用CRLF来结束。首部与主体由两个CRLF分隔,浏览器根据这两个CRLF来获取HTTP内容并显示。
    就比如下面访问百度的返回包:

    由此可见,浏览器处理返回包的时候,区分响应头数据部分的标识就是响应包中第一个空行(两个CRLF)出现的位置
    因此,当服务器对客户端传输的数据过滤不严并且会将数据放在返回包里传输给客户端的时候,攻击者一旦向请求行或首部中的字段注入恶意的 CRLF ,就能注入一些首部字段或报文主体,并在响应中输出

    最常见的两种情况是使用输入参数 创建 Cookie302 跳转location 处。
    记得之前有一次在挖洞的时候,Cookie字段中,会存储一个 url=http://xxx.com,但是当时也没接触过 CRLF 注入,所以也就没测

    寻找这一类漏洞,主要观察请求包中那些数据会出现在响应包中
    比如 发起一个 GET 请求: www.xx.com?url=http://aa.com,并且在响应包中会返回一个响应头 Location: http://aa.com,那么就可以进一步测试是否存在 CRLF 注入

    构造:www.xx.com?url=http://aa.com%0d%0aCrlf:Ture
    查看是否响应里会出现:

    Location: http://aa.com
    Crlf:Ture
    

    若存在,则可以用来造成 XSS :www.xx.com?url=http://aa.com%0d%0aX-XSS-Protection:0%0d%0a%0d%0a<svg/onload=alert(!)>

    当然很多网站都会做过滤,可以尝试以下url多次编码或者十六进制编码绕过一下,绕不过也就没办法了
    之前测试某丰网站的时候,有任意 URL 跳转,提交的时候说不收,然后就试了一下有没有 CRLF 注入,结果毛都没有,直接给我过滤了,出现%0d%0a直接给我替换成空,要是后面接了其他字符,他返回包的 Location 都给你删了,太难了,新手到底该怎样挖洞?

  • 相关阅读:
    WebApi 接口参数:传参详解
    WebApi 身份认证解决方案:Basic基础认证
    EF 底层封装方法(供参考)
    接口和抽象类的区别
    EF Code First 连接MySql
    EntityFramework Code-First—领域类配置之DataAnnotations
    驱动基本框架和与ring3通信
    必备理论知识
    通过远程代码注入实现不死进程
    PE文件中插入程序
  • 原文地址:https://www.cnblogs.com/wjrblogs/p/12808552.html
Copyright © 2011-2022 走看看