iT邦幫忙

2026 iThome 鐵人賽

DAY 18
0
Claude AI

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

Metasploitable2 全攻略回顧:漏洞地圖

  • 分享至 

  • xImage
  •  

這篇不講新的漏洞。我們停下來,回頭看看走過的路:哪些是真正重要的觀念?這些漏洞之間有什麼關聯?如果今天從頭來過,該怎麼有系統地攻擊一台機器?

這篇是整個 Metasploitable2 系列的收尾,也是銜接下一階段的橋樑。

Metasploitable2 漏洞地圖

Metasploitable2(192.168.145.132)
│
├── 網路服務層(直接攻擊開放的 port)
│   │
│   ├── Port 21  - FTP
│   │   └── vsftpd 2.3.4 後門(第 1 篇)
│   │       → 供應鏈攻擊,輸入特定使用者名稱觸發 → root shell
│   │
│   ├── Port 22  - SSH
│   │   └── 弱密碼 msfadmin:msfadmin
│   │       → 可直接登入,配合 sudo 提權
│   │
│   ├── Port 139/445 - Samba
│   │   └── usermap_script 命令注入(第 2 篇)
│   │       → CVE-2007-2447,在使用者名稱中注入 shell 指令 → root shell
│   │
│   ├── Port 1099 - Java RMI
│   │   └── RMI Registry 反序列化(第 4 篇)
│   │       → 利用 Gadget Chain 執行任意程式碼 → root shell
│   │
│   ├── Port 2049 - NFS
│   │   └── 設定不當 no_root_squash(第 6 篇)
│   │       → 掛載共享目錄 → 寫入 SSH 公鑰 → root SSH 登入
│   │
│   ├── Port 3306 - MySQL
│   │   └── root 空密碼(第 7 篇)
│   │       → 讀取資料、讀寫檔案、但不直接拿 shell
│   │
│   ├── Port 3632 - distcc
│   │   └── 缺乏存取控制 CVE-2004-2687(第 5 篇)
│   │       → 任何人都可以送編譯任務執行指令 → daemon shell
│   │
│   ├── Port 5432 - PostgreSQL
│   │   └── 弱密碼 postgres:postgres(第 7 篇)
│   │       → 讀取資料、用 COPY 讀寫檔案
│   │
│   ├── Port 6667 - IRC
│   │   └── UnrealIRCd 3.2.8.1 後門(第 3 篇)
│   │       → 供應鏈攻擊,特定前綴觸發指令執行 → root shell
│   │
│   └── Port 8180 - Tomcat
│       └── Manager 弱密碼 tomcat:tomcat(第 8 篇)
│           → 上傳 WAR WebShell → tomcat55 shell → 需提權
│
├── Web 應用層(攻擊 HTTP 上的應用程式)
│   │
│   ├── /dvwa/ - DVWA
│   │   └── SQL Injection Low/Medium/High(第 9 篇)
│   │       → 字串串接漏洞 → UNION SELECT 提取帳密
│   │       → Low:直接注入
│   │       → Medium:數字型注入 + Burp 攔截
│   │       → High:# 註解 LIMIT 1
│   │       → Impossible:參數化查詢(正確寫法)
│   │
│   └── /mutillidae/ - Mutillidae
│       ├── Reflected XSS(第 10 篇)
│       │   → <script>alert(document.cookie)</script> 竊取 cookie
│       ├── Stored XSS(第 10 篇)
│       │   → 留言板存入惡意腳本,所有訪客中招
│       └── Command Injection(第 10 篇)
│           → DNS Lookup 輸入框注入系統指令 → www-data shell
│
└── 提權(拿到 shell 之後)(第 11 篇)
    │
    ├── SUID - nmap --interactive → !sh → root(最快)
    ├── sudo - msfadmin sudo su → root
    ├── Kernel Exploit - Linux 2.6.24 已知漏洞
    ├── Cron Job - 修改 root 定時腳本
    ├── 密碼挖掘 - 設定檔、bash_history、SSH key
    └── /etc/passwd - 可寫則直接加 root 使用者

攻擊的完整流程(Kill Chain)

回顧整個系列,每一篇都對應到滲透測試的某個階段:

┌─────────────────────────────────────────────────────────────────┐
│                    滲透測試流程                                 │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  1. 偵察(Reconnaissance)                                     │
│     │  nmap -sV -sC -p- <靶機IP>                               │
│     │  → 發現開放的 port 和服務版本                            │
│     │  → 每一篇的起點都是 nmap                                 │
│     │                                                           │
│  2. 漏洞識別(Vulnerability Identification)                    │
│     │  → searchsploit、search(Metasploit)                    │
│     │  → 查 CVE 資料庫                                         │
│     │  → 嘗試預設/弱密碼                                       │
│     │                                                           │
│  3. 漏洞利用(Exploitation)                                    │
│     │  → Metasploit exploit(第 1-5 篇)                       │
│     │  → 手動利用:mount、mysql、curl(第 6-8 篇)             │
│     │  → Web 注入:SQL、XSS、Command(第 9-10 篇)            │
│     │                                                           │
│  4. 提權(Privilege Escalation)                                │
│     │  → SUID、sudo、kernel exploit(第 11 篇)               │
│     │                                                           │
│  5. 後滲透(Post-Exploitation)                                 │
│     │  → 資訊收集、橫向移動、持久化                            │
│     │  → 這部分我們沒有深入,留給進階學習                      │
│     │                                                           │
│  6. 報告撰寫(沒有做)                                                   │
│     │  → 把發現的漏洞、影響、修復建議整理成報告                │
│     │  → 我們的每篇文章就是一份小型報告                        │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

防禦是多層的

沒有單一的防禦措施可以擋住所有攻擊:

  防火牆     → 擋不住合法 port 上的攻擊(Web 漏洞)
  WAF        → 擋不住新的繞過手法
  強密碼     → 擋不住軟體漏洞
  更新軟體   → 擋不住設定不當
  安全設定   → 擋不住供應鏈攻擊

  所以需要 Defense in Depth(縱深防禦):
    每一層都假設其他層會被突破
    每一層都獨立提供保護

偵察決定一切

每一篇的開頭都是 nmap。
不是因為它是教學套路,而是因為:

  不知道目標跑了什麼服務 → 不知道能攻擊什麼
  不知道服務的版本       → 不知道有什麼漏洞
  不知道有什麼漏洞       → 只能盲猜

  偵察做得好 → 攻擊路徑自然浮現
  偵察做不好 → 浪費時間在不存在的漏洞上

回顧這趟旅程,最重要的不是記住每個漏洞的具體指令,而是理解三個核心觀念:

  1. 偵察是基礎:你不知道的東西,你就攻擊不了
  2. 漏洞的本質是信任:信任了不該信任的輸入、信任了不該信任的設定、信任了不該信任的軟體
  3. 防禦是多層的:沒有銀彈,只有一層又一層的保護

上一篇
Metasploitable2 提權技巧總整理
下一篇
Metasploitable2 vs Metasploitable3:兩代靶機的差異
系列文
打靶機 30 天:從 Metasploitable2 到 3 的滲透測試學習筆記 共 21 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言