Bash遠程代碼執行漏洞分析

來源:互聯網
上載者:User

標籤:style   blog   http   color   io   os   使用   ar   strong   



今日爆出一個Bash的RCE漏洞,威力巨大。看了看老外的分析,覺得有必要寫一寫自己對這個漏洞的理解。

首先,問題起因於一個命令ENV。

原型:

env [OPTION]... [NAME=VALUE]... [COMMAND [ARGS]...]

Man是這麼說的:

Display, set, or remove environment variables,Run a command in a modified environment.

我的理解是使用env命令的key=value,首先會改變環境變數key,如果沒有會臨時建立,注意,這裡是臨時的改變環境變數。然後就把value後面的內容當做命令執行,類似於PHP中的eval。

測試如下:

可以看到,這個命令可以達到的作用是:在臨時修改環境變數的同時,也可以執行命令。

網上流傳的EXP通常會帶有一個User-Agent欄位然後後面跟一個字串。嚴格意義上來說,這裡的User-Agent完全可以使用其他的HTTP欄位進行替換。

注意到,ENV本身不是漏洞的成因,漏洞的本質是代碼注入。

在bash源碼中的處理參數的程式碼片段中:


這段代碼是解析匿名函數的時候使用的,使用匿名函數我們才能達到執行的目的:parse_and_execute。這裡的string是環境變數的value,name是環境變數的鍵值。由於沒有進行過濾就直接傳給temp_string,然後送到parse_and_execute中進行執行了。

也就是說,匿名函數執行完後面本應該結束掉,但是在bash中卻又繼續執行後面的參數了。

比如:TEST=() { :;}; /bin/cat /etc/passwd 

在環境變數匯入到bash的同時,也會執行/bin/cat /etc/passwd。

這和CGI的關係是:


對於CGI指令碼來說,HTTP協議中的“key-value”都會變為shell中的“環境變數=值”。

  • Host (“www.example.com”,as REMOTE_HOST)

  • Header value (“custom-header-value”, as HTTP_CUSTOM in this example)

  • Server protocol (“HTTP/1.1”, as SERVER_PROTOCOL)

而將用戶端資訊匯入到系統內容變數的時候就會用到ENV了。那麼這樣一來,我們就可以通過在用戶端構造攻擊向量去攻擊伺服器了。從CGI對HTTP參數的處理上看,使用哪個欄位都是可以的。

本地測試過程如下:

構造有漏洞的CGI:

訪問:http://10.10.10.132/cgi-bin/test


這裡我也使用User-Agent進行測試:

結果如下,發送請求之後,伺服器會爆出500出錯:


但是這時候echo aaa > /tmp/test確實執行了。

驗證下:


可以看到,伺服器隨便報錯,但是我們的代碼成功執行了。

EXP:

使用nc做個反彈shell就行了,威力挺大吧。

不過這個漏洞可是不好做批量,一種思路就是爬蟲+掃描進行CGI連結的擷取。當然,還有一種比較無腦的,就是------------------------------------直接抓搜尋引擎的。

以上為個人理解,歡迎討論與錯誤指正。





Bash遠程代碼執行漏洞分析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.