Есть много тем об уязвимости shellshock bash, но нет какой-либо коллекции шаблонов, которые мы могли бы "grep" найти ни в файлах webservers access.log, ни в обычных журналах.
Уже открыто 6 CVE, связанных с контузией, каждая со своей уникальностью.
Существует Wiki-страница CVE, связанная с Shell Shock: https://en.wikipedia.org/wiki/Shellshock_(software_bug)
Вопрос: Может ли кто-нибудь подвести итог, что нужно "grep" в файлах журнала, чтобы проверить, был ли веб-сервер нацелен / использован с уязвимостью bash?
ПРИМЕРЫ:
В журнале доступа http-сервера (каталог может быть в другом месте, перечислено несколько. Также имя файла журнала доступа может отличаться, например: «* access.log»):
cd /var/log/apache2/
cd /var/log/httpd/
cd /var/www/logs/
cd /var/log/nginx/
zgrep 'bash' access*
zgrep "};" access*
zgrep "}\s*;" access*
zgrep "() {" access*
zgrep "wget" access*
zgrep "uname -a" access*
он проверяет:
Из примера атак IP-адреса:
zgrep "187.0.222.86" access*
zgrep "209.126.230.72" access*
zgrep "217.14.242.115" access*
zgrep "218.216.190.234" access*
zgrep "54.251.83.67" access*
zgrep "67.227.0.77" access*
zgrep "74.201.85.77" access*
zgrep "78.60.1.101" access*
zgrep "89.207.135.125" access*
В обычных журналах (каталог может быть в другом месте):
cd /var/log/
zgrep 'bash' messages*
zgrep 'bash' syslog*
он проверяет:
Если вы не хотите использовать grep для всех ... grep для "bash" - это самый общий способ.
Ссылки по теме:
Устранение уязвимости shellshock (CVE-2014-6271 и CVE-2014-7169)
В будущем я обновлю шаблоны grep для IP-адреса злоумышленников
ОБНОВИТЬ: Вам следует использовать grep только с начала 24 сентября, поскольку уязвимость стала достоянием общественности только тогда. Поэтому поместите egrep после zgrep (этот синтаксис предназначен для access.logs), например:
egrep -i "24/Sep/2014|25/Sep/2014|26/Sep/2014|27/Sep/2014|28/Sep/2014|29/Sep/2014|30/Sep/2014|Oct/2014"
обнаружение может быть смягчено злоумышленниками с помощью настраиваемых заголовков, которые не регистрируются (уже видели это), что означает, что вы не можете обнаружить этот материал в файлах журнала
вот что я проверяю:
$ grep -e "() {" /var/log/nginx/*access.log
кроме того, вы увидите некоторые выходные данные команд в журнале ошибок, если они не подавлены, как здесь:
[Thu Sep 25 21:16:55 2014] [error] [client ::1] --2014-09-25 21:16:55-- http://fump.8ack.org/
[Thu Sep 25 21:16:55 2014] [error] [client ::1] Resolving fump.8ack.org (fump.8ack.org)...
[Thu Sep 25 21:16:55 2014] [error] [client ::1] 46.4.8.254
[Thu Sep 25 21:16:55 2014] [error] [client ::1]
[Thu Sep 25 21:16:55 2014] [error] [client ::1] Reusing existing connection to fump.8ack.de:80.
[Thu Sep 25 21:16:55 2014] [error] [client ::1] HTTP request sent, awaiting response...
[Thu Sep 25 21:16:55 2014] [error] [client ::1] 200 OK
[Thu Sep 25 21:16:55 2014] [error] [client ::1] Length: 1631 (1.6K) [text/html]
[Thu Sep 25 21:16:55 2014] [error] [client ::1] Saving to: `STDOUT'
[Thu Sep 25 21:16:55 2014] [error] [client ::1]
[Thu Sep 25 21:16:55 2014] [error] [client ::1] 0K . 100% 8.27M=0s
[Thu Sep 25 21:16:55 2014] [error] [client ::1]
[Thu Sep 25 21:16:55 2014] [error] [client ::1] 2014-09-25 21:16:55 (8.27 MB/s) - written to stdout [1631/1631]