中國長亭科技公司的研究人員發現 ()在 ,Java Servlet、JavaServer Pages、Java Expression Language 和 Java WebSocket 技術的開源實作。此漏洞的代號為 Ghostcat,嚴重程度為嚴重(CVSS 9.8)。在預設配置下,此問題允許透過向網路連接埠 8009 發送請求來讀取 Web 應用程式目錄中任何檔案的內容,包括帶有設定和應用程式原始碼文字的檔案。
該漏洞還允許將其他檔案匯入應用程式程式碼,如果應用程式允許將檔案上傳到伺服器,則允許在伺服器上執行程式碼(例如,攻擊者可以透過圖像上傳表單將 JSP 腳本作為圖像上傳)。可以透過向具有 AJP 處理程序的網路連接埠發送請求來執行攻擊。根據初步統計, 超過 1.2 萬台主機透過 AJP 協定接受請求。
該漏洞存在於 AJP 協定中,並且 實施錯誤。除了透過 HTTP(連接埠 8080)接受連線之外,Apache Tomcat 預設允許透過 AJP 協定存取 Web 應用程式(,連接埠 8009),它是 HTTP 的效能最佳化的二進位類似物,通常用於建立 Tomcat 伺服器叢集或加快在反向代理或負載平衡器上與 Tomcat 的交互。
AJP提供了存取伺服器檔案的內建函數,可以用來取得不外洩的檔案。 AJP 應該只能由受信任的伺服器訪問,但實際上,Tomcat 的預設配置在所有網路介面上啟動了處理程序,並在沒有身份驗證的情況下接受請求。可以存取 Web 應用程式的任何文件,包括 WEB-INF、META-INF 的內容以及透過 ServletContext.getResourceAsStream() 呼叫傳回的任何其他目錄的內容。 AJP 還允許將 Web 應用程式可存取目錄中的任何檔案用作 JSP 腳本。
自從 13 年前 Tomcat 6.x 分支發布以來,這個問題就一直存在。除了 Tomcat 本身之外,問題 以及使用它的產品,例如 Red Hat JBoss Web 伺服器(JWS)、JBoss 企業應用平台(EAP)以及使用 。類似漏洞(CVE-2020-1745) 在網路伺服器中 ,用於Wildfly應用伺服器。在 JBoss 和 Wildfly 中,AJP 協定僅在 domain.xml 中的 standalone-full-ha.xml、standalone-ha.xml 和 ha/full-ha 設定檔中預設為啟用。在 Spring Boot 中,AJP 支援預設是停用的。目前,不同的小組已經準備了十多個漏洞利用的工作範例(
,
,
,
,
,
,
,
,
,
,
).
該漏洞已在 Tomcat 版本中修復。 , и (維護 6.x 分支 )。您可以在以下頁面上追蹤發行版中更新的出現情況: , , , , , 。解決方法是,如果不需要,您可以停用 Tomcat AJP Connector 服務(將監聽套接字綁定到 localhost 或註解掉 Connector port =「8009」的行),或者 如果該服務用於基於 mod_jk 和 mod_proxy_ajp 與其他伺服器和代理進行交互,則使用「secret」和「address」屬性進行身份驗證存取(mod_cluster 不支援身份驗證)。
來源: opennet.ru
