CRLF(HTTP响应拆分漏洞)攻击实战

点击"仙网攻城狮”关注我们哦~

不当想研发的渗透人不是好运维

让我们每天进步一点点

简介

CRLF是Carriage-Return Line-Feed的缩写又称为HTTP响应拆分漏洞(HTTP Response Splitting),意思是回车换行,就是回车(CR, ASCII 13, \r) 换行(LF, ASCII 10, \n)。换行在有的ASCII码表也用newline(简nl)来进行表示,这里的lf是line feed的概念,意思是一样的。

危害:

最基本的例子包括向记录文件中增加伪造的记录。也就是说,有安全漏洞的应用程序把一个用户输入的内容写到系统记录文件中。攻击者可以提供如下输入内容:

Testing123MYSQL DATABASE ERROR: TABLE CORRUPTION

当系统管理员在早上查看他的记录时,他可能会用很多时间排除一个根本就不存在的故障。狡猾的攻击者在攻击系统的另一部分时,可以使用这种特洛伊木马分散管理员的注意力。

想像一下,一个应用程序收到用户输入的一个文件名,然后对那个文件执行一个指令,如“ls -a .”。如果这个应用程序存在CRLF安全漏洞,攻击者就可以输入这样的内容:

File.txtrm -rf /

这个有安全漏洞的应用程序就会执行这个命令“ls -a File.txt”,然后再执行这个命令“rm -rf /”。如果这个应用程序是一个根程序,这可能就是它执行的最后一个命令,因为在根分区的全部文件都被删除了。

扩展知识:
CRLF 指的是回车符(CR,ASCII 13,\r,%0d) 和换行符(LF,ASCII 10,\n,%0a)。
CRLF的概念源自打字机,表明行的结束,计算机出现后沿用了这个概念。
回车符:光标移到行首,
换行符:光标垂直移到下行。
键盘上的回车键(Enter)就可以执行该操作。但是不同的操作系统,行的结束符是不一样的。
Windows:使用CRLF表示行的结束
Linux/Unix:使用LF表示行的结束
MacOS:早期使用CR表示,现在好像也用LF表示行的结束
所以同一文件在不同操作系统中打开,内容格式可能会出现差异,这是行结束符不一致导致的。
在HTTP规范中,行应该使用CRLF来结束。首部与主体由两个CRLF分隔,浏览器根据这两个CRLF来获取HTTP内容并显示。

实战

实战

CRLF注入漏洞的本质和XSS有点相似,攻击者将恶意数据发送给易受攻击的Web应用程序,Web应用程序将恶意数据输出在HTTP响应头中。(XSS一般输出在主体中)
所以CRLF注入漏洞的检测也和XSS漏洞的检测差不多。通过修改HTTP参数或URL,注入恶意的CRLF,查看构造的恶意数据是否在响应头中输出。

找到输入点,构造恶意的CRLF字符

正常请求

抓包,在请求行的url参数中加入特殊构造的CRLF字符,如下图标记所示。

查看恶意数据是否在响应头中输出

提交,查看服务器端的响应。发现响应首部中多了个Set-Cookie字段。这就证实了该系统存在CRLF注入漏洞

大家可能会觉得这漏洞没什么危害性,但试想一下:利用漏洞,注入一个CRLF控制用户的Cookie,或者注入两个CRLF,控制返回给客户端的主体,该漏洞的危害不亚于XSS,这个漏洞很少见,随着HTTP协议和各种框架的完善这个漏洞可能会消失。

往期内容

Web常见漏洞&逻辑漏洞学习文档分享

年前的最后一篇文章,php反序列化漏洞原理与挖掘

XXE 外部实体注入漏洞

更多资讯长按二维码 关注我们

   专业的信息安全团队,给你最安全的保障。定期推送黑客知识和网络安全知识文章,让各位了解黑客的世界,学习黑客知识,普及安全知识,提高安全意识。

觉得不错点个“赞”呗      

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值