Всех приветствую, читатели Хабра!
Пятая часть анализа защищенности, правда в этот раз системы (серверной) Vulnhub. Да в этот раз, я поднял целую ОС на virtualbox, а не докер контейнер, соответственно в этой статье совершенно иной метод виртуализации, и соответственно способ атаки. Соответственно в этой части я расскажу где скачать данную ОС, как ее запустить, как атаковать, и как получить доступ. Однако как и предыдущие примеры, эта система так же относится к Vulnhub. И да, сразу скажу, что при атаке я опирался на статьи, написанные в зарубежных сегментах интернета (на английском языке), и здесь я делюсь своим опытом.
Вот ссылки на первые четыре части уязвимых веб-приложений, советую ознакомиться:
https://habr.com/ru/articles/894508/
https://habr.com/ru/articles/895092/
https://habr.com/ru/articles/895856/
https://habr.com/ru/articles/897296/
Примечание
Правовая информация:
Данная статья создана исключительно в ознакомительных/образовательных/развивающих целях.
Автор статьи не несет ответственности за ваши действия.
Автор статьи ни к чему не призывает, более того напоминаю о существовании некоторых статей в уголовном кодексе РФ, их никто не отменял:
УК РФ Статья 272. Неправомерный доступ к компьютерной информации
УК РФ Статья 273. Создание, использование и распространение вредоносных компьютерных программ
УК РФ Статья 274. Нарушение правил эксплуатации средств хранения, обработки или передачи компьютерной информации и информационно-телекоммуникационных сетей
Все атаки я проводил на локальный сервер, внутри моего сетевого интерфейса, на моем компьютере, то есть все действия легитимны.
И как всегда просьба не переходить на личности в комментариях, если вы обнаружили ошибку недочет или неточность, просто без оскорблений напишите комментарий или напишите мне личным сообщением.
Алгоритм атаки будет следующий:
Скачивание образа виртуальной машины, запуск и настройка образа. Поиск системы внутри сетевого интерфейса
Сканирование цели
Энумерация
Эксплуатация уязвимости
4.1 Брутфорс сетевых служб
4.2 Инъекция
Получение доступа к системе
Итак приступим к практике
1) Скачивание образа виртуальной машины, запуск и настройка образа. Поиск системы внутри сетевого интерфейса
Скачать образ можно здесь https://www.vulnhub.com/entry/skytower-1,96/. На этой же страничке есть варианты прохождения. Сразу скажу что именно отсюда я и брал часть информации.
После того как архив скачан, его необходимо разархивировать. В папке, которая вышла из архива должен лежать файл SkyTower.vbox

К моменту когда я нашел файл у меня уже был установлен virtualbox. Если он не установлен то установить его не сложно. В Debian-подобных дистрибутивах это делается командами:
sudo apt update
sudo apt install virtualbox
Далее по файлу SkyTower.vbox достаточно щелкнуть два раза мышкой. В открывшемся окне виртуалки необходимо зайти в настройки системы (Settings)

А далее очень важный момент. Необходимо, чтобы атакующая ОС находилась в одном сетевом интерфейсе с атакуемой. Мой компьютер был скоммутирован через wi-fi, соответственно интерфейс на wlan0, а значит и у атакуемой ОС в сетевых настройках должен быть сетевой бридж (мост) wlan0.

Теперь узнаем ip цели.
Для этого сканируем диапазон адресов 192.168.167.??? nmap:
nmap 192.168.167.0-255
Таким образом я понял что моя цель находится по адресу 192.168.167.4
2) Сканирование цели
Сканируем цель, определяем открытые порты/сокеты и службы
nmap 192.168.167.4
Сразу же бросается в глаза 22/tcp порт со службой ssh. Правда данный порт отфильтрован. Также видно открытые порты 80 и 3128.

Зайдем в браузер по адресу 192.168.167.4

Веб-интерфейс с полями для авторизации.
Теперь сделаем сканирование еще одним сканером - nikto
nikto -h 192.168.167.4

И сразу видно очень интересную деталь - сканер определил, что цель имеет уязвимость CVE-2003-1418. Гуглим и на первой же страничке в поиске видим

На этом этапе уже обнаружена некоторая уязвимость. Хоть она и не эксплуатировалась, это уже победа.
3) Энумерация
Проведем энумерацию цели. В прошлых частях я писал о том что это такое, но сейчас повторюсь, энумерация - процесс перебора всех возможный файлов и папок (директорий), которые торчат "наружу" (в сеть), на целевом хосте (узле). Своего рода это брутфорс-атака, только по поиску (перебору) всех возможных файлов и мест в веб-приложении.
Приступаем. Введем две команды по очереди:
dirsearch -u 192.168.167.4
dirb 192.168.167.4


Особых результатов энумерация и не дала, но не стоит пренебрегать ею, так как с ее помощью возможно обнаружить очень интересные места внутри веб-приложения (атакуемой ОС). Видно что отсутствует папка /cgi-bin/ - код 403, имеются файлы index, index.html, background, login.php.
4) Эксплуатация уязвимости
Брутфорс
Теперь приступим непосредственно к атаке на цель. И первое что я пробовал - брутфорс (есть же порт ssh). А пробовал я с помощью ncrack и hydra (в этой статье я детально описал примеры использования https://habr.com/ru/articles/850188/):
ncrack -u user -P /usr/share/wordlists/rockyou.txt 192.168.167.4:22 -v
ncrack -u root -P /usr/share/wordlists/rockyou.txt 192.168.167.4:22 -v
hydra -l user -P /usr/share/wordlists/rockyou.txt ssh://192.168.167.4:22
Но брутфорс результатов не дал. Хотя это также хорошая практика для пентеста (так сказать "набить руку")


На этом этапе я пробовал другой способ
Инъекция
Вообще инъекция это настолько широкое понятие, что в данной статье я не буду его затрагивать, а лишь покажу пример. Инъекция - выполнение кода через веб приложение. В одной из предыдущих статей (https://habr.com/ru/articles/897296/) я рассмотрел пример XSS уязвимости, которая дает возможность выполнения кода javascript внутри веб-приложения.
В нынешнем примере я использовал sql-injection (изрядно покопавшись в сети).
На странице авторизации в поле ввода логина я ввел
' oorr 1 > 0 #

После чего нажав enter получил доступ к авторизованной странице

Отлично. Но на странице авторизации более ничего нет. Как использовать полученные данные?
5) Получение доступа к системе
Естественно сразу же я вспомнил про отфильтрованный порт 22 и естественно попытался войти удаленно в систему:
ssh john@192.168.167.4
Само собой ничего не вышло, так как порт отфильтрован. Покопавшись в различных источниках я понял что возможно создать сеанс по отфильтрованному ssh с помощью программы proxytunnel.
После чего создаем сеанс:
proxytunnel -p 192.168.167.4:3128 -d 127.0.0.1:22 -a 222

Сеанс запущен
Теперь все что осталось сделать - попытаться получить удаленный доступ к системе имея на руках учетные данные взломанного веб-приложения (инъекция).
Вводим в другой вкладке терминала:
sudo ssh john@127.0.0.1 -p 222
Подключение происходит, но сессия автоматически сразу обрывается, так как администраторы отредактировали файл .bashrc этого пользователя, чтобы завершить сеанс при подключении. Теперь все что необходимо - получить доступ к оболочке шелла (командной строки, терминала, консоли, кому как угодно). Ввел следующую команду:
sudo ssh john@127.0.0.1 -p 222 -t "/bin/sh"
И все получилось!

Получен доступ. Как видно из скриншота первое что я сделал, определил директорию pwd - директория /home/john. Директория оказалась пустой. Далее перешел в директорию /home - cd /home, посмотрел содержимое директории - ls. В директории кроме john есть каталоги sara и william. После чего я естественно захотел просмотреть файл /etc/passwd, введя команду
cat /etc/passwd
На скриншоте выше видно содержимое файла. В предыдущих статьях я уже неоднократно писал что доступ к файлу - уязвимость, причем серьезная (правда в данном случае я вообще получил доступ ко всей системе, а не только к этому файлу, со всеми вытекающими).
Сразу же получаю id пользователя введя команду
id

Очевидно, что раз в веб-приложении есть уязвимости sql, отсюда следует, что возможно получить с этого что то и в самой системе. Кое какая информация содержится в файле /var/www/login.php. В данном случае можно получить доступ к базе данных mysql.
Введя следующие три команды по очереди мы входим в клиент (естественно терминала) mysql, используем базу данных SkyTech и получаем доступ к паролям пользователей, так как они хранятся в незашифрованном виде.
mysql -uroot -proot
use SkyTech
show tables

Таким образом, я не только обнаружил уязвимость в веб-приложении, но и проэксплуатировал ее, получив сначала доступ к системе одного пользователя, а затем и учетные данные других пользователей
А на этом у меня сегодня все, уважаемые читатели Хабра, до новых встреч!