CRLF注入攻击

2019-05-08  本文已影响0人  TsengYUen

一、概念

回车换行(CRLF)注入攻击,又称HTTP头部返回拆分攻击,是一种当用户将CRLF字符插入到应用中而触发漏洞的攻击技巧。原理是服务器未过滤攻击者输入的数据,而直接放到头部,导致攻击者通过注入\n\r(%0d%0a)能够控制HTTP返回头部。CRLF字符(%0d%0a)在许多互联网协议中表示行的结束,包括HTML,该字符解码后即为\ r\ n。这些字符可以被用来表示换行符,并且当该字符与HTTP协议请求和响应的头部一起联用时就有可能会出现各种各样的漏洞,从而造成XSS注入攻击、Web缓存中毒、会话固定漏洞、302跳转攻击等攻击。。

二、测试案例

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

比如一个网站接受url参数http://xxx.com/?url=xxx,xxx放在Location后面作为一个跳转。

1、会话固定漏洞

如果我们输入的是http://xxx.com%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,造成一个“会话固定漏洞”。

2、反射型XSS

如果我们输入的是:http://xxx.com/?url=%0d%0a%0d%0a<img src=1 onerror=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/)>

三、解决方法

1、不要把用户的输入直接输出。

2、过滤用户输入的\r\n。

3、可以使用urlencode,对输出的文件名做url编码。

参考:http://www.cnblogs.com/studyskill/p/6972576.html

上一篇下一篇

猜你喜欢

热点阅读