曲速未來 消息:etherscan點(diǎn)擊劫持漏洞分析區(qū)塊鏈
在前幾天,DVP平臺(tái)收到了一個(gè)著名區(qū)塊鏈(Etherscan)瀏覽的漏洞,可以導(dǎo)致用戶將惡意代碼嵌入Etherscan的a標(biāo)簽中,可導(dǎo)致用戶遭到被惡意釣魚。
在前幾天,DVP平臺(tái)收到了一個(gè)著名區(qū)塊鏈(Etherscan)瀏覽的漏洞,可以導(dǎo)致用戶將惡意代碼嵌入Etherscan的a標(biāo)簽中,可導(dǎo)致用戶遭到被惡意釣魚,以下是漏洞詳情:
簡(jiǎn)要描述:漏洞說明、利用條件、危害等
部署合約代幣時(shí),符合ERC20標(biāo)準(zhǔn)的情況下,symbol和name自定義,可嵌入a標(biāo)簽覆蓋原本的標(biāo)簽。
在用戶訪問點(diǎn)擊頁面內(nèi)的合約名字,可以劫持至任意網(wǎng)站。
需要部署ERC20標(biāo)準(zhǔn)的合約,且在訪問合約頁面之前,發(fā)起一次交易。
漏洞證明:
漏洞利用代碼:
點(diǎn)擊劫持漏洞的解決方法:
X-Frame-Options HTTP 響應(yīng)頭, 可以指示瀏覽器是否應(yīng)該加載一個(gè) iframe 中的頁面。 網(wǎng)站可以通過設(shè)置 X-Frame-Options 阻止站點(diǎn)內(nèi)的頁面被其他頁面嵌入從而防止點(diǎn)擊劫持
方法一:常見的比如使用js,判斷頂層窗口跳轉(zhuǎn):
一般這樣夠用了,但是有一次發(fā)現(xiàn)失效了,看了一下人家網(wǎng)站就是頂層窗口中的代碼,發(fā)現(xiàn)這段代碼:
輕輕松松被破解了,悲劇。
注:此方式破解對(duì)IE6,IE7,IE9 、Chrome、firefox無效
方法二:meta 標(biāo)簽:基本沒什么效果,所以也放棄了:
方法三:使用HTTP 響應(yīng)頭信息中的 X-Frame-Options屬性
使用 X-Frame-Options 有三個(gè)可選的值:
DENY:瀏覽器拒絕當(dāng)前頁面加載任何Frame頁面
SAMEORIGIN:frame頁面的地址只能為同源域名下的頁面
ALLOW-FROM:origin為允許frame加載的頁面地址
換一句話說,如果設(shè)置為 DENY,不光在別人的網(wǎng)站 frame 嵌入時(shí)會(huì)無法加載,在同域名頁面中同樣會(huì)無法加載。另一方面,如果設(shè)置為 SAMEORIGIN,那么頁面就可以在同域名頁面的 frame 中嵌套
絕大部分瀏覽器支持:
配置 Apache
配置 Apache 在所有頁面上發(fā)送 X-Frame-Options 響應(yīng)頭,需要把下面這行添加到 'site' 的配置中:
配置 nginx
配置 nginx 發(fā)送 X-Frame-Options 響應(yīng)頭,把下面這行添加到 'http', 'server' 或者 'location' 的配置中:
配置 IIS
配置 IIS 發(fā)送 X-Frame-Options 響應(yīng)頭,添加下面的配置到 Web.config 文件中:
結(jié)果
在Firefox嘗試加載frame的內(nèi)容時(shí),如果X-Frame-Options響應(yīng)頭設(shè)置為禁止訪問了,那么Firefox會(huì)用about:blank展現(xiàn)到frame中。也許從某種方面來講的話,展示為錯(cuò)誤消息會(huì)更好一點(diǎn)。該漏洞已經(jīng)與Etherscan廠商聯(lián)系,目前已修復(fù)。
1.TMT觀察網(wǎng)遵循行業(yè)規(guī)范,任何轉(zhuǎn)載的稿件都會(huì)明確標(biāo)注作者和來源;
2.TMT觀察網(wǎng)的原創(chuàng)文章,請(qǐng)轉(zhuǎn)載時(shí)務(wù)必注明文章作者和"來源:TMT觀察網(wǎng)",不尊重原創(chuàng)的行為TMT觀察網(wǎng)或?qū)⒆肪控?zé)任;
3.作者投稿可能會(huì)經(jīng)TMT觀察網(wǎng)編輯修改或補(bǔ)充。