不一致的炮弹冲击利用

不一致的炮弹冲击利用

我正在尝试根据发布的命令演示 shellshock 漏洞这里

我考虑了两个系统:第一个系统的 bash 存在漏洞$PATH;另一个在 中具有 bash 的修补版本$PATH,并且在 中具有“据称易受攻击”的版本/opt/vulnerable,该版本是从源代码编译的。

第一个系统,我能够成功利用该错误:

$ bash --version
GNU bash, version 4.1.2(1)-release (i386-redhat-linux-gnu)
[...]

$ cat << EOM | bash
> env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
> EOM
vulnerable
this is a test

第二系统,如上所述,有一个修补过的 bash in$PATH和最近(如几个小时前)从bashin的源版本编译的/opt/vulnerable应该容易受到攻击:

$ bash --version
GNU bash, version 4.3.11(1)-release (i686-pc-linux-gnu)
[...]

$ /opt/vulnerable/bin/bash
GNU bash, version 4.1.0(1)-release (i686-pc-linux-gnu)
[...]

我将这些命令通过默认版本传递到易受攻击的版本,但我无法利用它:

$ cat << EOM | /opt/vulnerable/bin/bash
> env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
> EOM
this is a test

我也尝试过使用用于测试的脚本,但未能检测到任何漏洞。 (该命令是从默认的修补 shell 发出的):

$ /opt/vulnerable/bin/bash shellshock_test.sh
CVE-2014-6271 (original shellshock): not vulnerable
CVE-2014-6277 (segfault): not vulnerable
CVE-2014-6278 (Florian's patch): not vulnerable
CVE-2014-7169 (taviso bug): not vulnerable
CVE-2014-7186 (redir_stack bug): not vulnerable
CVE-2014-7187 (nested loops off by one): not vulnerable
CVE-2014-//// (exploit 3 on http://shellshocker.net/): not vulnerable

我在这里做错了什么吗?或者 ftp.gnu.org 上的所有 bash 源档案都已针对此漏洞进行了修补吗?

答案1

$ cat << EOM | /opt/vulnerable/bin/bash
> env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
> EOM

是错的。

在第二行,您正在调用,它将使用1bash中的版本。$PATH

bash您想使用in的版本/opt/vulnerable/bin/bash,如下所示:

$ cat << EOM | /opt/vulnerable/bin/bash
> env x='() { :;}; echo vulnerable' /opt/vulnerable/bin/bash -c "echo this is a test"
> EOM

不过,我认为您没有必要调用 bash 两次并使用这样的管道。为什么不只是:

$ env x='() { :;}; echo vulnerable' bash -c 'echo this is a test'

$ env x='() { :;}; echo vulnerable' /opt/vulnerable/bin/bash -c 'echo this is a test'

我在我的系统上使用bashvs进行了验证:~/src/bash/bash

$ env x='() { :;}; echo vulnerable' bash -c 'echo $BASH_VERSION'
4.3.11(1)-release

$ env x='() { :;}; echo vulnerable' ~/src/bash/bash -c 'echo $BASH_VERSION'
4.3.42(1)-release

脚注:

  1. 或者一个函数、别名、版本hash等。

相关内容