Невозможно отучить людей изучать самые ненужные предметы.
Введение в CSS
Преимущества стилей
Добавления стилей
Типы носителей
Базовый синтаксис
Значения стилевых свойств
Селекторы тегов
Классы
CSS3
Надо знать обо всем понемножку, но все о немногом.
Идентификаторы
Контекстные селекторы
Соседние селекторы
Дочерние селекторы
Селекторы атрибутов
Универсальный селектор
Псевдоклассы
Псевдоэлементы
Кто умеет, тот делает. Кто не умеет, тот учит. Кто не умеет учить - становится деканом. (Т. Мартин)
Группирование
Наследование
Каскадирование
Валидация
Идентификаторы и классы
Написание эффективного кода
Вёрстка
Изображения
Текст
Цвет
Линии и рамки
Углы
Списки
Ссылки
Дизайны сайтов
Формы
Таблицы
CSS3
HTML5
Блог для вебмастеров
Новости мира Интернет
Сайтостроение
Ремонт и советы
Все новости
Справочник от А до Я
HTML, CSS, JavaScript
Афоризмы о учёбе
Статьи об афоризмах
Все Афоризмы
Помогли мы вам |
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Адрес машины — 10.10.10.202, смело кидаем его в /
, чтобы писать вместо этого ready.
.
10.10.10.202 ready.htb
И конечно, сканируем порты в поисках интересных вещей.
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) и 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
Результат работы скриптаВ реальных условиях лучше использовать Google, чтобы искать по всем доступным исследованиям и отчетам, включая самые новые.
Так мы узнаем об уязвимости, которая может предоставить удаленное выполнение кода (RCE). Также получаем ее идентификатор (2018-19571 и 2018-19585) в базе данных общеизвестных уязвимостей информационной безопасности (CVE).
Об эксплуатациях уязвимостей в GitLab читай также в статьях «HTB Laboratory. Взламываем GitLab и учимся перехватывать пути в Linux» и «Читай и выполняй. Как работает эксплоит новой уязвимости в GitLab».
Найденный нами эксплоит использует цепочку уязвимостей. Сначала идет обычный блок кода, авторизующий нового пользователя.
Затем эксплуатируется уязвимость SSRF в функции создания нового проекта при импорте репозитория по URL. Это позволяет нам обращаться к локальному серверу Redis, который работает на порте 6379. Так как при этом «запросы к локальному хосту не разрешены», для обхода используется специальный адрес IPv6: [
.
Redis — резидентная система управления базами данных класса NoSQL с открытым исходным кодом, работающая со структурами данных типа «ключ — значение». Она часто используется и в роли СУБД, и для реализации кешей и брокеров сообщений. GitLab использует его по‑разному, например для хранения данных сеанса, кеширования и даже для хранения очереди фоновых заданий.
Так как Redis использует простой текстовый протокол, мы можем спокойно работать с ним напрямую, не соблюдая никаких спецификаций. Так как есть возможность взаимодействовать с Redis через SSRF, становится возможным получение удаленного выполнения кода (RCE).
|
|