心脏滴血漏洞详解及利用--HeartBleed With OpenSSL
【事件規(guī)則】
OpenSSL“心臟出血”漏洞是一個(gè)非常嚴(yán)重的問(wèn)題。這個(gè)漏洞使攻擊者能夠從內(nèi)存中讀取多達(dá)64 KB的數(shù)據(jù)。也就是說(shuō),只要有這個(gè)漏洞的存在,在無(wú)需任何特權(quán)信息或身份驗(yàn)證的環(huán)境下,我們就可以從我們自己的(測(cè)試機(jī)上)偷來(lái)X.509證書(shū)的私鑰、用戶(hù)名與密碼、聊天工具的消息、電子郵件以及重要的商業(yè)文檔和通信等數(shù)據(jù)。
OpenSSL漏洞分析
最初人們?yōu)榱司W(wǎng)絡(luò)通信安全,就開(kāi)始使用安全協(xié)議進(jìn)行加密通信,SSL(Secure Socket Layer)就是一種安全協(xié)議。隨著開(kāi)源軟件的流行,有人寫(xiě)了一款叫? OpenSSL? 的開(kāi)源程序供大家方便地對(duì)通信進(jìn)行SSL加密,后來(lái)這款軟件便在互聯(lián)網(wǎng)中被廣泛應(yīng)用。我們?cè)跒g覽器地址欄常見(jiàn)的 https 前綴的網(wǎng)址以及那把小鎖圖標(biāo),通常就是指該網(wǎng)站經(jīng)過(guò) SSL 證書(shū)加密。
?
OpenSSL 有一個(gè)叫 Heartbeat (心跳檢測(cè))的拓展,問(wèn)題就出在這個(gè)拓展上,這也是漏洞被命名為“心臟出血”的直接原因。
?
所謂心跳檢測(cè),就是建立一個(gè)? Client Hello 問(wèn)詢(xún)來(lái)檢測(cè)對(duì)方服務(wù)器是不是正常在線(xiàn) ,服務(wù)器發(fā)回 Server hello,表明正常樹(shù)立SSL通訊。就像我們打電話(huà)時(shí)會(huì)問(wèn)對(duì)方 “喂聽(tīng)得到嗎?”一樣。
?
每次問(wèn)詢(xún)都會(huì)附加一個(gè)問(wèn)詢(xún)的字符長(zhǎng)度 pad length,bug 來(lái)了,如果這個(gè) pad length 大于實(shí)際的長(zhǎng)度,服務(wù)器仍是會(huì)回來(lái)相同規(guī)模的字符信息,于是形成了內(nèi)存里信息的越界訪(fǎng)問(wèn)。
?
就這樣,每發(fā)起一個(gè)心跳,服務(wù)器就能泄露一點(diǎn)點(diǎn)數(shù)據(jù)(理論上最多泄露? 64K),這些數(shù)據(jù)里可能包括用戶(hù)的登錄賬號(hào)密碼、電子郵件甚至是加密秘鑰等信息,也可能并沒(méi)有包含這些信息,但攻擊者可以不斷利用 “心跳”來(lái)獲取更多的信息。就這樣,服務(wù)器一點(diǎn)一點(diǎn)泄露越來(lái)越多的信息,就像是心臟慢慢在出血,心臟出血漏洞的名字由此而來(lái)。
?
這里通過(guò)一張圖來(lái)展現(xiàn)一下:
由于互聯(lián)網(wǎng)應(yīng)用最廣泛的安全傳輸方法就是 SSL,而 Open SSL 又是多數(shù) SSL 加密網(wǎng)站使用的開(kāi)源軟件包,所以漏洞影響范圍廣大,一時(shí)間席卷全球各個(gè)互聯(lián)網(wǎng)相關(guān)領(lǐng)域,網(wǎng)銀、在線(xiàn)支付、電商網(wǎng)站、門(mén)戶(hù)網(wǎng)站、電子郵件等無(wú)一幸免。
?
通過(guò)以上分析我們可以看見(jiàn),OpenSSL心臟出血漏洞(heartbleed)的產(chǎn)生主要由于OpenSSL的心跳處理邏輯沒(méi)有檢測(cè)心跳包中的長(zhǎng)度字段是否和后續(xù)字段相吻合導(dǎo)致攻擊者構(gòu)造異常數(shù)據(jù)包,來(lái)直接獲取心跳數(shù)據(jù)所在的內(nèi)存區(qū)域的后續(xù)數(shù)據(jù)。主要特征有:
- heartbleed漏洞主要存在于有心跳機(jī)制的OpenSSL協(xié)議中。
- IANA組織把開(kāi)啟心跳擴(kuò)展機(jī)制的SSL數(shù)據(jù)包type類(lèi)型定義為24(0x18)。
- heartbleed漏洞主要存在于TLS和DTLS兩種協(xié)議中,在含有heartbleed漏洞的OpenSSL協(xié)議中需要開(kāi)啟心跳擴(kuò)展機(jī)制(beartbeat),而含有心跳擴(kuò)展機(jī)制的TLS版本主要包含在0(0x0301),TLSv1.1(0x0302),TLSv1.2(0x0303)三種版本中。
- heartbleed漏洞攻擊主要由于攻擊者構(gòu)造異常的心跳數(shù)據(jù)包,即心跳包中的長(zhǎng)度字段與后續(xù)的數(shù)據(jù)字段不相符合,來(lái)獲取心跳數(shù)據(jù)所在的內(nèi)存區(qū)域的后續(xù)數(shù)據(jù)。
其一般的攻擊流程如下圖所示:
利用該漏洞,攻擊者可以遠(yuǎn)程讀取服務(wù)器內(nèi)存中64K的數(shù)據(jù),獲取內(nèi)存中的敏感信息。
漏洞利用
1)使用shodan搜索引擎搜索站點(diǎn)
2)打開(kāi)Metasploit,啟動(dòng)msf。然后使用 auxiliary/scanner/ssl/openssl_heart_bleed功能。
3)執(zhí)行run命令,運(yùn)行掃描器,查看結(jié)果,可以看到有Heartbeat response with leak的字樣,證明該站存在HeartBleed漏洞
4)開(kāi)啟信息展示,進(jìn)行利用。
4、漏洞修復(fù)
建議升級(jí)openssl。此外,做如下措施。
總結(jié)
以上是生活随笔為你收集整理的心脏滴血漏洞详解及利用--HeartBleed With OpenSSL的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: android虚拟wifi设置,win7
- 下一篇: 云呼叫中心占领高端市场客户价值是关键