Содержание статьи
warning
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Разведка
Сканирование портов
Адрес машины — 10.10.10.202, смело кидаем его в /
, чтобы писать вместо этого ready.
.
10.10.10.202 ready.htb
И конечно, сканируем порты в поисках интересных вещей.
#!/bin/bashports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)nmap -p$ports -A $1
Видим два открытых порта: 22 (служба SSH) и 5080 (веб‑сервер nginx). На SSH мы пойдем стучаться, когда у нас будут какие‑нибудь учетные данные, поэтому начнем с nginx. Скрипт, приведенный выше, любезно предоставил нам информацию из поля http-title
, благодаря которой мы сразу определяем используемую технологию — GitLab.
GitLab — это система управления репозиториями кода на основе Git с собственной вики, системой отслеживания ошибок и другими функциями. Отличная штука, но, как и в любом популярном проекте, в нем время от времени находят дыры. Наша цель сейчас — узнать, какие именно из них будут нам доступны.
У нас есть возможность зарегистрироваться, сразу сделаем это, чтобы получить доступ к большему числу функций, чем предоставляется для гостей. В первую очередь нам нужно узнать версию продукта и поискать информацию или отчеты об уже найденных уязвимостях, а возможно, и готовые эксплоиты. Обычно версию можно узнать на страницах вроде About или Help. Заодно не забываем пройтись и по другим разделам — в поисках ценной информации вроде имен пользователей и подобных вещей.
Точка входа
На странице Help находим версию продукта — 11.4.7.
Вполне вероятно, что для такого популярного продукта в Exploit DB найдутся готовые уязвимости. Если ты используешь Kali Linux или другой хакерский дистр, то, скорее всего, можешь просто написать команду searchsploit
:
searchsploit gitlab 11.4.7
searchsploit -p ruby/webapps/49334.py
info
В реальных условиях лучше использовать Google, чтобы искать по всем доступным исследованиям и отчетам, включая самые новые.
Так мы узнаем об уязвимости, которая может предоставить удаленное выполнение кода (RCE). Также получаем ее идентификатор (2018-19571 и 2018-19585) в базе данных общеизвестных уязвимостей информационной безопасности (CVE).
info
Об эксплуатациях уязвимостей в GitLab читай также в статьях «HTB Laboratory. Взламываем GitLab и учимся перехватывать пути в Linux» и «Читай и выполняй. Как работает эксплоит новой уязвимости в GitLab».
Закрепление
Найденный нами эксплоит использует цепочку уязвимостей. Сначала идет обычный блок кода, авторизующий нового пользователя.
Затем эксплуатируется уязвимость SSRF в функции создания нового проекта при импорте репозитория по URL. Это позволяет нам обращаться к локальному серверу Redis, который работает на порте 6379. Так как при этом «запросы к локальному хосту не разрешены», для обхода используется специальный адрес IPv6: [
.
Redis — резидентная система управления базами данных класса NoSQL с открытым исходным кодом, работающая со структурами данных типа «ключ — значение». Она часто используется и в роли СУБД, и для реализации кешей и брокеров сообщений. GitLab использует его по‑разному, например для хранения данных сеанса, кеширования и даже для хранения очереди фоновых заданий.
Так как Redis использует простой текстовый протокол, мы можем спокойно работать с ним напрямую, не соблюдая никаких спецификаций. Так как есть возможность взаимодействовать с Redis через SSRF, становится возможным получение удаленного выполнения кода (RCE).
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»