Вопрос: Как проверить, уязвим ли мой сервер к ошибке ShellShock?


Как я могу обеспечить, чтобы моя установка Bash не была уязвимой для ShellShock ошибка после обновлений?


77
2017-09-25 14:25


Источник


Видеть Есть ли короткая команда, чтобы проверить, защищен ли мой сервер от ошибки bash bash? - Martin Schröder
Обратите внимание, что в bash еще нет уязвимых мест (CVE-2014-7186 и CVE-2014-7187). - Deer Hunter
Патчи, которые фиксируют CVE-2014-7186 и CVE-2014-7187, доступны в течение недолго после того, как Deer Hunter опубликовал свой комментарий. Если у вас есть дистрибутив для CVE-2014-7169, у вас может быть достаточно, чтобы заблокировать 7186/7187, проверьте свою систему с помощью приведенных ниже команд и посмотрите. Также проверьте наличие обновлений безопасности для вашего дистрибутива. - BeowulfNode42


Ответы:


Проверить уязвимость CVE-2014-6271

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

он НЕ должен отражать слово уязвимым.


Проверить уязвимость CVE-2014-7169
(предупреждение: если вы не справитесь, он сделает или перезапишет файл с именем /tmp/echo которые вы можете удалить после, и их нужно удалить перед повторным тестированием)

cd /tmp; env X='() { (a)=>\' bash -c "echo date"; cat echo

он должен сказать слово date, а затем подать жалобу на сообщение, подобное cat: echo: No such file or directory, Если вместо этого он сообщает вам, что такое текущее время, ваша система уязвима.


Чтобы проверить наличие CVE-2014-7186

bash -c 'true <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF' || echo "CVE-2014-7186 vulnerable, redir_stack"

он НЕ должен отражать текст CVE-2014-7186 vulnerable, redir_stack,


Чтобы проверить наличие CVE-2014-7187

(for x in {1..200} ; do echo "for x$x in ; do :"; done; for x in {1..200} ; do echo done ; done) | bash || echo "CVE-2014-7187 vulnerable, word_lineno"

он НЕ должен отражать текст CVE-2014-7187 vulnerable, word_lineno,


Проверить CVE-2014-6277. На этом я не уверен на 100%, поскольку, похоже, полагается на частично исправленную систему, к которой у меня больше нет доступа.

env HTTP_COOKIE="() { x() { _; }; x() { _; } <<`perl -e '{print "A"x1000}'`; }" bash -c "echo testing CVE-2014-6277"

Результат прохождения на этом - это ТОЛЬКО повторение текста testing CVE-2014-6277, Если он работает perl или если он жалуется, что perl не установлен, это определенно неудачно. Я не уверен в каких-либо других характеристиках отказа, поскольку у меня больше нет незагруженных систем.


Проверить CVE-2014-6278. Опять же, я не уверен на 100%, если этот тест, поскольку у меня больше нет незагруженных систем.

env HTTP_COOKIE='() { _; } >_[$($())] { echo hi mom; id; }' bash -c "echo testing CVE-2014-6278"

Пропуск для этого теста состоит в том, что он должен ТОЛЬКО отследить текст testing CVE-2014-6278, Если ваш отголосок назад hi mom где-то, что определенно является неудачей.


83
2017-09-26 07:49



Можем ли мы добавить общий тест foo='() { echo not patched; }' bash -c foo к этому? Пока экспорт функций не будет помещен в отдельное пространство имен, мы не перестанем работать с одной ошибкой парсера на следующую. - billyw
У этого теста есть CVE? Есть ли у вас ссылки на эту проблему? Также такая информация может принадлежать одному из других вопросов о shellshock из-за того, что этот Q касается того, как проверить успех или неудачу существующих патчей. - BeowulfNode42
Это из сообщения Михала Залевского о некоторых предстоящих Shellshock CVE's (lcamtuf.blogspot.com/2014/09/...). Это его предложенный тест для CVE-2014-6278, который по-прежнему не является общедоступным. Кажется, я ошибался в отношении общности теста; Я уже столкнулся с ситуацией, когда тест Залевского прошел, но тест CVE-2014-7187 потерпел неудачу. - billyw
И вот полное раскрытие информации о CVE-2014-6277 и CVE-2014-6278, а также команды для их проверки: seclists.org/fulldisclosure/2014/Oct/9 - billyw
Одно замечание: даже если версия BASH уязвима, если ничего не использует (т.е. все учетные записи, используемые демонами, такими как «www» или «cups» или что-то еще), сконфигурированы с использованием BASH в качестве оболочки по умолчанию, и ни одна из ваши кодовые вызовы system () или тому подобное, наличие уязвимой версии может быть менее рискованным, но, тем не менее, обновить BASH как можно скорее. - DTK


Экспортируйте специально обработанную переменную среды, которая будет автоматически оцениваться уязвимыми версиями Bash:

$ export testbug='() { :;}; echo VULNERABLE'

Теперь выполните простое эхо, чтобы узнать, будет ли Bash оценивать код в $ testbug, даже если вы не использовали эту переменную самостоятельно:

$ bash -c "echo Hello"
VULNERABLE
Hello

Если он показывает строку «УЯЗВИМЫЙ», ответ очевиден. В противном случае вам не нужно беспокоиться, и ваша исправленная версия Bash в порядке.

Обратите внимание, что множество патчей были выпущены основными дистрибутивами Linux, и иногда они полностью не устраняют эту уязвимость. Продолжайте проверять рекомендации по безопасности и Запись CVE для этой ошибки.


32
2017-09-25 14:25



В дополнение к CVE-2014-6271, неполное исправление от Red Hat, в частности, имеет свои собственные, что также стоит: CVE-2014-7169, - DocMax
Однострочный фильтр, который не загрязняет среду оболочки и не работает, даже если вы используете альтернативную оболочку входа (которая может не знать о export): env testbug='() { :;}; echo VULNERABLE' bash -c "echo Hello" - Lloeki
Здесь есть некоторые детали Ubuntu askubuntu.com/questions/528101/... - лично мне пришлось обновить с Ubuntu 13.10 до 14.04, чтобы исправить проблему - dodgy_coder


ShellShock практически соединение более чем одной уязвимости bash, а также на данный момент есть также malaware, который использует эту уязвимость, поэтому ShellShock может быть проблемой, которая все еще открыта, есть поток с обновлениями от RedHat об этих проблемах,

Redhat рекомендует следующее: 

Команда Run:

$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"

Если вывод:

$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
vulnerable
bash: BASH_FUNC_x(): line 0: syntax error near unexpected token `)'
bash: BASH_FUNC_x(): line 0: `BASH_FUNC_x() () { :;}; echo vulnerable'
bash: error importing function definition for `BASH_FUNC_x'
test

у вас нет никаких исправлений.

Если вывод:

$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
bash: error importing function definition for `BASH_FUNC_x()'
test

у тебя есть CVE-2014-6271 фиксировать

Если ваш выход:

$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `BASH_FUNC_x'
test

вы не уязвимы.

Другая часть проверки ShellShock - это проверка уязвимости CVE-2014-7169, которая гарантирует, что система защищена от проблемы с созданием файла. Чтобы проверить, является ли ваша версия Bash уязвимой для CVE-2014-7169, выполните следующую команду:

$ cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
bash: x: line 1: syntax error near unexpected token `='
bash: x: line 1: `'
bash: error importing function definition for `x'
Fri Sep 26 11:49:58 GMT 2014

Если ваша система уязвима, отобразятся время и дата и будет создано / tmp / echo.

Если ваша система не уязвима, вы увидите результат, похожий на:

$ cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
date
cat: /tmp/echo: No such file or directory

2
2017-09-29 14:43





Я написал утилиту CLI, называемую ShellShocker для проверки вашего веб-сервера на наличие уязвимостей в сценариях CGI. Чтобы протестировать ваш сайт, вы должны запустить:

python shellshocker.py <your-server-address>/<cgi-script-path>

т.е.

python shellshocker.py http://example.com/cgi-bin/possibly-vulnerable-script.cgi

EDIT: эта утилита снята, извините: '(


2
2017-09-26 17:24



Ваша ссылка мертва - SSK
@SSK Извините;) Mistype. - Liam Marshall
Ваша ссылка все еще мертва. - Mxx
Да, извините, я взял его. Это использовалось так, как мне не нравилось. - Liam Marshall


Вы можете отправить свой URL-адрес CGI в этот онлайн-тест:

http://shellshock.iecra.org


1
2017-09-25 20:46



Это вежливо, чтобы дать основания для downvotes. - David
«Мы регистрируем все сканы» ??? Жутко. Я загрузил питон и запустил его сам. - Brad
@brad, по крайней мере, они говорят вам. Я уверен, что если бы я предоставлял службу безопасности whitehat, предлагающую эту услугу, я мог бы сохранить журнал (если бы только счетчик без каких-либо отдельных деталей) о том, сколько людей слепо ввело данные своего сайта на веб-сайт, в котором говорилось, что он собирается попытаться пройти тест на проникновение, не зная о подлинности сайта, предлагающего тест ... и им нужен журнал, который проверял, что в случае, если кто-то использовал свое обслуживание, чтобы найти уязвимые сайты, принадлежащие другим, тоже ... - Rob Moir


type env x = '() {:;}; echo уязвимый «bash -c» echo это тест », и если это возвращает уязвимость, и это тест, это означает, что на вашу машину OSX / Linux влияет. Устранение - обновить до последней версии bash.


-1
2017-09-27 11:33



Почему, как корень? Полностью нет необходимости. - Mat