csrf漏洞原理
什麽是csrf漏洞
CSRF(Cross-site request forgery),中文名稱:跨站請求偽造,也被稱為:one click attack/session riding,縮寫為:CSRF/XSRF。
csrf漏洞的危害
你這可以這麽理解CSRF攻擊:攻擊者盜用了你的身份,以你的名義發送惡意請求。CSRF能夠做的事情包括:以你名義發送郵件,發消息,盜取你的賬號,甚至於購買商品,虛擬貨幣轉賬......造成的問題包括:個人隱私泄露以及財產安全。
經常入選owasp漏洞列表Top10,在當前web漏洞排行中,與XSS和SQL註入並列前三。與前兩者相比,CSRF相對來說受到的關註要小很多,但是危害卻非常大
csrf攻擊實例
CSRF 攻擊可以在受害者毫不知情的情況下以受害者名義偽造請求發送給受攻擊站點,從而在並未授權的情況下執行在權限保護之下的操作。比如說,受害者Bob 在銀行有一筆存款,通過對銀行的網站發送請求http://bank.example/withdraw?account=bob&amount=1000000&for=bob2 可以使 Bob 把 1000000 的存款轉到 bob2 的賬號下。通常情況下,該請求發送到網站後,服務器會先驗證該請求是否來自一個合法的session,並且該session 的用戶Bob 已經成功登陸。黑客Mallory 自己在該銀行也有賬戶,他知道上文中的URL 可以把錢進行轉帳操作。Mallory可以自己發送一個請求給銀行:http://bank.example/withdraw?account=bob&amount=1000000&for=Mallory。但是這個請求來Mallory 而非 Bob,他不能通過安全認證,因此該請求不會起作用。這時,Mallory想到使用 CSRF 的攻擊方式,他先自己做一個網站,在網站中放入如下代碼:src=”http://bank.example/withdraw?account=bob&amount=1000000&for=Mallory”,並且通過廣告等誘使Bob 來訪問他的網站。當Bob 訪問該網站時,上述url 就會從Bob 的瀏覽器發向銀行,而這個請求會附帶Bob 瀏覽器中的cookie 一起發向銀行服務器。大多數情況下,該請求會失敗,因為他要求Bob 的認證信息。但是,如果Bob 當時恰巧剛訪問他的銀行後不久,他的瀏覽器與銀行網站之間的session 尚未過期,瀏覽器的cookie 之中含Bo的認證信息。這時,悲劇發生了,這個url 請求就會得到響應,錢將從Bob 的賬號轉移到Mallory 的賬號,而Bob 當時毫不知情。等以後Bob 發現賬戶錢少了,即使他去銀行查詢日誌,他也只能發現確實有一個來自於他本人的合法請求轉移了資金,沒有任何被攻擊的痕跡。而Mallory 則可以拿到錢後逍遙法外。
csrf攻擊的對象
在討論如何抵禦 CSRF 之前,先要明確 CSRF 攻擊的對象,也就是要保護的對象。從以上的例子可知,CSRF 攻擊是黑客借助受害者的 cookie 騙取服務器的信任,但是黑客並不能拿到 cookie,也看不到 cookie 的內容。另外,對於服務器返回的結果,由於瀏覽器同源策略的限制,黑客也無法進行解析。因此,黑客無法從返回的結果中得到任何東西,他所能做的就是給服務器發送請求,以執行請求中所描述的命令,在服務器端直接改變數據的值,而非竊取服務器中的數據。所以,我們要保護的對象是那些可以直接產生數據改變的服務,而對於讀取數據的服務,則不需要進行 CSRF 的保護。比如銀行系統中轉賬的請求會直接改變賬戶的金額,會遭到 CSRF 攻擊,需要保護。而查詢余額是對金額的讀取操作,不會改變數據,CSRF 攻擊無法解析服務器返回的結果,無需保護。
通過dvwa-講解csrf漏洞的挖掘及利用
首先上傳一個2.html文檔到自己的一臺公網服務器上,編輯內容如下:
<img src="http://192.168.174.151/dvwa/vulnerabilities/csrf/?password_new=admin888&password_conf=admin888&Change=Change#" alt="network error">
將自己公網上的http://www.xxx.com/2.html文件通過短網址平臺縮短以後,通過郵件發送給靶機用戶,靶機用戶訪問該url後,密碼會被自動修改為admin888
訪問後如圖所示,但是此時密碼已經修改為了admin888
此時將dvwa退出登錄,然後使用密碼admin888登錄成功。
csrf漏洞原理