Назад | Перейти на главную страницу

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

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

Чтобы проверить уязвимость CVE-2014-6271

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

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


To check for the CVE-2014-7169 vulnerability
(warning: if yours fails it will make or overwrite a file called /tmp/echo that you can delete after, and need to delete before testing again )

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

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


To check for 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.


To check for 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.


To check for CVE-2014-6277. I'm not 100% sure on this one as it seems to rely on a partially patched system that I no longer have access to.

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

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


To check for CVE-2014-6278. Again, I'm not 100% sure on if this test as I no longer have any unpatched systems.

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

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

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

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

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

$ bash -c "echo Hello"
VULNERABLE
Hello

Если отображается строка «VULNERABLE», ответ очевиден. В противном случае вам не о чем беспокоиться, и ваша исправленная версия Bash в порядке.

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

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

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

Команда выполнения:

$ 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

Я написал утилиту 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: эта утилита отключена, извините: '(

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

http://shellshock.iecra.org

введите env x = '() {:;}; echo уязвимый 'bash -c "echo this is a test", и если это вернет уязвимость, и это тест, это означает, что ваша машина OSX / Linux затронута. Решение - обновить bash до последней версии.