В этот раз мы разберем легкую машину — Laboratory. На примере ее прохождения ты научишься эксплуатировать уязвимость в GitLab для произвольного чтения файлов и удаленного выполнения кода. Также мы покопаемся в репозиториях и повысим привилегии с помощью техники path hijacking.
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
IP-адрес машины — 10.10.10.216, я при помощи строчки в /etc/hosts
дам ей имя laboratory.htb
.
Первым делом, конечно же, сканируем порты, чтобы понять, какие сервисы запущены на машине. В скрипте ниже утилита Nmap вызывается дважды: для быстрого сканирования и затем чтобы пройтись по найденным портам с применением скриптов.
#!/bin/bashports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr 'n' ',' | sed s/,$//)nmap -p$ports -A $1
Нашлось три открытых порта:
Сканирование порта 443 преподносит нам приятный сюрприз. Поскольку он отвечает за общение по зашифрованному протоколу, в отчете о сканировании можно найти сертификат, а в сертификате еще один домен — git.laboratory.htb
. Я тоже добавлю его в /etc/hosts
:
10.10.10.216 git.laboratory.htb
При обращении по домену laboratory.htb
мы ничего интересного не получаем, а вот на найденном git.laboratory.htb
нас встречает GitLab.
GitLab — это система управления репозиториями кода для Git с собственной вики, системой отслеживания ошибок и другими функциями.
У нас есть возможность зарегистрироваться, что сразу и сделаем. Это позволит нам получить доступ к большему числу функций, чем у гостей. Поскольку мы имеем дело с серьезным проектом, «тыкать кавычки» в каждую форму смысла нет. Вместо этого стоит поискать информацию об уязвимостях и готовые эксплоиты. Первый шаг на пути к этому — узнать версию продукта. Обычно она приводится на страницах вроде About или в данном случае — Help.
Мы узнаем версию GitLab CE — 12.8.1.
В реальных условиях лучше всего искать эксплоиты при помощи Google, поскольку этот поисковик заглядывает и в личные блоги, и в самые разные отчеты. Но для ускорения можно пользоваться специализированными базами вроде Exploit-DB — скорее всего, там найдутся подходящие варианты. Если ты используешь Kali Linux, то эта база у тебя уже есть и для поиска можно использовать утилиту searchsploit
.
Как видишь, мы нашли сразу несколько эксплоитов, хотя для нужной версии GitLab ничего нет. Зато есть для более новой (номер 48431), а значит, скорее всего, подойдет и к нашей.
Эксплуатируемая уязвимость срабатывает при перемещении задачи между проектами GitLab и приводит к тому, что мы можем читать файлы на удаленной машине. Однако у меня ни одна из реализаций этого эксплоита не заработала, поэтому придется все делать в ручном режиме.
Для этого нам нужно изначальное исследование, доказательство работоспособности (proof of concept) этой уязвимости. Чтобы найти его, обращаемся в Google. Нам повезло, на HackerOne (самая известная платформа для bug bounty) нашелся целый отчет. В нем рассказано, как не только читать файлы, но и получить удаленное выполнение кода (RCE)!
Для получения RCE нам нужно иметь консоль Ruby on Rails и значение secret_key_base
из файла /opt/gitlab/embedded/service/gitlab-rails/config/secrets.yml
. Именно для получения содержимого этого файла мы будем использовать первую уязвимость, которая позволяет читать произвольные файлы.
Итак, читаем файл. Создадим два проекта в GitLab, а потом перейдем к вкладке Issues и выберем New Issue. Там указываем следующее значение в качестве описания и таким образом воспользуемся уязвимостью типа path traversal.
![a](/uploads/11111111111111111111111111111111/../../../../../../../../../../../../../../opt/gitlab/embedded/service/gitlab-rails/config/secrets.yml)
Далее необходимо указать целевой проект (который мы создали вторым), после чего secrets.yml
можно будет загружать. Так мы получаем нужный для RCE секретный параметр.
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
1 год9300 р. |
1 месяц870 р. |
Я уже участник «Xakep.ru»
Читайте также
Последние новости