Java和Python這兩種流行的編程語言包含類似的安全漏洞,可以利用這些漏洞發送未經授權的電子郵件并繞過任何防火墻防御。
而且,由于這兩個缺陷仍未修補,黑客可以利用這一優勢設計針對關鍵網絡和基礎設施的潛在網絡攻擊行動。
這些未修補的缺陷實際上存在于Java和Python編程語言處理文件傳輸協議(FTP)鏈接的方式中,它們沒有對用戶名參數進行語法檢查,這導致了研究人員所說的協議注入缺陷。
Java/Python FTP注入用于發送未經授權的SMTP電子郵件

在上周發布的一篇博客文章中,安全研究員亞歷山大·克林克詳細介紹了Java的XML外部實體(XXE)中的FTP協議注入漏洞,該漏洞允許攻擊者在FTP連接請求中注入非FTP惡意命令。
為了演示攻擊,Alexander演示了如何在FTP連接嘗試中通過SMTP(簡單郵件傳輸協議)發送未經授權的電子郵件,即使FTP連接失敗,因為FTP服務器確實支持身份驗證,但不檢查用戶名中是否存在回車符(CR)或換行符(LF)。
Alexander總結道:“在這樣一種情況下,這種攻擊尤其有趣,在這種情況下,你可以從進行XML解析的機器上訪問(不受限制,甚至可能沒有垃圾郵件或惡意軟件過濾)內部郵件服務器”。
Java/Python FTP注入允許繞過防火墻
然而,兩天后,在另一份安全咨詢中,Blindspot security的安全研究員蒂莫西·摩根(Timothy Morgan)提出了他的發現,顯示了更具威脅性的攻擊場景,Java和Python中的FTP URL處理程序都可以用來繞過防火墻。
Morgan說,這種FTP協議注入漏洞可能被用來欺騙受害者的防火墻,使其在其“高”端口(從1024到65535)上接受從網絡到易受攻擊主機系統的TCP連接。
除了FTP協議注入攻擊,FTP協議中還有一個十年前的安全問題,稱為經典模式FTP;客戶端-服務器FTP交互的不安全機制,但默認情況下,許多防火墻供應商仍然支持它。
啟動經典模式FTP連接時,防火墻會臨時打開一個端口–;通常介于1024和65535之間–;在端口命令中指定,這會帶來安全風險。
利用Java和Python中的FTP協議注入問題,知道目標主機內部IP地址的攻擊者可以啟動經典模式FTP連接,攻擊者可以將其用于邪惡目的。
Morgan已確定,攻擊者只需三次請求即可在目標防火墻中打開一個端口:
- 識別受害者的內部IP地址–;這要求攻擊者“發送一個URL,查看客戶端的行為,然后嘗試另一個,直到攻擊成功”。
- 確定數據包對齊,并確保在正確的時刻注入端口命令,從而使攻擊有效。
- 利用漏洞。
每個額外的請求都可以用來打開另一個TCP端口。
易于利用的協議注入漏洞
然而,研究人員警告稱,他的漏洞可能被用于中間人(MitM)攻擊、服務器端請求偽造(SSRF)、XEE攻擊等–;一旦繞過防火墻,桌面主機即使沒有安裝Java,也可能受到攻擊。
攻擊者只需說服受害者訪問安裝在服務器上的惡意Java或Python應用程序即可繞過整個防火墻。
Morgan說:“如果桌面用戶在安裝Java時被說服訪問惡意網站,即使Java小程序被禁用,他們仍然可能觸發Java Web Start解析JNLP(Java網絡啟動協議)文件”。“這些文件可能包含觸發此錯誤的惡意FTP URL”。
“還要注意的是,由于Java在向用戶提供任何安全警告之前解析JNLP文件,因此攻擊可以完全成功,而無需向用戶提供任何指示(除非瀏覽器本身警告用戶Java Web Start正在啟動)。”
根據Morgan的說法,Python的urllib2和urllib庫中也存在一個幾乎相同的漏洞,盡管“這種注入似乎僅限于通過URL中指定的目錄名進行的攻擊”
協議注入漏洞仍未修補
Morgan表示,他的公司于2016年1月和2016年11月分別向Python團隊和Oracle報告了FTP協議注入漏洞,但兩家公司均未發布任何更新來解決該問題。
Morgan開發了一個概念驗證(PoC)漏洞,但目前正在推遲發布他的漏洞,直到Oracle和Python對披露和發布補丁做出回應。
Morgan的漏洞已經在Palo Alto Networks和Cisco ASA防火墻上成功測試,不過研究人員認為許多商用防火墻也容易受到FTP流注入攻擊。
因此,在補丁可用之前,Morgan建議用戶卸載桌面和瀏覽器上的Java,并在所有防火墻上禁用對“經典模式”FTP的支持。
FreeBuf
Rot5pider安全團隊
安全圈
安全內參
E安全
關鍵基礎設施安全應急響應中心
E安全
FreeBuf
FreeBuf
E安全
安全圈
一顆小胡椒