iT邦幫忙

2026 iThome 鐵人賽

DAY 26
0
Claude AI

打靶機 30 天:從 Metasploitable2 到 3 的滲透測試學習筆記系列 第 26 篇

M3 全破心得:最後一哩路是怎麼打通的

  • 分享至 

  • xImage
  •  

最後幾個不是「更難的漏洞」,而是需要不同的思維方式。這篇就是講那個轉變——從「找 exploit → 一鍵打」到「把手上的碎片拼成一條通路」。

攻擊順序還原

先把 13 個入口按照實際攻擊順序排出來,標記難度變化:

攻擊順序與耗時(估計)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

第一梯隊:一鍵到手(共 ~40 min)
  #1  Continuum      MSF → 直接 root           10 min
  #2  Elasticsearch  MSF → SYSTEM               10 min
  #3  UnrealIRCd     MSF → shell → overlayfs    10 min
  #4  Tomcat         MSF → SYSTEM               10 min
  ── 此時心態:「MS3 好像也沒那麼難嘛」 ──

第二梯隊:需要動手(共 ~100 min)
  #5  WAMPSERVER     curl PUT → webshell         15 min
  #6  Java RMI       MSF → LOCAL SERVICE         10 min
  #7  FTP 爆破       hydra → 情報收集            15 min
  #8  IIS 菜刀       FTP 發現 → webshell         20 min
  #9  Samba          列舉 → 上傳 webshell        40 min ← 需要設 smbpasswd
  ── 此時心態:「開始要想了,但還行」 ──

第三梯隊:最後一哩路(共 ~5 hr)
  #10 Jenkins+JP     3 次卡關 → 35 min 除錯       60 min
  #11 GlassFish      SSL 死路 → autodeploy 繞路   50 min
  #12 Rails+Docker   localhost 限制 + docker 提權  60 min
  #13 MySQL→Drupal   7 步攻擊鏈                   90 min
  #14 CUPS           ❌ 確認不可打                 30 min
  ── 此時心態:「每一步都要想,但越來越知道怎麼想」 ──

第三梯隊每個都值得單獨說。


最後一哩路 #1:Jenkins → JuicyPotato

這是 Windows 端最曲折的一條路,35 分鐘內連續撞牆三次。

為什麼難

不是漏洞難找——Jenkins Script Console 無需認證,一眼就看到。難的是拿到低權限 shell 之後的每一步都有障礙:

Jenkins 攻擊的三連撞牆:

  撞牆 1:Groovy system() 只回 true/false
  ─────────────────────────────────────────
  你以為 system('whoami') 會回 "LOCAL SERVICE"
  實際回了一個 true → 懵

  解法:改用反引號 `whoami` 取得輸出

  撞牆 2:certutil 寫不進 C:\Windows\Temp
  ─────────────────────────────────────────
  LOCAL SERVICE ≠ SYSTEM
  Windows ACL 不給寫 → Access Denied

  解法:改寫到 C:\Users\Public + Groovy Java API 下載

  撞牆 3:JuicyPotato reverse shell 被防火牆擋
  ─────────────────────────────────────────
  JuicyPotato 執行成功了,但反向 shell 出不去

  解法:不做 reverse shell → 改用 net user 新增帳號
        → evil-winrm 正面登入

這條路教我什麼

每次撞牆的解法都是同一個模式:目標不變,方法換掉。

想看 whoami 輸出 → system() 不行就用反引號。想下載檔案 → certutil 不行就用 Java API。想拿互動式 shell → reverse shell 不行就新增帳號正面登入。

三次撞牆,三次用不同方法做同一件事。到第三次的時候,這個思維已經變成反射了。


最後一哩路 #2:GlassFish autodeploy
為什麼難

SSL 憑證在 2023 年過期,管理介面完全癱瘓。所有正規的管理工具(asadmin、Web Console、REST API)全走 HTTPS,全報 CertificateExpiredException。

這個卡關差點讓我把 GlassFish 標成「不可攻破」。

轉折點

問了一個好問題:我要的是「登入管理介面」還是「讓 GlassFish 執行我的 WAR」?

管理介面只是部署 WAR 的途徑之一。GlassFish 的 autodeploy 目錄不需要登入——只要把 WAR 丟進去,它就會自動部署。

死路                         活路
────                         ────
asadmin deploy ──┐           evil-winrm(已有 session)
Web Console ─────┤ SSL 過期        │
REST API ────────┘           upload shell.war
                             cmd /c move → autodeploy/
                                   │
                             GlassFish 自動部署 → webshell ✓

這條路教我什麼

正門鎖了不代表房子進不去。 而且這個突破有一個前提——我手上已經有 Elasticsearch 打下來的 SYSTEM 權限 evil-winrm session。最後一哩路經常需要借用前面已拿到的資源。


最後一哩路 #3:Rails Web Console + Docker Group
為什麼難

兩層限制疊在一起:

  1. Rails Web Console 只允許 localhost 連線
  2. chewbacca 是普通使用者,沒有 sudo

轉折點

第一層用 SSH 繞過(vagrant:vagrant 登入後從 127.0.0.1 curl)。第二層的答案藏在 id 輸出裡:

uid=1124(chewbacca) gid=100(users) groups=100(users),999(docker)
                                                          ^^^^^^

docker group = 可以啟動容器 = 可以掛載主機根目錄 = 可以寫 /etc/sudoers = root。

docker run -v /:/mnt --rm ubuntu bash -c \
  'echo "chewbacca ALL=(ALL) NOPASSWD:ALL" >> /mnt/etc/sudoers'
sudo bash
# root

這條路教我什麼

兩件事:

  1. SSH 帳號的價值遠超「登入」本身——它是繞過 localhost 限制的萬能鑰匙
  2. id 輸出的每個欄位都要讀——docker group 就在那裡,但你第一次看 id 的時候很容易掃過去

最後一哩路 #4:MySQL → Drupal 七步鏈

這是整個 MS3 最長的攻擊鏈,也是最能代表「最後一哩路」精神的一個。

七步拆解

Step 1  payroll_app.php 原始碼 → MySQL 密碼 'sploitme'
   │    (情報收集)
   ▼
Step 2  MySQL 只聽 127.0.0.1 → SSH 隧道繞過
   │    ssh -L 33306:127.0.0.1:3306 vagrant@target
   ▼
Step 3  連上 MySQL → 找到 Drupal 資料庫
   │    (資料庫操作)
   ▼
Step 4  用 PHP 生成 Drupal 格式的密碼雜湊
   │    (需要理解 Drupal 的 phpass 格式)
   ▼
Step 5  UPDATE drupal.users 改掉 admin 密碼
   │    (資料庫寫入)
   ▼
Step 6  登入 Drupal → 啟用 PHP Filter → 寫惡意頁面
   │    (CMS 後台操作)
   ▼
Step 7  curl 觸發 → www-data shell → overlayfs → root
        (提權)


上一篇
M3 卡關除錯:回頭檢視掃描結果找突破口
下一篇
Metasploit Framework 使用心法整理
系列文
打靶機 30 天:從 Metasploitable2 到 3 的滲透測試學習筆記 共 27 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言