您好,登錄后才能下訂單哦!
CSRF跨站請求偽造的實例分析,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
跨站請求偽造(英語:Cross-site request forgery),也被稱為 one-click attack或者 session riding,通??s寫為 CSRF或者 XSRF, 是一種挾制用戶在當前已登錄的Web應用程序上執(zhí)行非本意的操作的攻擊方法。跟跨網站腳本(XSS)相比,XSS利用的是用戶對指定網站的信任,CSRF 利用的是網站對用戶網頁瀏覽器的信任。
假如一家銀行用以運行轉賬操作的URL地址如下:http://www.examplebank.com/withdraw?account=AccoutName&amount=1000&for=PayeeName
那么,一個惡意攻擊者可以在另一個網站上放置如下代碼:
<img src="http://www.examplebank.com/withdraw?account=Alice&amount=1000&for=Badman">
如果有賬戶名為Alice的用戶訪問了惡意站點,而她之前剛訪問過銀行不久,登錄信息尚未過期,那么她就會損失1000資金。
這種惡意的網址可以有很多種形式,藏身于網頁中的許多地方。此外,攻擊者也不需要控制放置惡意網址的網站。例如他可以將這種地址藏在論壇,博客等任何用戶生成內容的網站中。這意味著如果服務端沒有合適的防御措施的話,用戶即使訪問熟悉的可信網站也有受攻擊的危險。
透過例子能夠看出,攻擊者并不能通過CSRF攻擊來直接獲取用戶的賬戶控制權,也不能直接竊取用戶的任何信息。他們能做到的,是欺騙用戶瀏覽器,讓其以用戶的名義運行操作。
無token驗證并且無referer驗證時,就基本存在跨站請求偽造,但基于功能點不同,一些為無意義無危害的跨站請求偽造。
提交數(shù)據包時抓包刪除referer字段,如果不報錯,則基本存在跨域請求偽造,GET型構造鏈接,POST型寫一個提交表單,測試有跨域情況下提交的數(shù)據包是否生效。
只有referer驗證時,可嘗試空referer,或者嘗試域名偽造。
例如只驗證referer是否存在bylibrary.cn時:
偽造三級域名為bylibrary.cn.baidu.com來繞過referer字段驗證;
在bylibrary.cn網站下發(fā)帖引導別人點擊我們構造的CSRF鏈接或者在此網站下發(fā)布我們構造的CSRF表單地址來繞過referer的檢測。
<html> <head></head> <body onload="form1.submit()"> <form id="form1" method="post" action="http://example.com"> <input type="hidden" name="sex" value="2" /> </form> </body> </html>
這里就用一個我測試中發(fā)現(xiàn)的csrf來作為示例吧,但這個并不能稱之為漏洞,廠商也忽略了,因為幾乎沒有危害,那么就演示一下大概的利用流程
首先出現(xiàn)csrf的地方為途虎養(yǎng)車個人中心:https://my.tuhu.cn/Account/UserInfo.html
1.修改個人信息用戶名和真實姓名時抓包
2.利用burp的CSRF測試插件生成html文件進行測試
3.生成的POC修改用戶名為CSRFtest并保存為HTML文件
4.打開生成的html頁面點擊按鈕
5.查看用戶中心是否已經修改成功
已經修改成功了,但是沒有任何危害,只能修改用戶姓名和昵稱,SRC給忽略了。
嚴格檢測referer字段,防止可以被繞過。
添加token偽隨機參數(shù),后端校驗token有效性。
附上一張我覺得對token原理表述的比較明白的圖:
簽名是關鍵,用戶提交的數(shù)據后臺先根據算法和密鑰對數(shù)據加密后和用戶提交時附帶的token校驗,相同則校驗通過,反之則校驗失敗,返回錯誤。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業(yè)資訊頻道,感謝您對億速云的支持。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。