Apache Struts 是一個免費的開放原始碼程式開發架構,用來開發 Java 網站應用程式。我們仔細研究了過去 Apache Struts 被發現的幾個遠端程式碼執行 (Remote Code Execution,簡稱 RCE) 漏洞之後發現,歹徒大多使用 Object Graph Navigation Language (OGNL) 這個程式語言。OGNL 之所以很容易讓駭客從遠端執行任意的程式碼,是因為 Apache Struts 在大多數的流程當中都用到這個語言。
最近,一位研究人員在 Apache Struts 2 當中新發現一個關於 OGNL 的遠端程式碼執行漏洞:CVE-2017-5638。此外,一份報告也指出網路上已出現實際的漏洞攻擊案例,我們的研究和監控團隊也見過利用該漏洞的攻擊。
攻擊手法
駭客可以發送一個精心設計的網站請求給含有漏洞的伺服器,就能將一個檔案上傳至使用 Jakarta 外掛模組來處理檔案上傳請求的伺服器。
駭客接著在 Content-Type 標頭當中包含所要執行的指令來讓受害的伺服器執行指令。網路上已經出現示範這項攻擊手法的概念驗證。
漏洞分析
為了深入了解這項漏洞,我們仔細研究了一下該漏洞的修補程式,我們發現廠商在 FileUploadInterceptor.java 當中已放棄使用「LocalizedTextUtil」這個類別。此類別原本是用來在 HTTP 檔案上傳請求失敗時提供錯誤訊息給使用者。 繼續閱讀



