Spider (2021)

Ключевые моменты прохождения:
После скана nmap'a мы сможем увидеть два порта - 22(ssh) и 80(http). Полазив немного по сайту, мы найдем SSTI в форме регистрации, но ввод ограничен десятью символами. После прочитаем config шаблонизатора. Также мы можем определить сам шаблонизатор. Поняв, что на сайте используется либо flask либо jinja, мы используем flask-unsign для того, чтобы редактировать куки файлы. Далее с помощью всего, что мы знаем и умеем, вытащим 3 базы данных с помощью sqlmap'а.
Разведка
По дефолту редачим /etc/hosts:
Сканим nmap'ом:

Форма регистрации:


Также при регистрации выдается уникальный UUID (идентификатор):

На вкладке http://spider.htb/user есть информация об аккаунте:

Получаем юзера
Ввод юзернейма ограничен 10-ю символами, поэтому мы можем использовать дефолтный для SSTI <div data-gb-custom-block data-tag="raw">{{config}}:

Теперь на вкладке http://spider.htb/user можно увидеть вывод пэйлоада:

Весь конфиг:
В данном случае нам интересно только это:
Также нам нужно определить, что используется в качестве шаблонизатора:



Исходя из всего этого, можно понять, что на сайте используется либо flask либо Jinja. Нужно использовать flask-unsign для манипуляций над куки файлами. Это инструмент командной строки для извлечения, декодирования, перебора и создания файлов cookie для приложения Flask.
При ошибке:
После этого можно раскодировать и закодировать куки с помощью SECRET_KEY:
Также можно вытащить базу данных путем SQL-инъекции:







Портал защищен WAF-ом:

WAF - Web Application Firewall. На сервере выполняет функцию защиты от DDoS, а также разных типовых атак. Чаще всего, для его обхода нужно кодировать символы.
Поэтому можно воспользоваться данным пэйлоадом:
В base64 нужно зашифровать пэйлоад:
Для получения сессии:


Получаем рута
Смотрим порты:

Пробросим порт:
Часто новички в ИБ путают порты в пробросе. Слева тот порт, который пробрасывается для себя, а справа порт сервиса на удаленной машине. То есть: это наш порт --->8000:localhost:8080<--- это порт на удаленной машине
При входе на сайт нас встречает окно с логином:

Пошарив по сайту, можно обнаружить XXE уязвимость.
XXE - External Entity Attack, то есть инъекция внешних сущностей XML.
XXE находится в куках, если их расшифровать с помощью flask-unsign, а потом расшифровать в Base64:
C помощью данного пэйлоада через BurpSuite можно получить id_rsa рута:

Повторяем те же действия, что и с id_rsa chiv'а и подключаемся:

Last updated
Was this helpful?