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