一次PwnLab挑戰的技術解析
這是一個boot2root挑戰,叫做Pwnlab。我門用vbox運行Pwnlab,並用nmap掃描了下,掃描結果如下:
我們可以看到開放了80埠,果不其然運行著一個web應用。
這個應用程序包含一個登陸頁面,主頁和上傳頁面。我嘗試瀏覽robots.txt文件,然而並不存在。所以我們使用dirb工具來枚舉存在的目錄。
我們打開那個config.php,頁面卻是一片空白。
對網站進行一陣掃描後,找到一個本地文件包含漏洞,通過php filter的方式加以利用。試著讀取index.php的源碼:php://filter/convert.base64-encode/resource=index。
我們可以看到頁面顯示了一段base64編碼後的文字,我們進行解碼看看是什麼內容。
同理,我們讀取config.php文件的內容。
解碼後發現資料庫的帳號密碼。
我們使用mysql客戶端進行連接。
找到用戶表,這個表裡面存放著用戶名和密碼。
密碼一看就是base64編碼後的。很容易解出來。
kent – JWzXuBJJNynmike – SIfdsTEn6Inkane – iSv5Ym2GRon
有了這些憑證之後我們成功登陸了網站,打開上傳頁面。
但是我們上傳php後門時失敗了,頁面提示了錯誤信息。(後綴不允許,請上傳圖片文件)
讓我們看看upload.php文件是怎麼寫的吧。
php://filter/convert.base64-encode/resource=uploadn
解密之後如下圖:
代碼中我們可以看到有一個白名單後綴數組,意味著它將只接受那些白名單的文件格式。另外一個功能是使用getimagesize函數有效地確認上傳文件是否是一個圖像。在這一點上,大部分的上傳方法將會失敗(還有其他的函數可以用來檢查上傳文件的圖像尺寸)。
唯一的方法是上傳一個真實的圖片通過這些驗證而不是繞過檢查。我們上傳一個有GIF頭的php反向shell圖片,後綴是gif。
圖片文件上傳上去了,但是當我們訪問之後,nc沒有接收到任何反向連接。(譯者:如果真收到了那就見鬼了)
此時我又重新讀了下index.php的源碼,發現include會包含$_COOKIE[『lang』]的值。這意味著我們可以設置一個cookie,lang的值為上傳後的圖片路徑。這樣index.php就會去包含這個圖片,執行其中的反向shell代碼。
Nc提示接收到一個連接。將其轉換成互動式的shell,方便運行su。在終端中執行:
echo 「import pty; pty.spawn(『/bin/bash』)」> /tmp/asd.pynpython /tmp/asd.pyn
使用我們從資料庫中收集到的憑證。
居然登陸進去了,我們看看kane用戶目錄下面有什麼東西。有個msgmike文件,運行出錯。顯示嘗試用cat去讀取mike用戶目錄下的msg.txt文件失敗。
我們創建一個cat文件,並設置成可執行文件。
在執行cat命令之前先設置環境變數,執行命令:export PATH=.:$PATH,然後再執行./msgmike文件。
文件執行之後我們有了mike用戶的許可權。我們在mike的用戶目錄下面發現更多的可執行文件,其中一個叫做msg2root。執行msg2root之後,得到了一個root許可權的/bin/sh會話。
我們在root目錄下找到了flag.txt文件。引用:http://hackers2devnull.blogspot.in/2013/05/how-to-shell-server-via-image-upload.html
註:本文參考來源於infosecinstitute
推薦閱讀:
※針對Android設備的開源手機銀行木馬BankBot / Mazain分析
※畫線是預言的自我實現嗎?
※技術分析的目的?
※截止到2016年5月26號,對滬深兩市的大級別波浪應該怎麼劃分?
※如何利用sdclt.exe繞過UAC?
TAG:技术分析 |