# 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
要知道那些點可以攻擊前,我們必須先探查一下網站,透過網站給的帳密登入進網頁:

看到有 change email 的選項,似乎可以誘導使用者在不知情的情況下更改掉 email
在攻擊前還是必須要知道更改 email 的 http request 長什麼樣子:

用 burp suite 攔截之

看到更改 email 的 http request 格式了,透過 [CSRF poc generator](https://github.com/merttasci/csrf-poc-generator) 可以生成類似的 http request

(我擷取上次的 poc generaotr 所以有點不一樣,但不影響)
(pro 版本的 burp suite 有自帶,但我窮所以...)
到這邊後先去 exploit server :

貼上剛剛生成好的一串 poc

因為實驗要求要自動送出,所以自己補上 `document.forms[0].submit()`

就好了,剩下就是等使用者上當開啟這個網頁,這個 request 就會被送出然後 email 就被改掉
不過這是沒有任何防護的 CSRF 就是了