Содержание статьи
Сначала через SQL-инъекцию прочитаем файлы сервера и найдем скрытый рендеринг шаблонов, затем используем XSS для обращения к админской функции и превратим инъекцию в Twig-шаблоне в выполнение команд. После этого вытащим учетные данные, зайдем по SSH, пробросим локальный порт внутреннего сервиса и повысим привилегии через обход аутентификации и инъекцию команды.
Наша цель — получить права суперпользователя на машине Cobblestone с учебной площадки Hack The Box. Уровень сложности задания — «безумный», операционная система — Linux.
warning
Подключаться к машинам с HTB рекомендуется с применением средств анонимизации и виртуализации. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Разведка
Сканирование портов
Добавляем IP-адрес машины в /:
10.10.11.81 cobblestone.htb
Запускаем сканирование портов.
Справка: сканирование портов
Сканирование портов — стандартный первый шаг при любой атаке. Оно позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации он выбирает следующий шаг к получению точки входа.
Самый известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи такого скрипта:
#!/bin/bashports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '' ',' | sed s/,$//)nmap -p$ports -A $1Он действует в два этапа. На первом выполняется обычное быстрое сканирование, на втором — более тщательное, с использованием встроенных скриптов (опция -A).
Подробнее про работу с Nmap читай в статье «Nmap с самого начала. Осваиваем разведку и сканирование сети».

Сканер нашел два открытых порта:
- 22 — служба OpenSSH 9.2p1;
- 80 — веб‑сервер Apache HTTP Server 2.4.62.
Будем искать точку на сайте http://, куда перенаправляет 80-й порт.

Точка входа
На главной странице находим ссылки на новые поддомены vote. и deploy..

Обновляем запись в файле / и открываем новые сайты.
10.10.11.81 cobblestone.htb vote.cobblestone.htb deploy.cobblestone.htb
На deploy. — только страница‑заглушка без каких‑либо функций, а vote. редиректит на страницу авторизации.


После регистрации и авторизации видим таблицу сервисов и можем добавить в нее новый сервис по URL.


Запросы к добавленному серверу не отправляются, но, если выбрать этот сервис, информация будет доступна по его идентификатору.

Открываем запрос на добавление сервиса в Burp Repeater и проверяем полезную нагрузку для SQL-инъекции. При условиях 1=1 и 1=2 ответы сервера сильно отличаются, а значит, SQL-инъекция присутствует.
info
Подробнее о принципах работы SQL-инъекций читай в статье «SQL-инъекции. Разбираем на пальцах одну из самых популярных хакерских техник».


Точка опоры
SQL-инъекция
Копируем запрос из Burp Repeater в файл, передаем его в sqlmap и указываем параметр --dbs, чтобы получить список баз данных. Утилита сама подготовит запрос для эксплуатации инъекции.
sqlmap -r req.txt --batch --dbs

Продолжение доступно только участникам
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
