
PoC-эксплойт на Python для CVE-2021-44228 (Log4Shell), автоматизирующий эксплуатацию с помощью специально сформированного Java-payload, с опциями argparse для настройки GET-запросов и доставки reverse shell.
Этот скрипт на Python был создан во время работы над комнатой TryHackMe для Log4j. Хотя он был создан с переменными по умолчанию для этой комнаты, я использовал argparse, чтобы сделать скрипт универсальным для GET-запроса. Все необходимые переменные можно изменить с помощью различных опций, см. -h для получения дополнительной информации.
Здесь размещён только мой скрипт, для его правильной работы потребуются ещё две загрузки, ссылки на которые я укажу, но настройка папок так, как сделал я, позволит запустить скрипт без особых усилий. Сначала создайте папку log4j (или любое другое имя), затем клонируйте этот репозиторий с помощью git, после чего переместите 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.
Меню справки

В скрипт включён полезная нагрузка (payload) из комнаты THM, измените IP/порт на те, которые хотите использовать.

Запустите слушатель netcat, чтобы перехватить оболочку на порту, указанном в java_payload.
Запустите веб-сервер Python на порту 8000
Пример команды:
python3 poc.py -l 10.6.20.239 -i 10.10.64.53 -p 8983
Пример вывода и реверс-шелл:
