駭客入侵 Web 伺服器常用五大經典路徑,理解原理才能建立有效防禦:
1. SQL Injection (SQLi) → 取得管理帳密 → 後台上傳 WebShell
- 目標:ASP/PHP/JSP + Access/MSSQL/MySQL,參數未參數化。
- 流程:
1. 尋找注入點 (報錯/盲注/時間盲注)
2. 列舉資料庫結構、導出 admin 表帳密雜湊
3. 破解雜湊 (彩虹表/GPU 破解) 或直接利用已知弱密碼
4. 猜測後台路徑 (/admin, /manage, /cms, /backend)
5. 登入後台 → 尋找上傳功能 → 上傳 .asp/.php/.jsp WebShell
6. 連線 WebShell (菜刀/蟻劍/Godzilla/Behinder) → 完全控制
- 防禦:參數化查詢/ORM、WAF (ModSecurity CRS)、後台強制 MFA、上傳目錄禁用執行權限、檔案型態驗證 (Magic Bytes/MIME)、隨機化後台路徑。
2. 檔案上傳繞過 → 直接植入 WebShell
- 繞過技術:
• 副檔名大小寫混淆 (.Asp, .pHp)
• 雙重副檔名 (shell.asp.jpg)
• .htaccess / web.config 重寫規則 (AddType application/x-httpd-php .jpg)
• Content-Type 偽造 (image/jpeg 實為 PHP)
• Magic Bytes 偽造 (GIF89a 頭 + PHP 代碼)
• 解析漏洞 (IIS 6.0 .asp;.jpg, Nginx .php.xxx, Apache AddHandler)
• 競態條件 (TOCTOU:上傳 → 重命名 → 執行)
- 防禦:
1. 上傳目錄獨立網域/子網域、禁用腳本執行 (IIS: Handler Mappings 移除; Nginx: location ~ \.php$ { deny all; })
2. 檔名重命名為 UUID + 無副檔名、儲存於非 Web 目錄
3. 伺服器端驗證 Magic Bytes (file 命令/libmagic)、圖片重壓縮 (ImageMagick/GD 破壞殘留代碼)
4. WAF 規則攔截雙重副檔名、異常 Content-Type
3. 後台資料庫備份/還原功能濫用 → 寫入 WebShell
- 原理:後台備份功能允許指定備份路徑/檔名,未過濾路徑遍歷 (
../) 或副檔名。
攻擊者上傳 shell.asp.jpg → 呼叫還原功能將 shell.asp.jpg 還原為 shell.asp 至 Web 目錄。
- 防禦:
• 移除/停用前台備份還原功能,改由離線排程執行
• 路徑參數白名單驗證、禁用 ..、限制副檔名
• 備份檔案儲存於非 Web 可存取路徑
4. 旁站攻擊 → 橫向移動至目標站點
- 流程:
1. 反查同 IP 虛擬主機 (Bing ip:xxx.xxx.xxx.xxx、Censys、Shodan、FOFA)
2. 找出同伺服器弱點站點 (舊版 CMS、未修補插件、測試頁面)
3. 攻破弱點站點取得 WebShell/系統權限
4. 利用檔案系統權限讀寫目標站點目錄、竊取設定檔、植入後門
- 防禦:
• 站點隔離:不同站點使用不同系統帳號、PHP-FPM Pool、容器/VM 隔離
• open_basedir / disable_functions 限制跨目錄存取
• 定期掃描同 IP 站點漏洞、統一修補週期
5. sa (sysadmin) 權限 SQL 注入 → 系統級提權
- 前提:MSSQL 連線帳號為 sa、啟用
xp_cmdshell、防火牆開放 3389/445。
- 流程:
1. 尋找 sa 權限注入點
2. EXEC sp_configure 'show advanced options',1; RECONFIGURE; EXEC sp_configure 'xp_cmdshell',1; RECONFIGURE;
3. EXEC xp_cmdshell 'net user hacker P@ssw0rd /add && net localgroup administrators hacker /add'
4. RDP 3389 登入系統、或反向 Shell (nc/powershell) 連回攻擊者 C2
- 防禦:
• 嚴禁 Web 應用使用 sa 連線,最小權限原則 (db_datareader/db_datawriter)
• 永久停用 xp_cmdshell (sp_configure 'xp_cmdshell', 0)
• 防火牆封鎖 3389/445 對外、僅允許管理網段
• 啟用 SQL Server 稽核 (登入失敗、權限異動、xp_cmdshell 執行)
防禦總結:四層防線
- 程式碼層:參數化查詢、輸入驗證、檔案上傳白名單、錯誤訊息不洩露堆疊。
- 伺服器層:WAF、站點隔離、執行權限最小化、模組精簡、定期修補。
- 資料庫層:最小權限帳號、停用危險擴展預存程序、稽核、加密敏感欄位。
- 網路層:WAF/防火牆/微隔離、僅開必要埠、管理介面限制來源 IP、VPN/堡壘機存取。
駭客只需找到一個洞,防禦者必須堵住所有洞。建立纵深防禦,提高攻擊成本至駭客放棄。