美文网首页
[转载]CRLF Injection漏洞的利用与实例分析

[转载]CRLF Injection漏洞的利用与实例分析

作者: 蓝眼_cb38 | 来源:发表于2017-04-10 11:32 被阅读0次

0x00 背景
CRLFInjection很少遇见,这次被我逮住了。我看zone中(http://zone.wooyun.org/content/13323)还有一些同学对于这个漏洞不甚了解,甚至分不清它与CSRF,我详细说一下吧。

CRLF是”回车+换行”(\r\n)的简称。在HTTP协议中,HTTPHeader与HTTPBody是用两个CRLF分隔的,浏览器就是根据这两个CRLF来取出HTTP内容并显示出来。所以,一旦我们能够控制HTTP消息头中的字符,注入一些恶意的换行,这样我们就能注入一些会话Cookie或者HTML代码,所以CRLFInjection又叫HTTPResponseSplitting,简称HRS。

HRS是比XSS危害更大的安全问题,具体是为什么,我们往下看。

对于HRS最简单的利用方式是注入两个\r\n,之后在写入XSS代码,来构造一个xss。

0x01 实例
举个例子,一般网站会在HTTP头中用Location:http://baidu.com这种方式来进行302跳转,所以我们能控制的内容就是Location:后面的XXX某个网址。

所以一个正常的302跳转包是这样:

HTTP/1.1 302 
Moved Temporarily Date: Fri, 27 Jun 2014 17:52:17 GMT 
Content- Type: text/html
Content-Length: 154 
Connection: close
Location:http://www.sina.com.cn

但如果我们输入的是

http://www.sina.com.cn%0aSet-cookie:JSPSESSID%3Dwooyun
注入了一个换行,此时的返回包就会变成这样:

HTTP/1.1 302 Moved Temporarily Date: Fri, 27 Jun 2014 17:52:17 GMT
Content-Type: text/html 
Content-Length: 154 
Connection: close 
Location: http://www.sina.com.cn Set-cookie: JSPSESSID=wooyun

这个时候这样我们就给访问者设置了一个SESSION,造成一个“会话固定漏洞”。

当然,HRS并不仅限于会话固定,通过注入两个CRLF就能造成一个无视浏览器Filter的反射型XSS。

比如一个网站接受url参数http://test.sina.com.cn/?url=xxx,xxx放在Location后面作为一个跳转。如果我们输入的是

http://test.sina.com.cn/?url=%0d%0a%0d%0a<imgsrc=1onerror=alert(/xss/)>
我们的返回包就会变成这样:

HTTP/1.1 302 Moved Temporarily Date: Fri, 27 Jun 2014 17:52:17 GMT Content-Type: text/html Content-Length: 154 Connection: close Location: <img src=1 onerror=alert(/xss/)>
之前说了浏览器会根据第一个CRLF把HTTP包分成头和体,然后将体显示出来。于是我们这里这个标签就会显示出来,造成一个XSS。

为什么说是无视浏览器filter的,这里涉及到另一个问题。

浏览器的Filter是浏览器应对一些反射型XSS做的保护策略,当url中含有XSS相关特征的时候就会过滤掉不显示在页面中,所以不能触发XSS。

怎样才能关掉filter?一般来说用户这边是不行的,只有数据包中http头含有X-XSS-Protection并且值为0的时候,浏览器才不会开启filter。

说到这里应该就很清楚了,HRS不正是注入HTTP头的一个漏洞吗,我们可以将X-XSS-Protection:0注入到数据包中,再用两个CRLF来注入XSS代码,这样就成功地绕过了浏览器filter,并且执行我们的反射型XSS。

所以说HRS的危害大于XSS,因为它能绕过一般XSS所绕不过的filter,并能产生会话固定漏洞。

我们来一个真实案例吧。 新浪某分站含有一个url跳转漏洞,危害并不大,于是我就想到了CRLFInjection,当我测试

http://xxx.sina.com.cn/?url=%0a%0d%0a%0d%3Cimg%20src=1%3E
的时候,发现图片已经输出在页面中了,说明CRLF注入成功了:

Paste_Image.png

那么我们试试XSS看看:

Paste_Image.png

@mramydnei还想到了一个利用字符编码来绕过XSSFilter的方法,当编码是is-2022-kr时浏览器会忽略%0f,这样我们在onerror后面加个%0f就能绕过filter,前提是注入一个

<metacharset=ISO-2022-KR>

Paste_Image.png

当然,在Location:这里注入只有webkit内核浏览器才能够利用,其他浏览器可能会跳转、出错。不过对于chrome的使用量来说,危害已经足够了。

0x02 修复
如何修复HRS漏洞,当然是过滤\r、\n之类的换行符,避免输入的数据污染到其他HTTP头。

原文地址:http://www.codesec.net/view/50272.html

相关文章

  • [转载]CRLF Injection漏洞的利用与实例分析

    0x00 背景CRLFInjection很少遇见,这次被我逮住了。我看zone中(http://zone.wooy...

  • DVWA之SQL Injection--手工测试详细解析(Low

    目录结构 一、测试需求分析 测试对象:DVWA漏洞系统--SQL Injection模块--User ID提交功能...

  • 03.(2)XSS利用与防御

    一.漏洞的利用 1.GET型XSS的利用 (1).渗透分析 A. 流程分析 B. 基本环境 存在漏洞页面 http...

  • SSRF漏洞分析与利用

    这段时间一直划水来着,突然看到SSRF漏洞,觉得新奇,我只知道csrf,SSRF是什么东西,还能穿透防火墙、主机信...

  • Insomni'hack 2017 wheelofrobots

    题目分析 详情见ctf-wiki,下图为符号表 利用思路 利用 off by one 漏洞与 fastbin at...

  • CTF初识

    ctf分类 安全加固,系统运维,漏洞修补 网络流量,日志分析, 漏洞利用,补丁开发,组织攻防 漏洞利用,攻防实施 ...

  • 【代码审计】-基础知识

    0x01:漏洞的利用效果取决于最终函数的功能 找漏洞==找对应变量与函数:变量跟踪的过程 0x02:分析漏洞形成的...

  • SQL注入原理

    SQL注入漏洞(SQL injection) 是Web层面最高危的漏洞之一。 在2005年前后,SQL漏洞随处可见...

  • 用友NC6.5文件读取漏洞分析

    漏洞触发点 漏洞利用 直接访问上面的payload即可读取文件 漏洞分析 该漏洞servlet位于FindWebR...

  • linux内核漏洞挖掘与利用

    说明 该系列文章主要是从ctf比赛入手,针对linux内核上的漏洞分析、挖掘与利用做讲解,本篇文章主要介绍内核漏洞...

网友评论

      本文标题:[转载]CRLF Injection漏洞的利用与实例分析

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