iT邦幫忙

2026 iThome 鐵人賽

DAY 24
0

今天我們要來做CSRF中剩下的兩題啦,一題是關於CSRF時封包Content type影響,另一個是關於CSRF變體

Webgoat A5 Cross-Site Request Forgeries 號碼7(題目3)

https://ithelp.ithome.com.tw/upload/images/20261007/20184109G6jQq9Muhu.png

這題當中,我們要把資料送到指定的端點,讓我們先隨便發送一個封包當作範例

https://ithelp.ithome.com.tw/upload/images/20261007/20184109MkY0lgJQf7.png

接著把題目指定的

{
  "name"    : "WebGoat",
  "email"   : "webgoat@webgoat.org",
  "content" : "WebGoat is the best!!"
}

換上去,把host改成其他的端口,應該就可以了

https://ithelp.ithome.com.tw/upload/images/20261007/20184109zpSQ1Nmpou.png

......嗎?
重試了很久,實在沒辦法只好看提示

https://ithelp.ithome.com.tw/upload/images/20261007/20184109EefCJsreaA.png

對喔,這關是要告訴我們如何利用Content Type,那就把每一種都試試看

https://ithelp.ithome.com.tw/upload/images/20261007/20184109NU4fM1ImSu.png

試到text/plain的時候總算過了,但我還是不太懂為甚麼他可以所以再去查了一下
原來瀏覽器中有一個叫做CORS(跨來源共享) 預檢請求 (Preflight Request),在傳送封包時如果使用application/json這種非預設content type或者使用GET, POST, PUT以外的自訂方法,或者X-Requested-With這種自訂標頭時便會發送一個OPTION預檢請求來詢問伺服器這封包是否允許通過
有三種Content Type是HTML表單預設,有機會被認為簡易請求不被檢查

* application/x-www-form-urlencoded
* multipart/form-data
* text/plain

至於這題為甚麼是使用text/plain,是因為另外兩種格式無法滿足我們這題的json檔格式條件,發送後就會出錯
然後這題判定比較寬 應該只要Content Type對就好了,畢竟從上張圖片可以看見裡面有X-Requested-With這種自訂標頭還是能過。

Webgoat A5 Cross-Site Request Forgeries 號碼8(題目4)

https://ithelp.ithome.com.tw/upload/images/20261007/20184109vT3p7k8qlS.png

這就是最後一題啦,也就是一開始提到的CSRF變種,Login CSRF

什麼是Login CSRF

和一般的CSRF不同,不是攻擊者冒用受害者身分進行操作,反而是讓受害者使用攻擊者指定的身分進行操作,最常見例子的是在購物網站上使用這種方法,因為雖然受害者有真正買到東西,好像沒有受害,但實際上信用卡,住址等等的資料已經保存在攻擊者的帳號上了

讓我們回到題目上,先用主帳號點看看按鈕

https://ithelp.ithome.com.tw/upload/images/20261007/20184109qQFTsNXcAW.png

能看到毫不意外的被看出來了
接下來創建一個新指定帳號csrf-mingming後再點看看

https://ithelp.ithome.com.tw/upload/images/20261007/20184109e3sjfaNAqy.png

報出恭喜了,讓我們再回到原本的mingming帳號看看

https://ithelp.ithome.com.tw/upload/images/20261007/20184109yvPeIF9tj5.png

我們就通過這題了,好耶!

明日內容: Security Misconfiguration


上一篇
[DAY23]仿生人是否會夢見網頁山羊?-- CSRF (上)
系列文
仿生人是否會夢見網頁山羊? 資安小白的30天Webgoat闖關紀錄 共 24 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言