# CSRF (Cross-site request forgery) ###### tags: `web hacking` 這是 portswigger 的 web hacking academey 系列,我目前就是看一篇原理然後做一個初步的練習,之後再來補完。 這是種 web 攻擊手法,簡單講是在 cookie based session 的網站上誘導使用者點選一些選項,而該選項背後會觸發某種需要使用者權限的動作(更改帳密、重設 email 之類),當然使用者本身對這些更改的動作毫不知情。 ## Impact 視行為和使用者權限而定,小的如換密碼、 email ,大一點的到把攻擊者權限提升。 ## 要素 1. 要騙使用者攻擊的目標 2. 基於 cookie based session 的網頁 3. 沒有攻擊者無法掌控的要素 :::info 雖然說是基於 cookie based session 但像 http basic 驗證或憑證驗證也可以 ::: ## 使用場景 以下場景基於 portswigger 的 academy 要知道那些點可以攻擊前,我們必須先探查一下網站,透過網站給的帳密登入進網頁: ![](https://i.imgur.com/NBZEFv3.png) 看到有 change email 的選項,似乎可以誘導使用者在不知情的情況下更改掉 email 在攻擊前還是必須要知道更改 email 的 http request 長什麼樣子: ![](https://i.imgur.com/6bAkz0H.png) 用 burp suite 攔截之 ![](https://i.imgur.com/aTlM7XA.png) 看到更改 email 的 http request 格式了,透過 [CSRF poc generator](https://github.com/merttasci/csrf-poc-generator) 可以生成類似的 http request ![](https://i.imgur.com/zDUG6E7.png) (我擷取上次的 poc generaotr 所以有點不一樣,但不影響) (pro 版本的 burp suite 有自帶,但我窮所以...) 到這邊後先去 exploit server : ![](https://i.imgur.com/gd85N6U.png) 貼上剛剛生成好的一串 poc ![](https://i.imgur.com/29Xb7Fp.png) 因為實驗要求要自動送出,所以自己補上 `document.forms[0].submit()` ![](https://i.imgur.com/NkZ5pNr.png) 就好了,剩下就是等使用者上當開啟這個網頁,這個 request 就會被送出然後 email 就被改掉 不過這是沒有任何防護的 CSRF 就是了