October 12, 2022

Photobomb Hack the Box WriteUp by artrone

Получение user'a.

Сначала, как и всегда, сканим наш ip-шник, дабы посмотреть открытые порты и выбрать вектор атаки:

Как мы видим, у нас открыт 22 и 80 порт. На 80 порту находится http страница. Отлично, предварительно добавим данные в /etc/hosts:

Славно, давайте перейдем на сайт:

Ага, видим такую картину- сайт просит нас авторизоваться. Давайте не будем спешить с этим и просканим его на наличие поддоменов и директорий:

Так-с, поддоменов не обнаруежено:(, но мы видим директорию printer/ . Я пытался перейти на нее, но сайт требует авторизоваться. Что можно сделать? Давайте просто взглянем на исходный код сайта:

Ага, вот оно! У нас есть js скрипт с ссылкой на регистрацию. Переходим:

Изучив этот каталог, я понял, что мы можем скачивать выбранную картинку, указав нужный нам формат и размер.

Есть фича, позволяющая нам загружать полезную нагрузку на сервер: приписка пэйлода после формата картинки (с png, в нашем случае, не работает. Поэтому, выбираем для этих целей jpg).

В чем вообще суть вышенаписанного? При нажатии на кнопку скачивания картинки, мы отправляем запрос на сервер. В этом запросе указываются название картинки, расширение и размер. Мы собираемся изменить отправляемый запрос, чтобы использовать reverse shell.

Но как мы можем записать команду для включения шелла, если в нашем запросе недопустимы пробелы? Легко- https://www.revshells.com

Выбираем mkfifo - /bin/bash - URL encode и получаем нужный нам payload.

Открываем dirbuster, открываем браузер, выбираем proxy и действуем.

При написании этого райтапа, я заметил, что тут я немного накосячил, вставив скрипт не в том месте.((( Его следует вставлять после filetype=jpg, использовав после jpg точку с запятой(;).

Отлично, отправляем наш запрос и в терминале подключаем netcat, а дальше уже дело за малым:

Повышение прав до root.

После получения юзера нужно, конечно же, взять рута))
Что ж делать то будем? Давайте глянем, что мы можем делать:

Ага, есть какой-то скрипт и очень важные для нас слова SETENV: и NOPASSWD. А что это за слова? А это параметры в sudoers- плагине политики безопасности sudo по умолчанию.

Так, например, тег NOPASSWD устанавливает значение по умолчанию для следующих за ним команд в Cmnd_Spec_List.
Чтобы этим свободно пользоваться, вам следует изучить следующие статьи:

https://c0nd4.medium.com/linux-sudo-ld-preload-privilege-escalation-7e1e17d544ec
https://www.hackingarticles.in/linux-privilege-escalation-using-ld_preload/

Создаем скрипт с названием shell.c :

Используем данную команду:

gcc -fPIC -shared -o shell.so shell.c -nostartfiles

И заливаем наш скрипт, предварительно запустив http сервер:

Теперь давайте проверим наличие нашего скрипта:

Отлично! Скрипт залился успешно. Теперь давайте дадим ему права:

Теперь изменим параметр LD_PRELOAD с помощью нашего скрипта и разрешенного для нас исполняемого файла:

Ура, мы - рут. Дело за малым. Получим флаг: