| Категория >  Новости > HTB Sink. Учимся прятать запросы HTTP и разбираемся с AWS Secrets Manager - «Новости» HTB Sink. Учимся прятать запросы HTTP и разбираемся с AWS Secrets Manager - «Новости»16-10-2021, 00:01. Автор: Forman | 
| HackTheBox. Для этого нам понадобится проэксплуатировать уязвимость HTTP Request Smuggling, а получив точку опоры, будем разбираться с технологией AWS Secrets Manager. Скучать точно не придется! warningПодключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками. РазведкаСканирование портовАдрес машины — 10.10.10.225, добавляем его в  Справка: сканирование портовСканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа. Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта. 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), 3000 (Gitea) и 5000 (Gunicorn). Начнем с Git.  Мы видим какие‑то имена пользователей (запишем их, могут пригодиться!), но больше ничего интересного нет. Поэтому переходим к Gunicorn. На сайте, который он отдает, нужно регистрироваться. Сделаем это, авторизуемся и посмотрим, что нам станет доступно. Осмотр сайтов я рекомендую проводить через Burp, чтобы можно было просмотреть все отправляемые и получаемые данные. Так после отправки комментария в ответе замечаем заголовок  Запрос в истории BurpОтвет сервера в истории Burp HAProxy — это серверное приложение, которое обеспечивает высокую доступность сайта и балансирует нагрузку TCP и HTTP-приложений между несколькими серверами. Дальше я попытался посканировать директории. У меня ничего не вышло, зато сообщение об ошибке помогло выяснить используемую версию HAProxy — 1.9.10. Ошибка, полученная при сканировании директорий Погуглив, узнаем, что эта версия уязвима к атаке HTTP Request Smuggling. Точка входаHTTP Request SmugglingHTTP Request Smuggling — это метод вмешательства в процесс обработки сайтом HTTP-запросов, полученных от одного или нескольких пользователей. Уязвимость часто имеет критический характер и позволяет злоумышленнику обойти меры безопасности, получить несанкционированный доступ к конфиденциальным данным и напрямую поставить под угрозу других пользователей приложения. Уязвимость возникает из‑за того, что спецификация HTTP предоставляет два разных способа указать, где заканчивается запрос: заголовок  Заголовок  POST / HTTP/1.1Content-Type: application/x-www-form-urlencodedContent-Length: 6p=testЗаголовок  POST / HTTP/1.1Content-Type: application/x-www-form-urlencodedTransfer-Encoding: chunkedaparam=test0Так мы можем использовать одновременно два заголовка. Первый сервер будет разделять запросы по первому заголовку, а второй — по второму, тем самым встраивая свои запросы и пропуская их дальше. Приступим к реализации. Отправим комментарий и перехватим запрос в Burp Proxy. Запрос на сервер Его стоит преобразовать следующим образом: укажем заголовок  Измененный запрос После редиректа видим явно не тот комментарий, который отправляли.  Дело в том, что внутренний сервер неправильно интерпретировал размер переданных данных из‑за путаницы в определяющих его HTTP заголовках, поэтому отобразил больше информации, чем должен был. Блок дополнительной информации, отображенной в комментарии, был взят из следующего запроса другого пользователя. В этом запросе передавались   Так как это сервис хранения заметок, сразу просмотрим, что может хранить админ. Находим три заметки. Записи администратора Каждая из них содержит учетные данные.  Точка опорыС найденными учетными данными получается авторизоваться в Git от имени  Страница Git пользователя root Я начал просмотр с конца. Важные данные нашлись в коммите вот по этой ссылке: http://sink.htb:3000/root/Log_Management/commit/e8d68917f2570f3695030d0ded25dc95738fb1baaИсходный код logs.phpА в этом коммите нашелся приватный ключ: http://sink.htb:3000/root/Key_Management/commit/b01a6b7ed372d154ed0bc43a342a5e1203d07b1eИсходный код dev_keysНеобходимо проверить этот ключ. Для этого сформируем список пользователей и попытаемся подключиться по SSH. Для автоматизации я использовал Metasploit Framework. msfconsoleuse auxiliary/scanner/ssh/ssh_login_pubset RHOSTS sink.htbset USER_FILE users.txtset KEY_PATH root.keyrun  В итоге находим пользователя, к учетке которого подходит ключ. Так мы получаем стабильную точку опоры в виде доступа по SSH.  Перейти обратно к новости |