Категория > Новости > HTB Proper. Пишем tamper для sqlmap и эксплуатируем race condition через RFI - «Новости»
HTB Proper. Пишем tamper для sqlmap и эксплуатируем race condition через RFI - «Новости»26-08-2021, 00:02. Автор: Brooks |
Hack The Box. В процессе я покажу, как получить учетные данные к сайту через SQL-инъекцию, написав свой tamper к sqlmap. Далее эксплуатируем race condition через RFI, чтобы получить первоначальный доступ к хосту. Завершим прохождение повышением привилегий через использование именованных каналов скомпрометированной службы.warningПодключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками. РазведкаСканирование портовIP машины — 10.10.10.231, заносим его в
10.10.10.231 proper.htb
И сканируем порты. Справка: сканирование портовСканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа. Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта. ports=$(nmap -p- --min-rate=500 $1 | grep^[0-9] | cut -d '/' -f 1 | tr 'n' ',' | sed s/,$//)nmap -p$ports -A $1 Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция Результат работы скрипта По результатам сканирования имеем всего один открытый порт — 80, там откликается веб‑сервер Microsoft IIS httpd 10.0. Приступаем к осмотру сайта. Главная страница сайта Сканирование веб-контентаНа самом сайте зацепиться не за что, поэтому врубаем перебор каталогов. Справка: сканирование веб-сайтаСканирование сайта методом перебора каталогов и файлов по словарю — это одно из первых действий при пентесте веб‑приложения. Для этого обычно применяют dirsearch, DIRB или более быстрый gobuster. Мы же в этой статье будем использовать встроенные средства Burp Suite. Перехватываем запрос в Burp Proxy и в контекстном меню выбираем Engagement tools → Discover content. Указываем глубину сканирования, интересующие нас расширения файлов и бэкапов. Настройки Burp Discover content Спустя несколько минут (если ты, как и я, выбрал 200 потоков для сканирования) получим карту сайта, отталкиваясь от которой будем определять следующий вектор атаки. Карта сайта proper.htb Я посмотрел все комментарии на всех страницах (в контекстном меню Engagement tools → Find comments), но снова ничего важного. А вот файл Запрос без одного параметраЗапрос с измененным значением одного из параметров Так как используется соль, параметр
john --list=subformats | grep md5
Варианты хеширования MD5 с использованием солиДля определения алгоритма нам нужно создать словарь ( Сначала установим перенос строки в качестве разделителя (
Затем выполняем перебор по полученному алгоритму ( IFS=$''for entry in $(john --list=subformats | grep md5)doformat="$(echo $entry | tr -d ' ' | cut -d '=' -f 3 | cut -d ':' -f 1)" echo -e "nFormat:$format---------------------------------n"john --format=$format --wordlist=word hashdone Результат перебора алгоритмовДля формата Проверка алгоритма хеширования с использованием соли Точка входаТеперь мы можем манипулировать значением параметров так, чтобы они обрабатывались приложением. Текст ошибки натолкнул меня на мысль, что можно было бы написать tamper для sqlmap, хотя мы пока так и не установили достоверно, есть ли здесь возможность SQL-инъекции. infoТемперы — это скрипты для sqlmap, которые преобразуют его запросы.
#!/usr/bin/env python
from hashlib import md5
from urllib.parse import quote_plus
from lib.core.enums import PRIORITY
__priority__ = PRIORITY.NORMAL
def tamper(payload, **kwargs):
'''
'''
h = md5(b"hie0shah6ooNoim" + payload.encode()).hexdigest()
return quote_plus(payload) + "&h=" + h
Этот файл (я назвал его
sqlmap -u "http://10.10.10.231/products-ajax.php?order=1" -porder --batch --skip-urlencode --tamper=sqlmap_tamper
Результат выполнения sqlmapИ мы попали в точку: приложение уязвимо к time-based SQL-инъекции, о чем нам и сообщил sqlmap. Эта чудо‑программа сохранила у себя шаблон нагрузки для заданного URL, поэтому мы можем спокойно продолжать работу и доставать необходимые данные — к примеру, названия баз данных (опция
sqlmap -u "http://10.10.10.231/products-ajax.php?order=1" -porder --skip-urlencode --tamper=sqlmap_tamper --dbs
Получение имен баз данных с помощью sqlmapТак мы получаем три базы данных: служебная
sqlmap -u "http://10.10.10.231/products-ajax.php?order=1" -porder --skip-urlencode --tamper=sqlmap_tamper -Dcleaner --tables
Получение таблиц в базе cleaner с помощью sqlmapВ базе есть три таблицы, и в одной из них должны быть учетные данные. Скорее всего, нам подойдет таблица
sqlmap -u "http://10.10.10.231/products-ajax.php?order=1" -porder --skip-urlencode --tamper=sqlmap_tamper -Dcleaner -Tcustomers --columns
Получение столбцов в таблице customers с помощью sqlmapДействительно, нашлись учетные данные! Давай получим значения (опция
sqlmap -u "http://10.10.10.231/products-ajax.php?order=1" -porder --skip-urlencode --tamper=sqlmap_tamper -Dcleaner -Tcustomers -Clogin,password --dump
Получение учетных данныхИзвлечение данных происходит очень долго, поэтому попробуем взломать уже полученные хеши. Перебор с солью ни к чему не привел, поэтому я попробовал взломать хеш без соли при помощи md5decrypt.net. Это дало результат! Взломанные пароли пользователей Точка опорыАвторизуемся с полученными учетными данными на сайте. Нам теперь открываются дополнительные возможности, одна из них — смена цветовой темы. Причем интересен сам способ ее смены: тема устанавливается через передачу GET-параметра Страница сайта для авторизованных пользователей Стоит протестировать GET-параметры так же, как и в прошлый раз. Если мы изменим или удалим один из них, то нам сообщат об обнаружении атаки. Но раз мы знаем, как осуществляется подпись, давай укажем значение, которое будет обработано сервером, к примеру Создание подписи первого параметраОшибка при передаче значения test Уязвимость RFIКак мы видим из текста ошибки, из указанной нами директории подключается файл Таким образом, обращение к файлу происходит дважды, а это означает уязвимость к атаке типа race condition: перед проверкой и включением файла его содержимое возможно изменить. Перейти обратно к новости |