Невозможно использовать уязвимость в виде шелл-шока для всех файлов.

Я пытался использовать уязвимость Shellshock в моей системе и столкнулся с интересной проблемой. Я использовал 'wget', чтобы использовать уязвимость. Команда, которую я использую, выглядит следующим образом:

wget -U "() { test;};echo \"Content-type: text/plain\"; echo; echo; /bin/cat /etc/passwd" http://somesite.com/some-script.cgi

Используя приведенную выше команду, уязвимость отображается, как и ожидалось. Однако, когда я пытаюсь создать файл, который не является файлом.cgi, уязвимость не отображается, и загружается только файл.

Из того, что я понимаю, wget должен установить строку User-Agent в значение, переданное в команде, которая должна выполнить код /bin/cat /etc/passwd и я не понимаю, как это связано с характером загружаемого файла.

Заранее спасибо.

1 ответ

Решение

Для того, чтобы использовать ошибку "Снаряды", необходимо выполнить следующие шаги:

  1. вы должны заставить целевой сервер вставлять определенную строку в переменную окружения, и

  2. после установки переменной среды цель должна (прямо или косвенно) запустить (уязвимую версию) оболочку bash.

Один из способов это может произойти, когда веб-сервер выполняет внешнюю программу через Common Gateway Interface (CGI), а внешняя программа либо является сценарием оболочки bash, либо иным образом вызывает bash. Это происходит потому, что протокол CGI указывает, что заголовки из исходного HTTP-запроса передаются внешней программе в переменных среды с префиксом HTTP_ (например HTTP_USER_AGENT для заголовка User-Agent). Поскольку злоумышленник может контролировать эти заголовки, он также может напрямую контролировать значения этих переменных среды.

Тем не менее, веб-сервер должен устанавливать эти переменные среды только при вызове внешней программы через CGI. При доставке статического файла серверу нужно только прочитать этот файл с диска и отправить его обратно клиенту; ему не нужно устанавливать какие-либо переменные окружения или вызывать какие-либо внешние инструменты, такие как bash.

Другие вопросы по тегам