# VulnHub: NullByte
###### tags: `security`
> VM image: https://www.vulnhub.com/entry/nullbyte-1,126/
> Goal: 查看 /root/proof.txt
- 先找到 target IP

- 用 nmap 指令掃描 port, 看哪些 port 是開的 (nmap -v -A 192.168.100.12):可以看到 port 80, 111, 777 是打開的

- 因為 port 80 是在做 http service, 所以用瀏覽器輸入 url 192.168.100.12 查看, 觀察網頁元素沒有找到線索, 把圖片下載下來掃, 可以知道是一張 GIF 格式的圖片, 下 exiftool 指令來觀察這張圖片的 metadata, 在 comment 的欄位找到看起來可疑的資訊


- 把在 url 後面塞 /kzMb5nVYJw, 可以發現跳轉到另一個頁面, 要我們輸入 key, 嘗試了幾個 SQL injection 沒有成功, 看到提示說 "和 mysql 無關, 密碼並不複雜"

- 所以改用 hydra 和字典 rockyou.txt 來暴力破解, 可以得到 key 是 "elite"


- 輸入 key "elite" 後, 出現有 Enter username 的欄位, 直接按 enter, 出現以下畫面, 看起來是資料庫的 usernames

- 因此用 sqlmap 指令來把資料庫的資料洩漏出來 `$ sqlmap -u http://192.168.100.12/kzMb5nVYJw/420search.php?usrtosearch= --dump-all | less`
- 直接 dump 全部, 可以找到帳號名稱 ramses, 密碼是一串可疑字串 "YzZkNmJkN2ViZjgwNmY0M2M3NmFjYzM2ODE3MDNiODE", 把此字串用 base64 解碼後, 得到 "c6d6bd7ebf806f43c76acc3681703b81"


- 用 online 的 hash password cracker 解出密碼是 omega

- 得到帳密後 (帳號:ramses, 密碼:omega), 就可以用 ssh 指令連到 port 777

- 目標是看到 /root/proof.txt 的內容, 先觀察 directory 結構, 發現 root 資料夾我們沒有權限, 先去找 SUID program

- 找到 ./var/www/backup/procwatch 這個檔案, 執行看看, 發現是在查看現在執行哪些 process, 類似 ps 指令

- 剩下就是 abuse SUID 來提權, 為了能夠執行 shell, 新增一個叫 ps 的檔案, 但把裡面內容偷改成 /bin/sh, 並且修改環境變數, 強迫先解析成當前的目錄, 即 export PATH=\$PWD:\$PATH, 接著再執行 ./procwatch, 就可以得到 root 權限執行 shell
```
$ echo "/bin/sh" > ps
$ chmod +x ps
$ export PATH=$PWD:$PATH
$ ./procwatch
```
- 下 cat 指令, 成功看到 /root/proof.txt 檔案內容!

