# Web CSRF Lab2 題目敘述:本實驗的郵件更改功能容易受到 CSRF 的攻擊。它試圖阻止 CSRF 攻擊,但僅對某些類型的請求進行防禦。 要解決該實驗,請使用您的漏洞利用伺服器託管一個 HTML 頁面,該頁面使用 CSRF 攻擊來更改查看者的電子郵件位址。 您可以使用以下憑證登錄自己的帳號:wiener:peter ## Step 1 一樣先進入 Lab 中登入帳號。  ## Step 2 登入帳號後一樣先更改電子郵件並攔截起來丟到 Repeater。   這裡可以發現有個不可預測的參數 `csrf`,再來就是撰寫 HTML。 :::success Burp suite pro 可直接生成,只是本次先手寫。 ::: ## Step 3 先建立基本的 HTML 語法,並加上標題。  之後創建一個表單動作(因為要修改電子郵件),並加上目標位置的 URL,而且要設定 Methom 類型及 id,只是在本次的腳本中,我們的 Methom 設定成 GET。   :::info 這網站有啟用 CSRF Token 驗證,而且驗證的是 POST 請求。 所以如果你直接寫一個攻擊腳本用 POST 發送請求,是沒辦法成功的,因為無法預測 csrf 的值。 那改成 GET 方法有用嗎? 這要看「網站是否在 GET 方法時還會檢查 CSRF token」: 如果它不檢查(即:「CSRF token 只驗 POST,不驗 GET」),你就可以用 GET 攻擊成功。 如果它有檢查 → 那就沒救了,因為你還是沒辦法猜出 csrf。 所以你嘗試 method="get" 是在測: 試試看這個網站是不是傻傻地只對 POST 驗證 CSRF token。 如果網站真的沒對 GET 驗證 token,這樣就會成功改掉使用者的 email,成功打中 CSRF 弱點。 ::: 再來我們可以在前面的 POST 請求中看到參數是`email`,這個參數正是我們需要運用到的,可是我們不能讓我們的行為出現在畫面上,讓使用者知道後臺發生了事,所以設定類型為 `hidden`。   最後加上 email 。  設定好我們的表單後,再來就是製作自動送出表單的行為。  因為不能讓使用者發現自動發送的一連串行為,所以設定 `iframe` 為 `display: none;` ,並在表單中也添加。   ## Step 4 到這裡就完成我們的程式碼,再來就是執行他並更改電子郵件,所以我到 CMD 中開啟 HTTP Server 並讀取我的 HTML 檔。 ``` C:\Users\ASUS>cd Desktop/Burp_suite C:\Users\ASUS\Desktop\burp_suite>python -m http.server 8080 Serving HTTP on :: port 5555 (http://[::]:8080/) ... ``` 接著到瀏覽器中輸入我們的網址。  CMD 回應: ``` C:\Users\ASUS\Desktop\burp_suite>python -m http.server 8080 Serving HTTP on :: port 8080 (http://[::]:8080/) ... ::ffff:127.0.0.1 - - [23/May/2025 13:47:20] "GET /test2.html HTTP/1.1" 200 - ::ffff:127.0.0.1 - - [23/May/2025 13:47:21] code 404, message File not found ``` 可以發現狀態碼是 200,並且網頁上也只顯示我們的標題,看來我們的檔案有被抓到,只剩下電子郵件還沒確認,所以我回去重新整理頁面。  發現電子郵件成功被我們更改成 `usagi@haha.yap`,完成本題 Lab。 
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up