1.CSRF漏洞原理
CSRF(Cross-site request forgery),跨站請(qǐng)求偽造,簡(jiǎn)寫(xiě) CSRF/XSRF。指利用受害者尚未失效的身份認(rèn)證信息(cookie、會(huì)話等),誘騙其點(diǎn)擊惡意鏈接或者訪問(wèn)包含攻擊代碼的頁(yè)面,在受害人不知情的情況下以受害者的身份向(身份認(rèn)證信息所對(duì)應(yīng)的)服務(wù)器發(fā)送請(qǐng)求,從而完成非法操作(如轉(zhuǎn)賬、改密等)。
CSRF與XSS最大的區(qū)別就在于,CSRF并沒(méi)有盜取cookie而是直接利用。
2.CSRF漏洞測(cè)試
?上文說(shuō)過(guò)了CSRF漏洞不盜取用戶身份信息,而是利用用戶身份信息去偽裝成受信任的用戶來(lái)發(fā)起請(qǐng)求。一般情況下,我們可以通過(guò)抓包軟件抓取數(shù)據(jù)包,然后以GET或POST形式制作成鏈接或頁(yè)面,之后誘騙目標(biāo)用戶點(diǎn)擊。目標(biāo)用戶點(diǎn)擊后,因?yàn)闉g覽器會(huì)自動(dòng)攜帶cookie向服務(wù)器發(fā)送請(qǐng)求,這樣用戶可能在不知情的情況下完成了對(duì)自己不利的操作。
比如惡意用戶lisi發(fā)現(xiàn)某銀行個(gè)人網(wǎng)銀的轉(zhuǎn)賬請(qǐng)求如下所示(注意www.testbank.com為本地演示地址):
GET /personTransfer.do?account=612**158&money=1000.0&name=lisi HTTP/1.1
Host: www.testbank.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:107.0) Gecko/20100101 Firefox/107.0
Cookie:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://www.testbank.com
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: cross-site
Sec-Fetch-User: ?1
Te: trailers
Connection: close
lisi現(xiàn)在希望大家都給自己轉(zhuǎn)賬,他將account改為自己的賬號(hào),name改為他的名字,money改為1000.0元。之后使用Burp構(gòu)造CSRF POC。
?我們可以點(diǎn)擊下方Copy Html將它粘貼成一個(gè)html文件,置于我們的服務(wù)器下,然后將這個(gè)鏈接發(fā)給目標(biāo)用戶,想辦法讓他點(diǎn)擊即可。
這里為了演示,我直接選擇Test in browser,之后會(huì)出現(xiàn)一個(gè)URL,點(diǎn)擊Copy,這個(gè)鏈接就是給目標(biāo)用戶點(diǎn)擊的。
?當(dāng)我訪問(wèn)這個(gè)鏈接后http://burpsuite/show/3/qizpy26u7wa3myaejlqbzowa66ktko5n,可以看到瀏覽器攜帶著我的Cookie向lisi發(fā)起了轉(zhuǎn)賬操作,這樣在我不知情的情況下,lisi就盜取了我的money。
你可以清晰的看到,點(diǎn)擊不明鏈接的危害有多大!
3.CSRF漏洞修復(fù)
(1)使用token
CSRF攻擊想要成功,攻擊者必須要準(zhǔn)確地預(yù)測(cè)所有的參數(shù)從而偽造出合法的請(qǐng)求。所以我們可以在請(qǐng)求中添加一個(gè)隨機(jī)的參數(shù)token,它是隨機(jī)的,并是一次性的,并在服務(wù)器端檢驗(yàn),如果請(qǐng)求中沒(méi)有token或者token的內(nèi)容不正確,那么就拒絕該請(qǐng)求。
(2)檢測(cè)Referer
通過(guò)檢查Referer的值,我們就可以判斷這個(gè)請(qǐng)求是合法的還是非法的,如果Referer是以自己的網(wǎng)站開(kāi)頭的域名,那么就說(shuō)明該請(qǐng)求是合法的。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-402057.html
(3)關(guān)鍵操作只接受 POST 請(qǐng)求。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-402057.html
到了這里,關(guān)于《WEB安全漏洞100講》(第4講)CSRF漏洞的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!