VulnHub是一個面向所有人開放的安全靶場,裡面有很多安全環境,只要下載相關映像檔,在相關虛擬機器上面執行就可以練習相關靶場了。裡面設計了好多關,如果有耐心一定可以到達峰頂。許多考OSCP人員,也會利用Vulnhub靶場進行刷題。我們下載了一個經典漏洞靶場,給大家進行演示,希望讓初學者知道滲透測試的套路,可以更快的成長。
該題從首頁網址判斷存在個Local File Inclusion,並可直接查看該網站Source Code,且該主機對外開放3306 Port,於是讀取Config.php檔案取得資料庫訊息後,嘗試登入MySQL並查看該會員密碼,接著繞過Upload上傳檔案並繞過白名單,上傳Reverse Shell,伺服器內的程式存在Command Injection,經一番努力下,最後成功讀取到根目錄下的flag。
靶機:PwnLab: init
首先,先查詢自己本地的IP,可以透過 ifconfig查詢。
eth0 192.168.43.119 這是本地IP ,同時也是攻擊者端
透過nmap -sP ,使用Ping方式快速掃描該內網網段主機,並找到該標的為192.168.43.112
接著透過 nmap -A 完整掃描該標的主機,並透過 -p 0-65535 掃描該主機的端口
結果為開啟了 80 port、111 port、3306 port (MySQL)、42185 port
讓我們訪問網站
http://192.168.43.112/
http://192.168.43.112/?page=login
從網址直覺的可以判斷這似乎存在LFI漏洞,只要簡單測試下就知道了
http://192.168.43.112/?page=php://filter/convert.base64-encode/resource=index
透過LFI解析出來的是base64編碼,所以我們需要再將其內容decode回去,才會還原真實內容
接著我們繼續將所有頁面透過LFI來讀取source code
http://192.168.43.112/?page=php://filter/convert.base64-encode/resource=login
看到一個令人感興趣的內容,config.php,這裡面一定存在著秘密
http://192.168.43.112/?page=php://filter/convert.base64-encode/resource=config
Boom!MySQL的帳號密碼出來了!還記得前面我們透過nmap掃描到3306端口嗎?
記錄下來,我們在之後可以用到。
http://192.168.43.112/?page=php://filter/convert.base64-encode/resource=upload
這邊的upload上傳檔案限制了一些,從Code裡邊可以看到白名單,jpg、jpeg、gif、png
在第31行是針對這個檔案MIME是否為image/xxx
由於上傳檔案需要先登入才能上傳,但沒有帳號,於是我們嘗試登入到MySQL查看下,
#mysql -h 192.168.43.112 -uroot -p H4u%QJ_H99
從users表可以看到有三組帳號密碼,而密碼透過base64編碼過,於是簡單decode就成。
將資料庫的帳號密碼整理下。
登入該網站,登入後並寫一個Reverse Shell反彈
需要注意的是,因為上傳有被白名單限制,所以將php副檔名更改為gif或png等
然後偽造成圖片,可以在php前面加個GIF89;
接著使用Kali 監聽 4444端口,當我們上傳Reverse Shell後,檔案名稱為 md5
而在前面,我們透過LFI查看index.php,Source code有段
<?php
//Multilingual. Not implemented yet.
//setcookie("lang","en.lang.php");
if (isset($_COOKIE['lang']))
{
include("lang/".$_COOKIE['lang']);
}
於是我們透過Burp 將Cookie 改成 lang:../upload/圖片.gif
送出後,即可成功監聽到shell
成功取得shell,透過whoami查看下,用戶是www-data
接著可以查看下幾個目錄,如/home /var /etc /usr /tmp等,查找下看有沒有可以提權的資訊。
並嘗試將資料庫所取得的用戶也登入查看下 kent、mike、kane
我們在/home目錄下看到有四個目錄,分別是 john kane kent mike
可惜因權限關係,無法查看其他用戶的目錄,而在kent用戶下也沒啥資訊,於是我們轉戰到kane查看
在kane用戶下的kane目錄裡邊發現到一個檔案,msgmike,於是我們直接執行看看
無法直接執行,因配置關係,所以我們要設定一下PATH
touch cat
echo /bin/sh > cat
chmod +x cat
export PATH=/tmp:$PATH
接下來執行msgmike,經嘗試一番後發現是個可以下Command Injection的程式,且權限是mike
這就有趣了,於是我們可以透過該程式讓我們訪問mike目錄
我們先進入交互式操作,方便我們下指令
python -c 'import pty; pty.spawn("/bin/bash")'
在mike目錄下,發現到msg2root,
當然這也是個可以Command Injection的程式,且權限是root,那就更好辦了,我們可以透過該程式讓我們查找根目錄下的flag。
透過該Command Injection 直接
;ls /root
;cat /root/flag.txt
後發現沒反應,判斷可能是cat壞掉了
正當思考怎麼辦時,發現可以直接透過vi來編輯讀取該flag ..XD
結束。