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?