- Регистрация
- 9 Май 2015
- Сообщения
- 1,480
- Баллы
- 155
Сегодня я покажу, как можно повысить привилегии в Linux, используя настройку env_keep для sudo. Чтобы подобраться к ОС, нам сначала понадобится проэксплуатировать баг CVE-2024-52301 во фреймворке Laravel, обойти авторизацию и через функцию загрузки файла добавить веб‑шелл.
Наша конечная цель — получение прав суперпользователя на машине Environment с учебной площадки . Уровень сложности задания — средний.
warning
Подключаться к машинам с HTB рекомендуется с применением средств анонимизации и виртуализации. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Разведка
Сканирование портов
Добавляем IP-адрес машины в /etc/hosts:
10.10.11.67 environment.htb
И запускаем сканирование портов.
Справка: сканирование портов
Сканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:
#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '
' ',' | sed s/,$//)
nmap -p$ports -A $1
Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A).
Результат работы скрипта
Сканер нашел два открытых порта:
Область тестирования маленькая, сразу просмотрим сайт.
Главная страница сайта
Точка входа
На сайте ничего интересного найти не удалось, поэтому приступим к сканированию сайта с помощью .
Справка: сканирование веба c feroxbuster
Одно из первых действий при тестировании безопасности веб‑приложения — это сканирование методом перебора каталогов, чтобы найти скрытую информацию и недоступные обычным посетителям функции. Для этого можно использовать программы вроде , или . Я предпочитаю .
При запуске указываем следующие параметры:
Задаем все нужные параметры и запускаем:
feroxbuster -u -d 1 -t 128 -w directory_2.3_medium_lowercase.txt
Результат сканирования каталогов с помощью feroxbuster
Находим страницу авторизации /login и еще несколько интересных эндпоинтов, которые без авторизации недоступны.
Содержимое страницы login
Попробуем авторизоваться с любыми учетными данными и просмотрим запрос в Burp Proxy. По названию сессионной куки определяем, что используется движок Laravel.
Запрос в Burp Proxy
Версию Laravel (11.30.0) и PHP находим на странице /mailing.
Содержимое страницы mailing
Первым делом стоит проверить, есть ли для этой версии CMS готовые эксплоиты. Как обычно, хватает запроса к Google.
Поиск эксплоитов в Google
Так мы узнаём о . Эта уязвимость позволяет в запросе указать значение переменной среды при активной директиве register_argc_argv. Пока неясно, как это может нам помочь.
Вернемся к запросу авторизации и поиграем с параметрами. При изменении параметра remember мы получим отладочный лог Laravel, в котором есть интересный блок исходного кода.
Запрос авторизации и ответ сервера
Если установлена переменная среды preprod, то мы автоматически будем залогинены как администратор Laravel. Как раз тут и пригодится , с помощью которой в запросе авторизации устанавливаем переменную среды preprod. Для эксплуатации уязвимости перехватываем запрос к странице login и добавляем ?--env=preprod.
Запрос авторизации
Главная страница сайта
Наша конечная цель — получение прав суперпользователя на машине Environment с учебной площадки . Уровень сложности задания — средний.
warning
Подключаться к машинам с HTB рекомендуется с применением средств анонимизации и виртуализации. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Разведка
Сканирование портов
Добавляем IP-адрес машины в /etc/hosts:
10.10.11.67 environment.htb
И запускаем сканирование портов.
Справка: сканирование портов
Сканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:
#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '
' ',' | sed s/,$//)
nmap -p$ports -A $1
Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A).

Результат работы скрипта
Сканер нашел два открытых порта:
- 22 — служба OpenSSH 9.2p1;
- 80 — веб‑сервер Nginx 1.22.1.
Область тестирования маленькая, сразу просмотрим сайт.

Главная страница сайта
Точка входа
На сайте ничего интересного найти не удалось, поэтому приступим к сканированию сайта с помощью .
Справка: сканирование веба c feroxbuster
Одно из первых действий при тестировании безопасности веб‑приложения — это сканирование методом перебора каталогов, чтобы найти скрытую информацию и недоступные обычным посетителям функции. Для этого можно использовать программы вроде , или . Я предпочитаю .
При запуске указываем следующие параметры:
- -u — URL;
- -d — глубина сканирования;
- -t — количество потоков;
- -w — словарь (я использую словари из набора ).
Задаем все нужные параметры и запускаем:
feroxbuster -u -d 1 -t 128 -w directory_2.3_medium_lowercase.txt

Результат сканирования каталогов с помощью feroxbuster
Находим страницу авторизации /login и еще несколько интересных эндпоинтов, которые без авторизации недоступны.

Содержимое страницы login
Попробуем авторизоваться с любыми учетными данными и просмотрим запрос в Burp Proxy. По названию сессионной куки определяем, что используется движок Laravel.

Запрос в Burp Proxy
Версию Laravel (11.30.0) и PHP находим на странице /mailing.

Содержимое страницы mailing
Первым делом стоит проверить, есть ли для этой версии CMS готовые эксплоиты. Как обычно, хватает запроса к Google.

Поиск эксплоитов в Google
Так мы узнаём о . Эта уязвимость позволяет в запросе указать значение переменной среды при активной директиве register_argc_argv. Пока неясно, как это может нам помочь.
Вернемся к запросу авторизации и поиграем с параметрами. При изменении параметра remember мы получим отладочный лог Laravel, в котором есть интересный блок исходного кода.

Запрос авторизации и ответ сервера
Если установлена переменная среды preprod, то мы автоматически будем залогинены как администратор Laravel. Как раз тут и пригодится , с помощью которой в запросе авторизации устанавливаем переменную среды preprod. Для эксплуатации уязвимости перехватываем запрос к странице login и добавляем ?--env=preprod.

Запрос авторизации

Главная страница сайта
Источник: