2014-09-29 57 views
0

我沒有得到shellshock的根本原因 bash錯誤,如CVE-2014-6271。
據我所知,如果應用程序數據包頭中存在惡意代碼,就會發生shellshock。例如,如果HTTP頭包括http-header [Cookie] =(){:; }; ping 192.168.0.1然後ping到192.168.0.1。
但是,HTTP頭只需要設置字符串變量。爲什麼Apache運行bash腳本?
Apache HTTP頭解析器是由bash shell腳本組成的嗎?
謝謝! :)Shellshock Bash bug的根本原因

回答

2

C的system()函數,用於執行任意外部命令,將其參數傳遞給/bin/sh進行解析。 (這由POSIX指定。)

/bin/sh,在Linux系統上,通常是到/bin/bash的符號鏈接。

如果Apache調用任何外部程序經由system(),並且攻擊者已經能夠惡意代碼插入到任何環境變量,它將上/bin/bash傳遞。

+0

然後bash會高興地評估任何看起來像導出函數的變量(以'(){')開頭,將其作爲函數導入。不在函數定義的末尾停止。 – ninjalj 2014-09-30 00:51:32

+0

這意味着bash會解析標題嗎?好的非常感謝:) – 2014-09-30 01:00:49

+0

@JohnDoyle:什麼「標題」? Bash解析某些環境變量的內容。 – 2014-09-30 02:33:23

相關問題