Получение флага BYPASS в лаборатории от Pentestit.ru LAB v.9

Alexandr Vishniakov
Hackerstan CTF Team
6 min readNov 24, 2016

--

В этот раз целью пентеста оказалась организация профессионально занимающаяся разработкой программного обеспечения в области информационной безопасности под названием CyBear32c .

Итак, приступим. Первым делом нужно настроить VPN и прописать в /etc/hosts алиас cybear32c.lab для ip 192.168.101.8

После этого можно открыть в браузере и посмотреть на сам сайт.

Сразу бросается в глаза информация о компании и e-mail адреса. Естественно, в первую очередь, нужно собрать информацию о компании, но в лаборатории уже и так предоставляется информация обо всей инфраструктуре.

И все же этой информации недостаточно для того, чтобы понять какие точки входа для проведения пентеста присутствуют на начальном этапе.

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

Из содержимого страницы по путям включения скриптов видно, что это Wordpress (достаточно обратить внимание на специфичное название папки wp-content)!

Конечно же сразу нужно натравить wpscan для того, чтобы понять какие плагины установлены и какие уязвимости присутствуют. Выполняем комадну wpscan --url cybear32c.lab и сразу же натыкаемся на предупреждение:

[!] The target is responding with a 403, this might be due to a WAF or a plugin. You should try to supply a valid user-agent via the — user-agent option or use the — random-agent option

Значит сайт защищается WAF, ну в общем это можно будет проверить отдельно далее! Теперь запустим ту же самую команду, но с опцией генерации рандомного юзер агента, чтобы все выглядело так, как будто это обычный пользователь просматривает страницы. Выполняем команду wpscan — url cybear32c.lab — random-agent и теперь сканирование проходит без проблем.

Из всех найденных уязвимостей лишь одна является более менее подходящей, это Unauthenticated SQL Injection. Будем пробовать найти PoC по одной из ссылок и применить его для того, чтобы подтвердить его работоспособность. На скриншоте выше выделена ссылка на exploit-db.com.

Просмотрев содержимое страницы, находим PoC

Пробуем применить этот PoC на сайте.

И получаем вот такое сообщение от бдительного WAF. Забегая вперед, никому не удалось обойти WAF. В общем, видя что тут ничего не выйдет и сайт даже при наличии уязвимостей защищен неплохо, переходим к другому этапу — активному сканированию. Но найденное будет очень полезным в будущем, не стоит думать что время потрачено зря.

Итак, можно приступить к активной фазе сканирования. Первым делом воспользуемся nmap для того, чтобы увидеть какие порты открыты, и какие сервисы запущены на этих портах.

Выполняем команду map -v -sV 192.168.101.8 и ждем, когда nmap завершит сканирование....

В итоге у нас 6 портов и 6 сервисов! Далее нам необходимо выбрать какой сервис будем проверять на уязвимости первым. Я начал конечно же с 443 порта. Перейдя по ссылке https://cybear32c.lab, я был приятно удивлен, что там была представлена почти пустая страница с надписью “В разработке”. Хм, подумал я, значит тут что-то может скрываться, и взялся за dirb, чтобы проверить, что же может найтись на сайте такого, но ничего не обнаружил интересного. Тогда промелькнула мысль, а что если тут присутствует уязвимость HeartBleed в версии openssl библиотеки. Чтобы проверить уязвим ли хост, опять же поможет nmap и его nseскрипты!

Запускаем команду nmap -p 443 --script ssl-heartbleed 192.168.101.8 и видим, что хост действительно уязвим! Теперь наступает момент, когда нужно воспользоваться уязвмостью для получения информации. Что мы можем получить, используя эту уязвимость? Во-первых, мы можем получить содержимое памяти, а как мы знаем в памяти может быть очень и очень много интересного! Начиная от сертификатов, заканчивая куками пользователей сайта или путями до какой-то очень закрытой и чувствительной информации.

Для того, чтобы получить заветное содержимое памяти через эксплуатацию уязвимости CVE-2014–1060, можно воспользоваться уже готовым скриптом на python, который поддерживает циклический опрос и получение пакетов с содержимым памяти, а также содержит функционал сброса содержимого памяти в файл дампа (что замечу очень удобно). Исходный код можно найти тут https://github.com/einaros/heartbleed-tools

Выполним команду ./hb.py -p 443 192.168.101.8 -n 0xF000 -l 100 -t 50 -d -o cybear32c.bin. После запуска данной команды наступает долгое ожидание. Замечу, что столкнулся с тем, что в этот момент во всю сканили сайт, при помощи nikto, openvas и других автоматизированных средств, другие участники лаборатории, создавая "шум", что существенно затрудняло анализ содержимого дампа. Но с другой стороны, в реальности большое количество пользователей также генерирует шумовой трафик переходя по страницам сайта. Я использовал tail -f cybear32c.bin команду для просмотра данных в реальном времени и после 20 минут ожидания в окне промелькнула строка, которая меня очень заинтересовала. Но так как данные быстро промелькивали в окне, я остановил скрипт и начал просматривать дамп при помощи команды hexdump -C cybear32c.bin | less , чтобы можно было комфортно просмотреть информацию.

Найденная интересная строка выделена на рисунке. Далее я еще поискал по различным видам запросов и в частности по HEAD и вот что дал поиск в дампе, использовал команду strings cyberar32c.bin | grep HEAD.

На скриншоте выше видно, что файл находится по пути /var/www/html/, собственно там же и находится содержимое сайта. А в следующем скриншоте видно, что кто-то в этот момент (бот конечно, кто же еще) проверяет на месте ли файл. Получается, используя HeartBleed уязвимость дампя память мы стали невольным наблюдателем.

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

Файлик небольшой, но он содержит ценную информацию! Открываем его и радуемся флагу! Урааа!

В данном файле содержатся хеши паролей, и из названия понятно, что они используются для подключения через прокси! Да, это действительно удача! Вспоминая результаты сканирования, видим вторую точку входа! Это конечно же прокси расположенный на порту 3128.

Но сначала фикируем получение флага в своем профиле и получаем первые очки за найденный флаг!

--

--

«Переписывание с нуля гарантирует лишь одно — ноль!» — Мартин Фаулер