Bash

不一致的砲擊利用

  • November 19, 2015

我正在嘗試根據此處發布的命令展示 shellshock 漏洞。

我考慮了兩個系統:第一個在 bash 中有一個易受攻擊的 bash $PATH;另一個有一個 bash in 的修補版本,以及一個從原始碼編譯$PATH的“可能易受攻擊”的版本 in 。/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和一個從in$PATH的源版本編譯的最近(如幾個小時前)應該是易受攻擊的:bash``/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 源檔案都已針對此漏洞進行了修補?

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

是錯的。

在第 2 行,您正在呼叫1bash中的版本。$PATH

您想使用bashin的版本/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等。

引用自:https://unix.stackexchange.com/questions/243887