vulnhub 是我喜愛的遊樂場之一,上面的每個靶機都是很酷的一個遊戲。要完整找出所有 flag 只是基本任務,實現提權才是終極目標。我並不追求最快奪旗,而是盡可能運用完整攻擊鏈入侵靶機,所以,這篇攻略中,或許某些內容對奪旗無直接幫助,但在應對真實目標時,你應該考慮。
靶機 "JIS-CTF: VulnUpload" 含有 5 個 flag、初級難度,平均耗時 1.5 小時可完成攻擊。你可以從https://www.vulnhub.com/entry/jis-ctf-vulnupload,228/ 取得virtualbox 格式的鏡像,導入後立即可玩:
# JIS 虛擬機為DHCP,我得想法找出它的IP。 nmap 的 -sn 選項用於探測主機存活性:
很快,找到 4 個存活 IP。其中,56.1 為我主系統 IP,56.2 為 DHCP 伺服器,56.5 顯示 localhost-response 為本機(kali),所以,JIS 的 IP 為 192.168.56.6。
拿到 IP 第一要務當然是分析服務。 nmap 的-O、-sV 兩個命令列參數可用於此:
可知,JIS 在22 埠開啟了SSH(OpenSSH 7.2p2)、80 埠開啟HTTP (Apache httpd 2.4.18)等兩個服務。另外,作業系統為 ubuntu。這三個訊息將成為下個階段的主要攻擊面。
針對 SSH 服務,我習慣從弱口令和系統漏洞兩方面進行攻擊。弱口令方面,我用常見用戶名和常見密碼進行暴破,雖然幾率不大:
#短時間跑不完,先放這兒,後續再看。
SSH 服務的系統漏洞查找方面,我推薦 searchsploit 工具。精確搜尋 OpenSSH 7.2p2:
存在使用者名稱可列舉漏洞,剛好,要能找到有效使用者名,有助於暴破 SSH 口令。立即用 EXP 試試:
試過幾次,結果都不一樣,感覺這個 EXP 不可靠。或許是搜尋條件太苛刻,不帶版本號,直接搜尋openssh 看看有無其他漏洞:
其中,有兩個可考慮,依序為本地提權的漏洞、遠端命令執行漏洞。哇,很誘人,不過很遺憾,都用不了。對前者而言,目前沒用任何據點(如webshell),還談不上提權操作,當前只能先放放,後續可能用的上;對後者來說,利用條件非常嚴苛,攻擊者必須拿到forwarded agent-socket 的控制權,而且目標必須SSH 登入攻擊者所控制forwarded agent-socket 的那台機器,才可能讓目標載入指定*.so,實現遠端指令執行。罷了,SSH 系統漏洞暫時就不深入了。
apache 服務看下有無可利用的漏洞:
先前服務偵測時找到的準確版本為apache httpd 2.4.18,那麼只有一個漏洞記憶體洩漏的漏洞,沒多大價值。
這個階段系統漏洞只能分析到這個程度,雖然知道發行套件為ubuntu,但不知道具體版本、系統架構,很難準確的找到可用的作業系統漏洞,所以,沒必要繼續在系統漏洞層面耗時,後續若能拿到webshell,提權時再來深入分析,現在移步web 應用層面。
訪問之前找到的web 連接埠自動重定向到http://192.168.56.6/login.php:
看了下html 源碼,沒啥有價值的資訊;枚舉用戶名也不能;或許可以暴破下弱口令,剛才的SSH 暴破還沒完呢,web 登入暴破還是先放一放,看看有無其他頁面。
大概 2015 年之前,掃 web 端口 – 找 web 後台 – 弱口令登後台 – 上傳一句話,是常見的高成功率的攻擊手法,其中,能否找到後台地址,是成功的關鍵。換言之,我需要發現更多 web 內容。具體而言,我希望找到更多文件、頁面、子目錄,最好能找到源碼打包的敏感文件、後台運維的管理頁面、存放業務邏輯的子目錄,以拓展攻擊面。通常,我習慣結合枚舉和爬蟲兩種方式來發現 web 內容。
枚舉 web 內容的工具很多,其實,你手上的 burp 內建了強大的子目錄枚舉功能,但常被你忽略。造訪http://192.168.56.6/,讓流量過burp 後,立即展示初始網站目錄結構:
透過engagement tools - discover content,啟用子目錄列舉功能:
在枚舉之前,先使用firefox 外掛程式wappalyzer 確認後端語言為php:
簡單設置,讓burp 只枚舉php 類型的頁面,忽略aspx、jsp 等等其他語言,以提高效率:
很快,枚舉出不少新頁面:
你看,比先前多了些頁面和目錄,如,logout .php、server-status/。逐一查看,沒啥有價值的內容。
接下來,我用另一個工具 dirsearch 再次列舉子目錄,與 burp 互補,獲得更多 web 內容。高效率和可設定是dirsearch 的特色,同樣,用--extension 選項設定只列舉php 型別的頁面,忽略aspx、jsp 等等其他語言:
從輸出結果out.txt中查看HTTP 應答成功(200)的頁面有5 個:
依序造訪這幾個頁面且讓流量過burp,網站目錄結構如下:
##子目錄枚舉,大概就到這個程度,接下來,爬取站點。 爬站,還是藉助burp: 很快,爬取完畢,又新增不少頁面: 朋友,玩了這麼久,連個flag 的影子都沒看到?別急,這就來了。在burp 的site map 中搜尋flag 關鍵字,第一個符合項目是http://192.168.56.6/admin_area/: 95214};另外還拿到一組帳號admin/3v1l_H@ck3r,可能是web 的登入帳號、也可能是SSH 的帳號,一會試試看。搜尋 flag 得到的第二個符合項是 http://192.168.56.6/flag/: 得到第二個 flag{8734509128730458630012095}。 四、web 應用漏洞分析 用admin/3v1l_H@ck3r 嘗試登入http://192.168.56.6/login.php: 成功,有個檔案上傳功能,檢查下方是否有任意檔案上傳漏洞。 隨便上傳一個 php 的 webshell 試試看: icesword.php 上傳成功,有任意檔案上傳漏洞,但沒回顯上傳目錄。還記得先前web 內容發現時找到的uploads/、uploaded_files/ 兩目錄麼,嘗試訪問http://192.168.56.6/uploads/icesword.php, 報錯,資源不存在,訪問http://192.168.56.6/uploaded_files /icesword.php,沒報錯但頁面無內容,沒事,至少清楚上傳目錄是uploaded_files/。 我用 msfvenom 產生 MSF 的 php 反彈木馬 msf_private.php:啟動MSF 並監聽,接著造訪http://192.168.56.6/uploaded_files/msf_private.php,立即取得meterpreter 會話:
簡單翻下檔案:
#flag.txt、hint.txt 吸引我的注意。看之,flag.txt 無存取權限;hint.txt 中拿到第三個flag{7645110034526579012345670},以及一個提示訊息,要查看flag.txt 先得找出帳號technawi 的密碼:
接下來,我需要查找使用者technawi 的密碼。我計劃從文件名和文件內容兩方面入手查找與 technawi 相關的資訊。
我用 meterpreter 內建的 search 指令來尋找檔案名稱中含有關鍵字 technawi 的檔案:顯示找不到。奇怪,有 technawi 用戶,那肯定有 /home/technawi/,怎麼會一個都找不到。進 shell 再確認下:
這才對嘛。所以,你看,meterpreter 內建的 search 不可靠。逐一查看,沒發現有價值的內容。
尋找檔案內容中含有關鍵字technawi 的檔案:逐一查看,在/etc/mysql/conf.d/credentials.txt 中找到第四個flag{7845658974123568974185412 },以及一組帳號technawi/3vilH@ksor:
五、登入系統
用帳號technawi/3vilH@ksor 成功登入系統:#再一次查看flag.txt,拿到第五個flag{5473215946785213456975249}:
六、提權
#最開始我就說過,flag 並不是我玩靶機的唯一目標,提權也很有趣。正要查看內核版本準備對應exp 時,朦朧記得在technawi 的home/ 目錄中,看過.sudo_as_admin_successful 文件: ##哇,運氣不錯,這說明technawi 可以用自己的密碼切換為root 使用者:#########就這樣,完成所有flag 蒐集、成功提權! ###以上是JIS-CTF_VulnUpload靶機攻略是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!