Как я могу убедиться, что моя установка Bash не уязвима для ShellShock ошибка больше после обновлений?
Чтобы проверить уязвимость CVE-2014-6271
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
он НЕ должен повторять слово «уязвимый».
/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
. Если вместо этого он сообщает вам текущее значение даты и времени, ваша система уязвима.
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
.
(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
.
env HTTP_COOKIE="() { x() { _; }; x() { _; } <<`perl -e '{print "A"x1000}'`; }" bash -c "echo testing CVE-2014-6277"
Результат прохода на этом - ТОЛЬКО повторение текста testing CVE-2014-6277
. Если он запускает perl или жалуется, что perl не установлен, это определенно сбой. Я не уверен в каких-либо других характеристиках отказов, так как у меня больше нет незащищенных систем.
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 по этой проблеме.
Команда выполнения:
$ 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 для этого онлайн-теста:
введите env x = '() {:;}; echo уязвимый 'bash -c "echo this is a test", и если это вернет уязвимость, и это тест, это означает, что ваша машина OSX / Linux затронута. Решение - обновить bash до последней версии.