关于shellshock bash漏洞有很多话题,但是没有任何可以在web服务器access.log文件和正常日志中“grep”的模式集合。
目前已经有6个CVE开放了与shell shock相关的每个CVE都有自己的独特之处。
有一个CVE的维基页面与shell shock有关: https : //en.wikipedia.org/wiki/Shellshock_(software_bug)
问题:有人可以总结一下在日志文件中“grep”是什么,以检查Web服务器是否已被定位/利用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” – 这是最一般的事情..
相关链接:
通过特别devise的环境variables的Bash代码注入漏洞(CVE-2014-6271,CVE-2014-7169)
减轻shellshock漏洞(CVE-2014-6271和CVE-2014-7169)
将来我会更新攻击者IP地址的grep模式
更新 :你应该只从9月24日开始grep,因为漏洞只有从那时起才被公开。 所以把一个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]