CSRF(Cross-site request forgery跨站請求偽造,也被稱為“One Click Attack”或者Session Riding仑嗅,通常縮寫為CSRF或者XSRF仓技,是一種對網(wǎng)站的惡意利用。盡管聽起來像跨站腳本(XSS)阔逼,但它與XSS非常不同嗜浮,并且攻擊方式幾乎相左危融。XSS利用站點內(nèi)的信任用戶,而CSRF則通過偽裝來自受信任用戶的請求來利用受信任的網(wǎng)站。與XSS攻擊相比寨腔,CSRF攻擊往往不大流行(因此對其進行防范的資源也相當(dāng)稀少)和難以防范,所以被認(rèn)為比XSS更具危險性率寡。
CSRF 攻擊的原理就是攻擊者創(chuàng)建一個鏈接迫卢,受害者點擊它之后就可以完成攻擊者想要的操作,這些操作一般是刪除文章冶共,創(chuàng)建用戶之類乾蛤。比如某網(wǎng)站的刪除文章鏈接是http://www.xxx.com/post//delete
,那么攻擊者可以直接構(gòu)造出來發(fā)給有權(quán)限的人捅僵,它點擊之后就可以將文章刪除家卖。當(dāng)然,攻擊者也可以使用當(dāng)下流行的短網(wǎng)址服務(wù)來偽造 URL庙楚,避免受到懷疑上荡。
與傳統(tǒng)的認(rèn)知相反, POST 方式并不能防止 CSRF,這是因為瀏覽器中的 JS 擁有發(fā)送 POST 請求的能力酪捡。比如攻擊者可以編寫一個帶表單的頁面叁征,包含目標(biāo) URL 和所有所需字段,然后再用 JS 代碼提交表單逛薇。之后把這個表單放到網(wǎng)絡(luò)上可以訪問的地方捺疼,再把這個鏈接發(fā)給受害者,誘導(dǎo)他點擊永罚。
所以這個東西也叫作“One Click”啤呼,意思就是說,整個攻擊只通過一次點擊來完成呢袱。換個角度官扣,通過兩次相關(guān)步驟來完成的操作就不會有這個問題。
利用
我們可以使用 OWASP 的 CSRF-Tester 來半自動利用 CSRF 漏洞羞福,還可以生成用于利用的 exp 頁面醇锚。
要注意的是,它不會為你判斷是否存在 CSRF 漏洞坯临,想想也知道焊唬,一個網(wǎng)站上的一次完成的操作簡直太多了,那所有這些操作都存在 CSRF 漏洞嗎看靠?并不是赶促,只有重要的,不可挽回的操作才能算 CSRF 操作挟炬,而這個是機器判斷不了的鸥滨。所以你首先要知道哪里有 CSRF 漏洞,才能使用工具谤祖。
我們用它來利用 yzcms婿滓,這是一款開源的 CMS。我們首先訪問后臺:
我們點擊右上方的添加管理員:
當(dāng)我們創(chuàng)建的時候粥喜,瀏覽器會向服務(wù)器發(fā)請求凸主。我們就可以偽造這個請求,構(gòu)造出 exp 頁面额湘,然后讓已經(jīng)登錄的管理員去訪問這個頁面卿吐,就能成功創(chuàng)建管理員。
我們打開工具锋华,我們看到工具一打開嗡官,就監(jiān)聽了本機的 8008 端口:
我們需要將瀏覽器的代理配置為127.0.0.1:8008
。然后點擊Start Recording
毯焕,它會開始抓取請求衍腥。
這時我們返回 CMS 頁面,模擬創(chuàng)建一個管理員:
我們可以看到它捕獲到了若干請求,POST 的那個就是創(chuàng)建管理員的請求婆咸。我們點擊這個請求那一行坊罢,觀察下方的Form Parameters
,沒有任何的 Token 驗證擅耽。
參數(shù)的值可以任意修改。我們看一看底下的Report Type
物遇,這個就是構(gòu)造方式乖仇,可以選擇使用<form>
、<iframe>
询兴、<img>
乃沙、AJAX
、或者<a>
來構(gòu)造诗舰。這里我們選擇 Forms警儒。之后我們點擊右邊的Generate HTML
,選擇一個地方來保存眶根。
我們可以把這個文件發(fā)給受害者蜀铲,讓他打開。也可以放到網(wǎng)上把鏈接發(fā)給受害者属百。我們試著打開它记劝,當(dāng)我們打開之后,我們可以看到族扰,成功添加了我們所需的管理員厌丑。