發現該漏洞的程序員說:當你找到進入郵件服務器的路時,事情就變得好玩了。
Java & Python有個可以用來翻越防火墻的漏洞。因為倆漏洞都還沒被補上,或許今兒是催促你公司開發人員的好日子。
該Java漏洞意味著,通過其FTP實現進行的協議注入,可欺騙防火墻放行互聯網TCP連接接入內部主機。
亞歷山大·科林克和 Blindspot Security 公司的蒂莫西·摩根,對這兩個漏洞有進一步的闡述。
科林克的發現是:Java的 XMLeXternal Entity (XEE)錯誤處理了FTP連接,因為它沒有對Java傳到服務器的用戶名進行語法檢查。
特別是,cr和lf應該是拒絕接受的,但卻被放行,讓非FTP命令得以注入到連接請求中??屏挚说淖C明展示了如何在FTP連接嘗試(即便連接失敗)中發送SMTP電子郵件。
EHLO a
RCPT TO:
DATA
From: [email protected]
Subject: test
test!
.
QUIT
越來越糟
科林克認為,該攻擊在特定場景下尤其有趣——從執行XML解析的主機上訪問(不受限的,甚至沒有垃圾郵件或惡意軟件過濾的)內部郵件服務器時。
摩根的貢獻,則是實現了用同樣的動作經過幾步過程突破防火墻高位端口:
1. 獲取一個內部IP地址——這很簡單:發個URL,看看客戶端是怎么動作的,然后嘗試另一個,直到攻擊成功。
2. 包對齊——這就是該攻擊成功的秘訣了。FTP是同步的,意味著兩邊都在等待自己發出的每一條命令的響應。如果這里出錯了,攻擊失??!
摩根稱他將暫時不公布概念驗證腳本,先看看甲骨文(和Python開發者)是怎么回應本披露的。
不過,他設想自己的漏洞利用也可用于中間人攻擊、服務器端請求偽造、XEE攻擊等等——一旦越過防火墻,桌面主機即便沒有安裝Java也能被攻擊了。
Python同樣脆弱,其urllib和urllib2庫就是入手點。不過,該注入似乎僅限于在URL中指定目錄名的攻擊。
至于緩解辦法,摩根建議:在桌面和瀏覽器中禁用Java;在所有防火墻上禁用“經典模式”的FTP。