CRLF注入漏洞(响应截断)攻击实战

文章目录

  • 前言
  • 一、漏洞概述
  • 二、漏洞利用
  • 修复方法


前言

OMG,忙得头皮发麻,这两天渗透任务有点多,所以都忘了记录博客,正好昨天挖到一个CRLF漏洞,是一个很少见的漏洞,但是危害性挺有意思,所以写来记录一下。(这几天绕安恒WAF,刚开始觉得有希望,淦了两天,今天放弃了……)


一、漏洞概述

CRLF是CR和LF两个字符的拼接,它们分别代表”回车+换行”(\r\n)“,全称为Carriage Return/Line Feed”,十六进制编码分别为0x0d和0x0a,URL编码为%0D和%0A。CR和LF组合在一起即CRLF命令,它表示键盘上的"Enter"键,许多应用程序和网络协议使用这些命令作为分隔符。

而在HTTP协议中,HTTP header之间是由一个CRLF字符序列分隔开的,HTTP Header与Body是用两个CRLF分隔的,浏览器根据这两个CRLF来取出HTTP内容并显示出来。

所以如果用户的输入在HTTP返回包的Header处回显,便可以通过CRLF来提前结束响应头,在响应内容处注入攻击脚本。因此CRLF Injection又叫HTTP响应拆分/截断(HTTP Response Splitting)简称HRS。

二、漏洞利用

任务目标那么多,随机抽一个幸运儿:
CRLF注入漏洞(响应截断)攻击实战_第1张图片
打开网站,随机找功能点,随便点了一下,点到一个网页,挺有意思,是个类似校报的界面:
CRLF注入漏洞(响应截断)攻击实战_第2张图片

1、在url上添加参数d,然后打个payload进去:

https://ip/xxx/xxx?c=xxx&d=%c4%8d%c4%8aHello666: Me_Too

BurpSuite抓包:
CRLF注入漏洞(响应截断)攻击实战_第3张图片
从上图可以看出,我们用Get请求发的请求包,加了一个d参数,参数的内容居然能在响应包中回显,这就有意思了,说明响应包我们是可以随机控制了。

比如说,可以自己给自己设cookie,搞个会话固定:

https://ip/xxx/xxx?c=xxx&d=%c4%8d%c4%8aHello666: Me_Too%c4%8d%c4%8aSet-Cookie:xxx

Tips:这里的%c4%8d%c4%8a就是换行回车的意思,类似于%0d%0a,是URL编码。

看下图就能看出效果,自己加的cookie已经成功出现在响应包里.
CRLF注入漏洞(响应截断)攻击实战_第4张图片
除了这些之外,CRLF还可以造成XSS攻击和构造一个双重响应的响应包,但是很遗憾…… 这个站加装了个安恒的WAF,我绕了半天绕不去,只能放弃了。

CRLF注入漏洞(响应截断)攻击实战_第5张图片
但是,如何用CRLF打XSS的方法还是需要了解,正常来说,先关掉XSS-protection,0就是关,1就是开。因为CRLF是可以修改响应包的,所以只要添加一个X-XSS-Protection就行。
CRLF注入漏洞(响应截断)攻击实战_第6张图片
后面的内容,我就用网上的截图来记录吧,因为大致思路都是一样的:

XSS:
当我们输入的是:

%0d%0a%0d%0a<img src=1 onerror=alert(/xss/)>

则返回包会变为:

HTTP/1.1 200 OK

Date:Fri,26Jun 2018 17:00:05 GMT

Content-type:text/html

Contet-Length:155

Connection:close

Location:

<img src=1 onerror=alert(/xss/)>

浏览器会根据CRLF将http包分为header和body,然后将body中的内容执行,从而达到XSS。如果遇到XSS过滤的情况我们还可以在httpheader中注入X-XSS-Protection:0,可绕过浏览器的过滤规则实现XSS弹窗显示。
但因为这里有WAF,所以演示不了,等以后找到了个没有加防护的站之后,再做补充。o(╥﹏╥)o

而双重响应的例子就看下面这个图吧,道理都一样,只要自己加一个响应状态就可以。
CRLF注入漏洞(响应截断)攻击实战_第7张图片

挖掘技巧:从输入和输出入手,只要请求url后面加自定义参数,再跟payload中的值,再从响应包中检索是否存在,如果有说明存在漏洞,没有则无。打算自己写个脚本,今晚有空可以写写。


修复方法

1、最简单的方法,装WAF……
2、对用户的数据进行合法性校验,对特殊的字符进行编码,如<、>、’、”、CR、LF等,限制用户输入的CR和LF,或者对CR和LF字符正确编码后再输出,以防止注入自定义HTTP头。 创建安全字符白名单,只接受白名单中的字符出现在HTTP响应头文件中。在将数据传送到http响应头之前,删除所有的换行符。

因为授权渗透,资料都是商业机密,所以图片打码比较严重,怕被客户看到,千里之外来打我。

    文章原创,欢迎转载,请注明文章出处: CRLF注入漏洞(响应截断)的各种玩法.。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。

你可能感兴趣的:(漏洞复现,安全,web安全,渗透测试,安全漏洞,网络安全)