知识面决定攻击面!
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 ,就能注入一些首部字段或报文主体,并在响应中输出
最常见的两种情况是使用输入参数 创建 Cookie 和 302 跳转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
当然很多网站都会做过滤,可以尝试以下url多次编码或者十六进制编码绕过一下,绕不过也就没办法了
之前测试某丰网站的时候,有任意 URL 跳转,提交的时候说不收,然后就试了一下有没有 CRLF 注入,结果毛都没有,直接给我过滤了,出现%0d%0a直接给我替换成空,要是后面接了其他字符,他返回包的 Location 都给你删了,太难了,新手到底该怎样挖洞?