关于 shellshock bash 漏洞有很多主题,但是在 Web 服务器的 access.log 文件和常规日志中都找不到任何可以“grep”的模式集合。
目前已经存在 6 个与 Shell Shock 相关的 CVE,每个都有其独特性。
有一个与 Shell Shock 相关的 CVE 的 Wiki 页面: 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*
它检查:
- bash 命令(在 cgi 等中) -此处为攻击示例
- CVE-2014-6271 的一般模式
- 在这里使用“wget”或“uname -a”也不太正常
从示例攻击来看,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*
它检查:
- bash 段错误/崩溃 - 使用 shell shock 时可能会发生
如果您不想对所有内容进行 grep,那么请对“bash”进行 grep - 这是最常用的做法。
相关链接:
通过特制的环境变量实现的 Bash 代码注入漏洞(CVE-2014-6271、CVE-2014-7169)
缓解 shellshock 漏洞(CVE-2014-6271 和 CVE-2014-7169)
将来我会更新 grep 模式攻击者 IP 地址
更新:您应该只从 9 月 24 日开始使用 grep,因为漏洞从那时起才公开。因此,在 zgrep 后面放置一个 egrep(此语法适用于 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"
答案1
攻击者可能会通过未记录的自定义标头来缓解检测(已经看到这种情况),这意味着你无法在日志文件中检测到这些内容
这是我检查的内容:
$ 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]