自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

瀏覽器中因cookie設(shè)置HttpOnly標(biāo)志引起的安全問(wèn)題

安全 應(yīng)用安全
如果cookie設(shè)置了HttpOnly標(biāo)志,可以在發(fā)生XSS時(shí)避免JavaScript讀取cookie,這也是HttpOnly被引入的原因。但這種方式能防住攻擊者嗎?HttpOnly標(biāo)志可以防止cookie被“讀取”,那么能不能防止被“寫(xiě)”呢?答案是否定的,那么這里面就有文章可做了。

1、簡(jiǎn)介

如果cookie設(shè)置了HttpOnly標(biāo)志,可以在發(fā)生XSS時(shí)避免JavaScript讀取cookie,這也是HttpOnly被引入的原因。但這種方式能防住攻擊者嗎?HttpOnly標(biāo)志可以防止cookie被“讀取”,那么能不能防止被“寫(xiě)”呢?答案是否定的,那么這里面就有文章可做了,因?yàn)橐炎C明有些瀏覽器的HttpOnly標(biāo)記可以被JavaScript寫(xiě)入覆蓋,而這種覆蓋可能被攻擊者利用發(fā)動(dòng)session fixation攻擊。本文主題就是討論這種技術(shù)。

[[111455]]

2、用JavaScript覆蓋cookie中的HttpOnly標(biāo)志

當(dāng)JavaScript可以覆蓋cookie中的HttpOnly標(biāo)志時(shí),攻擊者如果發(fā)現(xiàn)網(wǎng)站的XSS漏洞,就可以利用HttpOnly cookie發(fā)動(dòng)session fixation攻擊(更多關(guān)于session fixation攻擊的內(nèi)容可以參考筆者之前的文章[1])。

session fixation攻擊的后果是攻擊者可以冒充受害者,因?yàn)槠渲朗芎φ叩膕ession ID。這里假設(shè)當(dāng)成功登錄應(yīng)用后session不會(huì)重新生成。現(xiàn)實(shí)也確實(shí)是這樣的,但瀏覽器不應(yīng)該允許JavaScript覆蓋HttpOnly標(biāo)志,因?yàn)檫@種覆蓋可能與某些應(yīng)用程序登錄成功后不會(huì)重新生成會(huì)話(huà)這一特性結(jié)合,發(fā)動(dòng)session fixation攻擊。

那么登錄成功后如果重新生成session ID的話(huà)安全性是怎么樣的呢?還能被攻擊者利用嗎?登錄之后,攻擊者通過(guò)設(shè)置用戶(hù)的session為攻擊者正在使用的session,將用戶(hù)切換為攻擊者自己的帳戶(hù)。受害者以為其正在使用自己的帳戶(hù),實(shí)際上一些敏感信息已經(jīng)泄露給攻擊者了。

3、允許JavaScript覆蓋HttpOnly cookie的瀏覽器

經(jīng)筆者證實(shí),以下瀏覽器允許JavaScript覆蓋HttpOnly cookies:

Safari

Opera Mobile

Opera Mini

BlackBerry browser

Konqueror browser

該問(wèn)題已經(jīng)(于2014年2月14日)提交給相應(yīng)的廠商。

IE、Firefix和Opera(標(biāo)準(zhǔn)安裝版本)不容易受到上述攻擊影響。

4、廠商的回復(fù)

Opera公司已經(jīng)確認(rèn)該問(wèn)題在Opera Mobile和Opera Mini中存在,決定在Opera Mini中修復(fù)該問(wèn)題(修復(fù)日期還未確定)。盡管Opera Mobile當(dāng)前在Google Play中可以下載,但Opera公司認(rèn)為該版本已經(jīng)過(guò)時(shí),因此決定不對(duì)其進(jìn)行修改(他們建議替換為Opera for Android版本,該版本可以防止JavaScript覆蓋HttpOnly cookie)。

黑莓公司回復(fù)說(shuō)已經(jīng)宣布于2014年4月后不再對(duì)PlayBook Tablet的操作系統(tǒng)(筆者當(dāng)時(shí)測(cè)試時(shí)使用的系統(tǒng))進(jìn)行支持,因此不會(huì)修復(fù)該問(wèn)題。但是由于該問(wèn)題是在支持結(jié)束聲明之前提交的,他們決定將我加入到黑莓安全事件響應(yīng)小組的感謝名單中(根據(jù)他們的規(guī)定,筆者的名字會(huì)在2014年4月底才會(huì)被加入)[2]。

Konqueror確認(rèn)了該問(wèn)題,但可能不會(huì)去修復(fù)。該bug的信息可以在KDE Bugtracking系統(tǒng)中找到[3]。

該問(wèn)題兩個(gè)月前提交給了蘋(píng)果公司,但從未收到任何反饋。

5、漏洞利用

以下是部分示例代碼:

  1. <? 
  2. setcookie('cookie1',++$_COOKIE['cookie1'],time()+2592000,'/','',0,1);  
  3. setcookie('cookie2',++$_COOKIE['cookie2'],time()+2592000,'/','',0,0);  
  4. ?> 
  5. <HTML> 
  6. <? 
  7. print "Cookie1:".$_COOKIE['cookie1']."<br>";  
  8. print "Cookie2:".$_COOKIE['cookie2'];  
  9. ?> 
  10. <script>alert(document.cookie);</script> 
  11. <script>document.cookie='cookie1=100;expires=Thu, 2 Aug 2014 20:00:00 UTC; path=/';</script> 
  12. </HTML> 

過(guò)程如下:運(yùn)行這段代碼,之后可以看到cookie1(設(shè)置了HttpOnly標(biāo)志)已經(jīng)被JavaScript寫(xiě)入覆蓋了。

6、總結(jié)

HttpOnly標(biāo)志的引入是為了防止設(shè)置了該標(biāo)志的cookie被JavaScript讀取,但事實(shí)證明設(shè)置了這種cookie在某些瀏覽器中卻能被JavaScript覆蓋,可被攻擊者利用來(lái)發(fā)動(dòng)session fixation攻擊。該問(wèn)題被提出后,得到了相關(guān)廠商的響應(yīng)。最后,本文給出了一段利用演示代碼。

責(zé)任編輯:藍(lán)雨淚 來(lái)源: FreeBuf
相關(guān)推薦

2012-04-11 13:46:33

ibmdw

2021-12-12 07:41:54

微軟Edge瀏覽器

2010-05-04 17:43:50

Unix系統(tǒng)

2009-04-01 08:56:59

2020-10-25 11:55:16

Google Chrome瀏覽器

2020-08-31 19:20:33

瀏覽器CORS跨域

2013-08-16 17:25:59

2009-07-30 18:51:19

瀏覽器是否接受CookASP.NET

2013-11-22 09:58:36

2012-11-20 10:47:16

2013-11-20 14:25:45

瀏覽器重繪

2010-07-28 14:27:13

NFS服務(wù)器

2016-10-21 14:09:38

網(wǎng)絡(luò)安全數(shù)據(jù)安全安全漏洞

2010-04-05 21:57:14

Netscape瀏覽器

2009-08-23 15:56:53

2014-10-29 19:18:34

傲游瀏覽器

2010-01-10 17:50:17

2012-11-30 10:57:09

2021-03-10 10:02:35

谷歌Chrome FLoC

2024-05-13 15:30:22

微軟Edge瀏覽器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)