下面的代码似乎有什么问题?我正在下载并修补到补丁 18,我知道这是针对 shellchock 漏洞的补丁。但运行 Bash 时我仍然遇到该漏洞。
下载源代码和补丁
wget http://ftp.gnu.org/gnu/bash/bash-3.1.tar.gz
wget http://ftp.gnu.org/gnu/bash/bash-3.1-patches/bash31-00{1..9} http://ftp.gnu.org/gnu/bash/bash-3.1-patches/bash31-0{10..18}
解压并应用补丁
tar -xvf bash-3.1.tar.gz
cd bash-3.1
find ../bash31-??? -exec /bin/sh -c 'patch -p0 <{}' \;
(补充:上面的 find 命令恰好因为 shell 通配符而返回一个排序列表,但我知道对于 find 查找来说这并不总是正确的)
配置、制作、安装
./configure --prefix /tmp/bash_patched && make && make install
运行 bash
/tmp/bash_patched/bin/bash
以下内容应返回/tmp/bash_patched/bin/bash 3.1.18(1)-release
echo $BASH $BASH_VERSION
进行炮弹冲击测试
env X="() { :;} ; echo busted" /bin/sh -c "echo stuff"
对我来说这返回
busted
stuff
答案1
问题在于,测试在/bin/sh
系统上仍然易受攻击,直到在 root 上安装。更好的测试是env X="() { :;} ; echo busted" /tmp/bash_patched/bin/bash -c "echo stuff"
答案2
shellshock 补丁实际上是 19 和 20。wget 不会下载这些补丁。尚未测试,但将第二个命令更改为
wget http://ftp.gnu.org/gnu/bash/bash-3.1-patches/bash31-00{1..9} http://ftp.gnu.org/gnu/bash/bash-3.1-patches/bash31-0{10..19} http://ftp.gnu.org/gnu/bash/bash-3.1-patches/bash31-020
应该让它发挥作用
答案3
您是否尝试查看超级用户问题 816787 中描述的脚本?它对我的 Ubuntu 机器来说非常有效,每台服务器(包括 VMware 快照)大约需要 15 分钟,无需重新启动。