VulnHub實(shí)戰(zhàn)靶場(chǎng)Mr-Robot

Vulnhub簡(jiǎn)介
Vulnhub是一個(gè)提供各種漏洞環(huán)境的靶場(chǎng)平臺(tái),供安全愛好者學(xué)習(xí)滲透使用,大部分環(huán)境是做好的虛擬機(jī)鏡像文件,鏡像預(yù)先設(shè)計(jì)了多種漏洞,需要使用VMware或者VirtualBox運(yùn)行。每個(gè)鏡像會(huì)有破解的目標(biāo),大多是Boot2root,從啟動(dòng)虛機(jī)到獲取操作系統(tǒng)的root權(quán)限和查看flag。網(wǎng)址:https://www.vulnhub.com。
靶場(chǎng)說(shuō)明
??? Mr-Robot是一個(gè)難度為中等的Boot2root/CTF挑戰(zhàn),由@sho_luv (Twitter)制作。
描述:
????? 難度等級(jí):中等
????? 操作系統(tǒng)類型:Linux
????? 用戶::root, robot, daemon
?? ???flag目錄:在用戶家目錄中
實(shí)驗(yàn)?zāi)康?/p>
????? 獲取三個(gè)flag.
實(shí)驗(yàn)環(huán)境
靶機(jī):Mr-Robot? IP:192.168.1.28
攻擊機(jī):Kali Linux? IP:192.168.1.26

實(shí)驗(yàn)步驟一
準(zhǔn)備階段
①打開靶機(jī)(Mr-Robot)。
?

②打開攻擊機(jī)(Kali Linux)并確認(rèn)攻擊機(jī)ip。
使用命令ifconfig查看攻擊機(jī)ip為192.168.1.26

?
實(shí)驗(yàn)步驟二
主機(jī)發(fā)現(xiàn)
①輸入命令netdiscover嘗試發(fā)現(xiàn)靶機(jī)ip為192.168.1.28。

?
②輸入命令nmap -sS -p- 192.168.1.28命令掃描靶機(jī)開放端口及服務(wù)。

?
如圖所示分析可知,靶機(jī)關(guān)閉了ssh服務(wù),但是開放了80端口和443端口對(duì)應(yīng)的http和https服務(wù),于是猜測(cè)可以訪問(wèn)對(duì)應(yīng)ip的網(wǎng)站進(jìn)行滲透測(cè)試。
實(shí)驗(yàn)步驟三
前期準(zhǔn)備
①訪問(wèn)對(duì)應(yīng)ip地址的web服務(wù)并依次嘗試其中提供的命令。

?
輸入prepare命令發(fā)現(xiàn)是一個(gè)視頻。?
輸入fsociety命令發(fā)現(xiàn)依然是一個(gè)視頻。?
輸入inform命令發(fā)現(xiàn)是一些圖片和文字。?
輸入question命令發(fā)現(xiàn)是一些圖片。?
輸入wakeup命令發(fā)現(xiàn)是視頻。?
輸入join命令,彈出提示輸入郵箱地址。??
②輸入命令nikto -h 192.168.1.28對(duì)目標(biāo)ip進(jìn)行探測(cè)。

?

發(fā)現(xiàn)了登錄界面/wp-login/可以利用。
③輸入命令dirb http://192.168.1.28掃描目標(biāo)ip存在的目錄。?

?
?

?

?
?
?發(fā)現(xiàn)了可能會(huì)有用的目錄:/readme、/robots.txt、/wp-login等。
④依次訪問(wèn)對(duì)應(yīng)的目錄,尋找有用的信息,發(fā)現(xiàn)第1個(gè)flag、得到爆破用的字典以及發(fā)現(xiàn)登錄界面等。
l? 訪問(wèn)readme目錄
?

l? 訪問(wèn)robots.txt目錄

如圖所示,發(fā)現(xiàn)了第一個(gè)flag以及一個(gè)字典文件,訪問(wèn)key-1-of-3.txt目錄獲得第一個(gè)flag。

?
訪問(wèn)fsocity.dic目錄獲得字典文件。內(nèi)容如下:

?
⑤發(fā)現(xiàn)得到的字典文件很大,猜測(cè)有重復(fù)字符。?
?? 于是使用命令sort fsocity.dic | uniq > dic.txt將字典文件去重復(fù)化并保存為dic.txt文件。去重復(fù)化后的字典大小僅有96.7kb。?
l? 訪問(wèn)wp-login目錄,發(fā)現(xiàn)WordPress登錄界面。

實(shí)驗(yàn)步驟四
進(jìn)一步探索
①使用Burp Suite,利用剛剛得到的字典,分別對(duì)網(wǎng)站登錄的用戶名和密碼進(jìn)行爆破。
l? 開啟Firefox瀏覽器代理127.0.0.1,端口為8080?
l? Burp Suitte捕包后,首先進(jìn)行repeater測(cè)試,看是否可以進(jìn)行爆破。
l? 經(jīng)多次repeater對(duì)比后發(fā)現(xiàn)網(wǎng)站響應(yīng)僅有時(shí)間不同,說(shuō)明可以對(duì)進(jìn)行爆破。
首先使用剛剛?cè)ブ貜?fù)化的字典對(duì)用戶名字段進(jìn)行爆破。
將得到的響應(yīng)結(jié)果按長(zhǎng)度進(jìn)行排序,得到用戶名可能為elliot、Elliot、ELLIOT。

l? 用同樣的方法、同樣的字典對(duì)密碼字段進(jìn)行爆破。結(jié)果如下圖:

?
按長(zhǎng)度排序后發(fā)現(xiàn)密碼可能為ER28-0652。
②使用用戶名和密碼登錄后嘗試?yán)胮hp的反彈shell獲取權(quán)限。修改php-reverse-shell.php文件中的ip地址和端口,并將修改后的代碼替換掉WordPress中editor頁(yè)面的404.php文件。
l? 使用用戶名:elliot,密碼:ER28-0652登陸。?
l? 輸入命令:find / -name php-reverse-shell.php嘗試尋找可以利用的php反彈shell文件。
?


?
將查找到的php-reverse-shell.php文件,修改其中的ip地址為攻擊機(jī)ip:192.168.1.26,保持端口為默認(rèn)8888不變,并將修改后的代碼替換掉WordPress中editor頁(yè)面的404.php文件。
?

點(diǎn)擊Upadte File上傳文件。?
提示上傳成功。?
③在Kali上使用nc監(jiān)聽相應(yīng)的端口,并在瀏覽器中訪問(wèn)修改過(guò)的404.php,得到權(quán)限。
l? 輸入命令nc -lvvp 8888監(jiān)聽8888端口
?

l? 在瀏覽器中訪問(wèn)修改過(guò)的404.php,得到權(quán)限。
?

④得到權(quán)限后,使用cat /etc/passwd查看靶機(jī)中的用戶,發(fā)現(xiàn)有robot這個(gè)用戶,進(jìn)入這個(gè)用戶的目錄。
?

⑤嘗試查看robot用戶下flag的文件,但是發(fā)現(xiàn)沒(méi)有權(quán)限并且是robot的文件。于是查看password.raw-md5文件,并按照提示進(jìn)行md5解密,得到robot用戶的密碼。
l? 使用ls命令查看當(dāng)前用戶下的所有文件,發(fā)現(xiàn)有第二個(gè)flag與另一個(gè)與密碼相關(guān)的文件。嘗試訪問(wèn)key-2-of-3.txt發(fā)現(xiàn)權(quán)限不足,于是查看password.raw-md5文件。
?

l? 使用ls -lar命令發(fā)現(xiàn)這兩個(gè)文件都是robot用戶下的文件,說(shuō)明要想獲得第二個(gè)flag需要切換到robot用戶。
?

l? 將之前得到的md5加密后的密碼使用在線解密工具進(jìn)行解密,得到密碼為a-z的字母表。
⑥使用python -c 'import pty'pty.spawn("/bin/bash")'命令打開終端,使用密碼登陸到robot用戶并獲取第2個(gè)flag。
?

?

①利用可執(zhí)行文件SUID進(jìn)行Linux提權(quán)。使用命令:find / -user root -perm -4000 -print 2>/dev/null 尋找可以利用的命令,發(fā)現(xiàn)了nmap命令。
?

②查詢資料發(fā)現(xiàn)早期版本的Nmap(2.02到5.21)有交互模式,允許用戶執(zhí)行shell命令。于是使用命令nmap -v查看nmap的版本為3.81符合要求。
③使用命令:nmap --interactive,進(jìn)入交互模式,接著使用命令:!sh成功提權(quán)為root用戶。
?

④切換到root目錄下,拿到最后的flag。
