---
# System prepended metadata

title: CSRF (Cross-site request forgery)
tags: [web hacking]

---

# 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 就是了