Разбор реализованных недопустимых событий на ВСКБ 2024
Вступление
Всем привет! 9-10 сентября в рамках Kazan Digital Week прошла Всероссийская Студенческая Кибербитва, по результатам которой составы ДВФУ LaCringe и FEFU Daemons заняли первые места в зачете красных и синих соответственно. В сегодняшнем материале предлагаю посмотреть на те 6 недопустимых событий, которые нам удалось реализовать за время соревнований. Приятного прочтения!
Сканирование периметра
Нам была предоставлена информация о скоупе внешнего периметра, со сканирования которого мы и начали – запустили nmap -A на всю подсеть по 24 маске:
nmap -A 10.14.100.0/24 -oN init
В результате получили внушительный текстовый файлик, содержащий результаты сканирования всех доступных в подсети хостов, которых оказалось 28:
# Nmap done at Mon Sep 9 03:07:23 2024 -- 256 IP addresses (28 hosts up) scanned in 866.37 seconds
Проанализировав найденные ресурсы, мы составили таблицу, где сопоставили айпи-адреса с их доменными именами
После проведения первоначальной разведки мы приступили к реализации недопустимых событий.
Кинотеатр Cinematrix. Изменение цен на билеты
Первым делом я решил начать с ресурса cinematrix.icp.
На главной странице располагалась информация об идущих фильмах и ценах на билеты, никакой полезной интерактивности веб-сайт не представлял, поэтому следующим этапом стало сканирование директорий, в результате которого были обнаружены следующие пути:
Путь /logs, содержавший информацию о наличии какого-то boolean параметра. После фаззинга параметров был найден параметр debug=True:
В ходе анализа логов был найден JWT-токен пользователя Redactor. Мы использовали этот токен в качестве хедера Cookie и получили доступ к странице /redactor без авторизации:
Форма выбора типа билета и ввода новой цены оказалось нефункциональной, однако это решилось при помощи удаления свойства disabled в html-коде соответствующих элементов. После этого появилась возможность выбрать тип билета и установить ему новую цену:
Таким образом наше первое недопустимое событие было реализовано:
Кинотеатр Cinematrix. Дефейс главной страницы
Дефейс – несанкционированное изменение содержимого страницы – было целью этого недопустимого события. Все шаги для его реализации были идентичны с предыдущим НС – взяли токен и получили доступ на страницу редактора, однако последний этап был иным: мы обратили внимание, как именно новая цена попадает в итоговый HTML-код и вместо цены ввели JS-код, заменяющий содержимое страницы:
В итоге получили следующий результат:
Недопустимое событие было реализовано
Аэропорт EagleSky. Изменение цен на билеты
На сайте аэропорта располагалось табло рейсов, цены на эти рейсы и контакты.
В ходе изучения ресурса я обратил внимание, что запрос информации о рейсе на сайте реализован с использованием api: ресурс шлет запрос на /api/flight/info?id=1 и полученную оттуда информацию предоставляет пользователю:
Однако апишка оказалась уязвима к SQL-инъекции:
При помощи утилиты sqlmap эта уязвимость была подтверждена, а таблицы сдамплены:
После авторизации с админским паролем мы получили доступ к изменению цен на рейсы:
И это недопустимое событие оказалось реализовано:
Cyberarena. Дефейс главной страницы сайта
В данном случае на ресурса располагалась информация об идущих матчах – команды, локация и счет. Практически параллельно с изучением сайта был запущен фаззинг директорий и вместо меди нашлось золото – открытый git.
Весь этот гит был сдамплен при помощи утилиты git-dumper
В ходе изучения содержимого гита была найдена ручка /manage/login.php
В самом файле содержался механизм авторизации на основе OTP – One Time Password.
<?php
include "./core/config.php";
$otp = substr(md5(strval(intval(time() / 60)) . "hexraysalwaysavailable"), 0, 6);
if (isset($_POST['email'])) {
echo $_POST['otp'];
if ($_POST['otp'] == $otp) {
$sql = "SELECT email FROM admins WHERE email=?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("s", $_POST["email"]);
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_row();
if (isset($row['email'])) {
session_start();
$_SESSION["loggedin"] = true;
header('Location: manage.php');
exit;
}
}
}
?>Как можно увидеть, данный код не является особо безопасным и в случае дисклоуза алгоритма генерации пароля будет достаточно легко сгенерировать себе нужный пароль – этим мы и занялись. Мы изучили алгоритм работы механизма и написали код для генерации OTP на нужный тайминг:
Нашли в сурс-коде почту разработчика:
И успешно авторизовались, используя эту почту и сгенерированный OTP.
После этого добавили новый матч и в качестве имени команд указали полезную нагрузку:
Таким образом результат дефейса выглядел так:
Недопустимое событие реализовано
Энергетическая компания TechEnergix. Утечка персональных данных клиентов
Данное недопустимое событие реализовалось на протяжении времени и в несколько этапов. Инфраструктура она такая =)
Здесь важно понимать, что помимо внешнего периметра у каждой организации был еще и внутренний – недоступный напрямую с впнов, выданных нам организаторами, поэтому попадать во внутреннюю сеть нужно было иначе. Как? Фишинг!
Мы изучили ресурсы компании и собрали список почт сотрудников:
Далее мы подготовили фишинговое письмо hr.doc, являющееся маяком для нашего С2 фрейморвка:
e.ivanov, открывший данный файл, сам того не зная, дал нам удаленный доступ к своему компьютеру, которым мы управляли посредством нашего С2:
Мы закрепились внутри сети при помощи С2, пробросили туннели при помощи Ligolo и получили практически прямой доступ к внутренней сети организации TechEnergix – 10.38.100.0/24.
Следующим нашим шагом стало сканирование внутренней сети организации при помощи утилиты Advanced Network Scanner в результате сканирования был обнаружен хост ADS01, на котором оказались доступны публичные шары.
На одной из шар был расположен скрипт Check_db.ps1, из которого мы получили креды:
Далее на ADS01 была обнаружена уязвимая к Remote Code Execution версия базы данных Postgres. С использованием найденных на прошлом шаге кред был запущен эксплоит: python3 rc.py -i 10.38.100.6 -p 5432 -d clients -c "<command to execute>" -U postgres -P Str0ngP@ssw0rd123!
В результате работы которого мы получили таблицу персональных данных клиентов компании:
Недопустимое событие реализовано
IT-консалтинг CircuitMinds. Утечка персональных данных сотрудников
Реализация данного недопустимного события так же началась с поиска почт:
Попытка заслать фишинг этому товарищу закончилась неудачей – нам ответили, что он принимает письма только от админа. Но для нас это не проблема =)
Подменив после from с личный почты на почту admin@circuitminds.icp при отправке письма мы успешно заслали Лебедеву письмо от имени админа, после чего получили доступ к его компьютеру (вновь посредством С2, да) :
Изучив машину пользователя, мы нашли зашифрованные пароли Firefox, которые успешно извлекли при помощи утилиты firepwd.
На внутреннем портале организации был развернут Bitrix24, креды к которому мы и нашли:
Изучив этот ресурс, мы получили информацию о сотрудниках:
Недопустимое событие реализовано
Заключение
На этих шести недопустимых событиях и закончилась наше выступление на ВСКБ в рамках Kazan Digital Week. Немного грустно, что спустя кучу времени у меня так и не удалось подступиться к банку и реализовать еще парочку НС в его инфраструктуре, но такое тоже бывает.