压在透明的玻璃上c-国产精品国产一级A片精品免费-国产精品视频网-成人黄网站18秘 免费看|www.tcsft.com

總結(jié)Web應(yīng)用中基于瀏覽器的安全漏洞

Web瀏覽器或者手機(jī)瀏覽器都是在用戶與互聯(lián)網(wǎng)之間充當(dāng)著中介者的角色,在日常生活中我們使用更多的不外乎Google Chrome, Mozilla Firefox, Internet Explorer, Opera, Safari等。隨著用戶越來(lái)越多,漸漸的各大瀏覽器也就成為了黑客攻擊的目標(biāo)。源碼中哪怕是一點(diǎn)點(diǎn)小錯(cuò)誤,也可能會(huì)導(dǎo)致瀏覽器被黑客利用。

本文就將介紹一些基于瀏覽器的漏洞。

1.瀏覽器緩存

每次打開一個(gè)網(wǎng)站,網(wǎng)頁(yè)的內(nèi)容會(huì)緩存到用戶的機(jī)器中。如果這些內(nèi)容在其他網(wǎng)頁(yè)中需要重新加載,瀏覽器加載的是緩存,而不是再次下載內(nèi)容。如果一些Web應(yīng)用商店以及顯示用戶敏感信息(比如地址,信用卡信息,用戶名)這些信息也是會(huì)記錄到緩存中的,因此可以通過(guò)檢測(cè)瀏覽器緩存檢索到這些信息的。

在IE瀏覽器中這些信息存儲(chǔ)在:

C:\Users\<user_name>\AppData\Local\Microsoft\Windows\Temporary Internet Files

在Firefox瀏覽器:

C:\Users\<user_name>\AppData\Local\Mozilla\Firefox\Profiles\<profile-id>\Cache 或者在地址欄輸入about:cache

在Chrome瀏覽器中的地址欄輸入chrome://cache,其存儲(chǔ)在

C:\Users\<user_name>\AppData\Local\Google\Chrome\User Data\Default\Cache

驗(yàn)證

我們?cè)贛ozilla Firefox 瀏覽器下實(shí)驗(yàn),訪問(wèn)幾個(gè)網(wǎng)頁(yè)過(guò)后然后退出網(wǎng)站。在地址欄輸入about:cache.這就可以顯示在瀏覽器中的緩存信息了,通過(guò)緩存列表以及其中的內(nèi)容選擇你感興趣的內(nèi)容。

下面的截圖就顯示了用戶儀表盤,在用戶儀表盤中可能含有高危敏感信息,比如地址,電話號(hào)碼,信用卡信息,E-mail等等。

14272536998764

打開一個(gè)特定的緩存條目,在用戶儀表盤中我們可以看到地址,電話號(hào)碼,訂單歷史等等

14272541777676

小貼士

這個(gè)問(wèn)題可以通過(guò)在響應(yīng)頭中設(shè)置合適的緩存控制屬性解決。

主要有以下兩種緩存屬性:

Cache-control: no-cache

no-cache屬性表示,瀏覽器不使用特定的請(qǐng)求-響應(yīng)緩存信息。瀏覽器存儲(chǔ)緩存信息,而不是從緩存中讀取內(nèi)容,每一次都會(huì)向服務(wù)器發(fā)送請(qǐng)求。換句話來(lái)說(shuō),緩存只是保留在瀏覽器中,對(duì)于攻擊者或者惡意用來(lái)來(lái)說(shuō)就十分容易的讀取到相關(guān)信息。

Cache-control: no-store

no-store屬性表示,請(qǐng)求-響應(yīng)不會(huì)被緩存或者存儲(chǔ)到瀏覽器中。

使用HTML meta標(biāo)簽

你還可以使用meta標(biāo)簽實(shí)現(xiàn)對(duì)緩存的控制,設(shè)置如下:

<meta http-equiv=”Cache-Control” content=”no-cache” />

<meta http-equiv=”Cache-Control” content=”no-store” />

如果在HTTP響應(yīng)頭中手動(dòng)添加cache-control頭,并且設(shè)置 no-cache。如下圖所示,瀏覽器依舊會(huì)對(duì)頁(yè)面進(jìn)行緩存

如果訪問(wèn)瀏覽器緩存,那么我們就可以在用戶儀表盤中緩存頁(yè)面中找到它。使用離線模式打開會(huì)顯示詳細(xì)的細(xì)節(jié),如下圖:

1427256781259414272573397190

如果cache-control頭設(shè)置為no-store, no-cache。我們?cè)谟脩魞x表盤中就找不到了。

因此,開發(fā)者需要分析網(wǎng)頁(yè)的內(nèi)容以及調(diào)整適當(dāng)?shù)腸ache-control屬性。

2. 瀏覽器內(nèi)存中的密碼

大多數(shù)的站點(diǎn)以及服務(wù)器使用hash或者Encrypt方式進(jìn)行加密,但這種方式不適用于保存在瀏覽器內(nèi)存中的密碼。GET請(qǐng)求以及POST請(qǐng)求在瀏覽器內(nèi)存中幾乎就是透明的,攻擊者可通過(guò)類似WinHex的工具查看到這些敏感信息。

驗(yàn)證

訪問(wèn)站點(diǎn),輸入有效的憑證,如下截圖。

14278032617402

下面的截圖顯示了用戶名以及密碼傳遞給服務(wù)器

14277635277622

從網(wǎng)站中退出,但請(qǐng)不要關(guān)閉瀏覽器,然后打開類似WinHex的工具,定位到正確的路徑。

首先打開內(nèi)存

然后選擇瀏覽器(本列中我們使用的FireFox),選擇所有內(nèi)存

1427764205261714277642066960

在數(shù)據(jù)中搜索用戶名,我們可以獲取完整的登錄請(qǐng)求信息。

14277643664300

從這里開始,攻擊者就可以盜取用戶登錄憑證。

小貼士

這個(gè)問(wèn)題出現(xiàn)在瀏覽器/本地機(jī)器上,使用SSL并不會(huì)降低危險(xiǎn)性。用戶并不能阻止瀏覽器記錄密碼或者其他一些敏感信息,這個(gè)問(wèn)題的解決方法便是使用哈希加密。

下面是加鹽哈希的工作流程:

存儲(chǔ)在數(shù)據(jù)庫(kù)中的MD5哈希密碼。當(dāng)一個(gè)用戶請(qǐng)求登錄頁(yè)面時(shí),服務(wù)器隨機(jī)生成一個(gè)數(shù),這個(gè)數(shù)就被稱為salt(鹽)然后返回給用戶的頁(yè)面。一個(gè)Javascript腳本出現(xiàn)在用戶機(jī)器上,對(duì)用戶輸入的密碼進(jìn)行MD5計(jì)算。接著加鹽后再計(jì)算哈希值,這個(gè)哈希值會(huì)發(fā)送到服務(wù)器,服務(wù)器從數(shù)據(jù)庫(kù)中選擇密碼的哈希值結(jié)合鹽值并計(jì)算MD5值。如果這個(gè)值匹配,用戶就成功登錄。

每一次的鹽值都不盡相同,因此攻擊者就算從瀏覽器中內(nèi)存中獲取到了哈希值,這個(gè)哈希值也是沒(méi)用的。

另一個(gè)實(shí)現(xiàn)方法,使用一個(gè)Javascript腳本實(shí)現(xiàn)當(dāng)用戶退出過(guò)后就強(qiáng)行關(guān)閉瀏覽器,這么做瀏覽器的內(nèi)存就會(huì)被重置。

3. 返回刷新攻擊

瀏覽器的返回功能,大家都熟悉。通過(guò)前進(jìn)后退這個(gè)功能,我們可以顯示最近瀏覽的頁(yè)面。此外,瀏覽器也會(huì)留意到像用戶名,密碼,銀行卡賬號(hào)等變量。這是因?yàn)橥ㄟ^(guò)POST方式傳送給服務(wù)器的同時(shí)對(duì)頁(yè)面進(jìn)行了抓取。如果用戶登錄網(wǎng)站,執(zhí)行一些操作過(guò)后退出了,攻擊者在同一臺(tái)機(jī)器上進(jìn)行登錄,他是可以在瀏覽器窗口中看到注銷頁(yè)面的,然后他一直按后退按鈕,直到顯示成功登錄那個(gè)頁(yè)面,然后單擊刷新按鈕,瀏覽器自動(dòng)重新提交請(qǐng)求的所有信息。

驗(yàn)證

登錄到網(wǎng)頁(yè)并進(jìn)入修改密碼的頁(yè)面,輸入當(dāng)前密碼,以及修改后的密碼點(diǎn)擊提交。

更改密碼的一系列請(qǐng)求和響應(yīng),請(qǐng)看下面的截圖

請(qǐng)求

14277802426541

響應(yīng)

1427780278215

密碼更改成功

14277803162194

瀏覽網(wǎng)頁(yè),然后注銷,注銷過(guò)后離開機(jī)器前沒(méi)有關(guān)閉瀏覽器。如果攻擊者能進(jìn)行物理訪問(wèn)這臺(tái)機(jī)器,只需簡(jiǎn)單的單擊后退按鈕的下拉菜單,只需要找到更改密碼后的頁(yè)面就行了。

14277994955946

當(dāng)點(diǎn)擊進(jìn)入一個(gè)特殊的頁(yè)面,瀏覽器會(huì)顯示已經(jīng)過(guò)期的警示頁(yè)面。

14277807753199

此刻,攻擊者就可以使用瀏覽器代理工具,比如Burp并配置瀏覽器通過(guò)代理發(fā)送請(qǐng)求。

在錯(cuò)誤頁(yè)面中單擊刷新按鈕,瀏覽器會(huì)彈出一個(gè)提示窗口

14277997725184

使用配置好的代理工具,攻擊者可以看到發(fā)送給服務(wù)器的請(qǐng)求,并且可以截取到用戶的密碼

14277811194177

變種攻擊

網(wǎng)站成功登錄過(guò)后使用重定向,登錄頁(yè)面含有驗(yàn)證碼。如果用戶使用正確的用戶名及密碼但是驗(yàn)證碼錯(cuò)誤,那么網(wǎng)站會(huì)返回到登錄頁(yè)面,并提示用戶錯(cuò)誤信息。

在這種情況下,攻擊者同樣可以使用后退和刷新功能盜取用戶名密碼。即使驗(yàn)證碼錯(cuò)誤,攻擊者也能夠獲取像用戶名以及密碼這些敏感信息。

驗(yàn)證

訪問(wèn)網(wǎng)站的登錄頁(yè)面,輸入正確的用戶名和錯(cuò)誤的密碼

14277991192851

對(duì)用戶名以及密碼驗(yàn)證過(guò)后,服務(wù)器響應(yīng)“200 OK”和錯(cuò)誤描述“用戶名/密碼錯(cuò)誤”

1427799359920014277993617477

單擊后退按鈕,訪問(wèn)以前能夠正確登入的頁(yè)面。

14277994955946

瀏覽器警告說(shuō),憑證過(guò)期了,同時(shí)要求用戶重新發(fā)送數(shù)據(jù)到服務(wù)器。

在瀏覽器和服務(wù)器之間配置代理,對(duì)傳輸?shù)椒?wù)器的數(shù)據(jù)進(jìn)行攔截,然后點(diǎn)擊發(fā)送按鈕

14277997725184

用戶的賬號(hào)密碼可以通過(guò)明文顯示給我們

14277998318926

問(wèn)題分析

在這個(gè)例子中,修改密碼的頁(yè)面為“changepass.aspx” 后面出現(xiàn)的頁(yè)面是“changepass1.aspx”。“changepass1.aspx”頁(yè)面是在提供當(dāng)前密碼以及新密碼過(guò)后再出現(xiàn)的。所以,瀏覽器記錄了發(fā)送到“changepass1.aspx”的請(qǐng)求。我們來(lái)理一理整個(gè)順序。

用戶訪問(wèn)“changepass.aspx”頁(yè)面。

用戶輸入當(dāng)前密碼,新的密碼,最后確認(rèn)新的密碼。

密碼以及提交請(qǐng)求發(fā)送到“changepass1.aspx”

用戶在“changepass1.aspx”頁(yè)面進(jìn)行身份驗(yàn)證

1427800588880

當(dāng)攻擊者打開“changepass1.aspx”頁(yè)面,請(qǐng)求就會(huì)發(fā)送到“changepass1.aspx”。這個(gè)請(qǐng)求里就包含了當(dāng)前密碼,新的密碼以及確認(rèn)的密碼。

4. 自動(dòng)保存

當(dāng)用戶提交賬號(hào)以及密碼之后,瀏覽器會(huì)提示是否記住密碼。如果用戶單擊“記住密碼”,瀏覽器會(huì)存儲(chǔ)密碼,在下一次訪問(wèn)該站點(diǎn)時(shí)就會(huì)自動(dòng)填寫相關(guān)內(nèi)容。這個(gè)功能確實(shí)是方便了用戶,用戶不需要記住過(guò)多的密碼,但是如果用戶是在公用機(jī)器上使用這個(gè)功能,那么后果又是怎樣?攻擊者可以十分輕松的找到賬號(hào)密碼。

即使密碼經(jīng)過(guò)加密,或者是有一個(gè)主密碼來(lái)保護(hù)(通過(guò)一個(gè)密碼來(lái)訪問(wèn)存儲(chǔ)的密碼)。攻擊者可以通過(guò)訪問(wèn)這個(gè)站點(diǎn)來(lái)檢索存儲(chǔ)在瀏覽器中的密碼,攻擊者只需要鍵入用戶名,瀏覽器就會(huì)自動(dòng)填充密碼字段,只需要運(yùn)行類似Burp的工具攔截瀏覽器請(qǐng)求就可以獲取密碼。

這里,輸入用戶名和密碼之后,瀏覽器彈出提示我們是否保存密碼

1427801854430

如果用戶確認(rèn)保存密碼之后,密碼就會(huì)存儲(chǔ)到瀏覽器中。在FireFox中你可以通過(guò)點(diǎn)擊工具→選項(xiàng)→安全→保存的密碼

 

14278019773517 14278020541595

現(xiàn)在假設(shè)瀏覽器中保存的密碼有一個(gè)主密碼來(lái)管理,只有通過(guò)密碼驗(yàn)證之后才能看到上面截圖中的信息

14278021558782

在這個(gè)例子中,攻擊者需要一個(gè)中間代理工具來(lái)攔截傳送到服務(wù)器的請(qǐng)求。

到站點(diǎn)中,雙擊用戶名字段的表框,它就會(huì)顯示存儲(chǔ)的用戶名列表。點(diǎn)擊其中一個(gè)用戶名,在密碼字段瀏覽器就會(huì)自動(dòng)填寫了,從攔截請(qǐng)求中可以十分容易的找到賬號(hào)以及密碼信息。

14278024474991

小貼士

在目前絕大多數(shù)瀏覽器產(chǎn)品的最新版本中,這個(gè)自動(dòng)保存功能依舊存在。在這個(gè)特容易撞庫(kù)的年代,密碼多了確實(shí)不好記,這個(gè)就看大家自己的取舍了。

5. 瀏覽器歷史記錄

當(dāng)用戶提交數(shù)據(jù)的時(shí)候,不是GET請(qǐng)求就是POST請(qǐng)求。GET請(qǐng)求的話是可以通過(guò)觀察URL本身發(fā)現(xiàn)端倪的,然而POST請(qǐng)求存在于請(qǐng)求的主體,以下兩張截圖就顯示了GET請(qǐng)求以及POST請(qǐng)求的用戶數(shù)據(jù)。

所以的GET請(qǐng)求都可以通過(guò)瀏覽器的歷史記錄以及緩存進(jìn)行訪問(wèn),即使注銷并關(guān)閉瀏覽器,這些數(shù)據(jù)也是可以通過(guò)歷史記錄查看的。

GET request:

14278031559546

POST request:

14278031738917

驗(yàn)證

用戶在填寫了用戶名和密碼之后,點(diǎn)擊登入按鈕,這里會(huì)提交一個(gè)GET請(qǐng)求

14278032617402

使用Burp攔截請(qǐng)求,截圖如下

14278033228664

所以,攻擊者可以通過(guò)歷史記錄獲取信息

14278034057259

同樣的,如果站點(diǎn)通過(guò)GET方式發(fā)送敏感信息,攻擊者也是可以通過(guò)瀏覽器歷史查看到的。

14278034857716

小貼士

讓不使用GET方式發(fā)送敏感信息,成為我們不說(shuō)的秘密!

[轉(zhuǎn)自FreeBuf黑客與極客(FreeBuf.COM)]

 

上一篇:用技術(shù)解決體驗(yàn)問(wèn)題:Chrome 43將取消地址欄中的“黃色小三角”警告

下一篇:谷歌正為Gmail開發(fā)PGP端到端加密技術(shù)