Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
В этом райтапе мы с тобой проэксплуатируем SQL-инъекцию в форме авторизации сайта и с помощью отладочной функции заполучим исходник сайта и полный доступ к MS SQL. Учетку администратора захватим через эксплуатацию права WriteOwner. В общем, будет интересно!
Наш подопытный — средняя по сложности машина StreamIO на основе Windows с площадки Hack The Box.
warning
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Начинаем, как обычно, со сканирования портов машины.
Справка: сканирование портов
Сканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта.
#!/bin/bashports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr 'n' ',' | sed s/,$//)nmap -p$ports -A $1
Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A
).
Результат работы скрипта
Видим много открытых портов:
Ни SMB, ни LDAP ничего путного не ответили, к MS SQL дефолтные учетные данные не подошли, поэтому нам остался только веб. Тем более SSL-сертификат для порта 443 раскрывает нам еще два доменных имени, которые мы заносим в файл /etc/hosts
.
10.10.11.158 streamio.htb DC.streamIO.htb watch.streamIO.htb
Главная страница сайта streamio.htb
Главная страница сайта watch.stream.htb
На первом сайте находим форму авторизации.
Панель логина
Так как мы точно знаем, что на хосте работает СУБД, стоит проверить некоторые методы для обхода авторизации. Перебирать будем по списку с помощью Burp Intruder.
Burp Intruder — вкладка Payload Positions
Это ничего не дало, поэтому попробуем нагрузки для поиска SQL-инъекции. И срабатывает нагрузка ;WAITFOR DELAY '0:0:30
для MS SQL с временной задержкой, которую можно определить по столбцу Response time.
Результат перебора
Мы подтвердили наличие уязвимости, а значит, можем использовать sqlmap для удобной эксплуатации. Сперва запустим ПО для подбора нагрузки и создания шаблона.
sqlmap -u https://streamio.htb/login.php --data='username=admin&password=admin' -p username --batch
Информация об уязвимости
Теперь мы можем приступить к получению данных. Первым делом нужно узнать названия существующих БД (параметр --dbs
).
sqlmap -u https://streamio.htb/login.php --data='username=admin&password=admin' -p username --batch --dbs
Базы данных
Тут нас интересуют две базы: streamio_backup
и STREAMIO
. Первую мы просмотреть не можем, поэтому получим таблицы второй (параметр --tables
).
sqlmap -u https://streamio.htb/login.php --data='username=admin&password=admin' -p username --batch -D STREAMIO --tables
Таблицы из базы STREAMIO
Сразу становится ясно, что следующая цель — таблица users
. Чтобы не пытаться вытащить все данные, попробуем получить названия колонок (параметр --columns
).
sqlmap -u https://streamio.htb/login.php --data='username=admin&password=admin' -p username --batch -D STREAMIO -T users --columns
Колонки в таблице userssqlmap -u https://streamio.htb/login.php --data='username=admin&password=admin' -p username --batch -D STREAMIO -T users -C username,password --dump
Теперь получим данные (параметр --dump
) только из колонок username
и password
.
Данные из базы users
У нас очень много хешей, предположительно MD5. Чтобы найти прообраз, я пользуюсь онлайновым ресурсом crackstation.net.
Взломанные хеши
В итоге мы получаем следующие пары логинов и паролей, с которыми можно попытаться авторизоваться на сайте.
Полученные учетные данные
Но, к сожалению, доступ мы так и не получаем. Может, на сайте есть админка? Чтобы найти ее, будем брутить каталоги.
ffuf -u 'https://streamio.htb/FUZZ' -t 256 -w directory_2.3_medium_lowercase.txt
Результат перебора каталогов
Есть каталог admin
, где мы авторизуемся от имени пользователя yoshihide
.
Панель администратора
У нас есть несколько доступных страниц. Но важны не сами страницы, а то, как сервер узнает, какую загрузить, — по имени параметра.
Страница User
С помощью Burp Intruder мы можем пробрутить название параметра, чтобы попробовать найти новые страницы.
Burp Intruder — вкладка Payload Positions
Результат сканирования
В итоге определяем четыре страницы. Три из них нам уже известны, а вот debug
— что‑то новенькое.
Содержимое страницы debug
Эта страница должна позволять читать файлы. Нас интересует код на PHP, а чтобы его получить, нужно использовать обертки на PHP. Давай закодируем страницу index.php
в Base64.
?debug=php://filter/convert.base64-encode/resource=index.php
Получение страницы index.php
Для декодирования выделяем интересующий нас текст прямо в Burp и нажимаем Ctrl-Shift-B.
Исходный код страницы
Источник: xakep.ru