iT邦幫忙

2026 iThome 鐵人賽

DAY 13
0
Security

仿生人是否會夢見網頁山羊? 資安小白的30天Webgoat闖關紀錄系列 第 13 篇

[DAY13]仿生人是否會夢見網頁山羊?--DOM-Based XSS以及Stored XSS

  • 分享至 

  • xImage
  •  

今天便要講完剩下的兩種XSS啦,原本想分成兩篇發的,但感覺內容好像有點少所以就合併了,加上明天的XSS防禦的話也才3篇,看起來是真的要講到Path traversal了,希望夠講四篇吧,實在不行的話就把之後的內容提前了

DOM Based XSS

滲透者能透過誘使受害者點擊惡意URL,利用網頁前端設計時不處理輸入的弱點將輸入直接把惡意輸入塞入DOM
,瀏覽器收到輸入就會誤以為是程式碼,從而執行它

Webgoat XSS 編號10(第3題)

https://ithelp.ithome.com.tw/upload/images/20260926/201841095x5Dt1WvAR.png

這關要求我們找出能夠執行指令用的測試用路徑(Route)
題目告訴了我們要來檢查javascript代碼
那我們就從這裡開始吧

https://ithelp.ithome.com.tw/upload/images/20260926/20184109OWXnULaEWx.png

Firefox 點擊F12後換到Debugger,便可以看到我們瀏覽器讀取到的前端檔案
把他們全部點開看看有甚麼東西

https://ithelp.ithome.com.tw/upload/images/20260926/20184109roGIePU0PB.png

接著我們就會發現,在view裡面好像有個跟我們目標相關的檔案叫做GoatRouter.js?
把它點開來,查看看有沒有和test相關的東西

https://ithelp.ithome.com.tw/upload/images/20260926/20184109k0AyjodIcP.png

https://ithelp.ithome.com.tw/upload/images/20260926/20184109orWN7Dn2Om.png

可以看到,和test匹配的結果有4個,一部份是testroute
另一部份是testroute看起來和lessoncontroller.js相關
那就讓我們開啟lessoncontroller.js並再搜尋一次關於test的東西

https://ithelp.ithome.com.tw/upload/images/20260926/20184109n3O4dZZEOz.png

這次結果只有3個匹配,好消息是都在一起,看起來我們要找的東西可能和lessonContentView.js相關
繼續繼續!

https://ithelp.ithome.com.tw/upload/images/20260926/201841099DlLhes2jN.png

看起來總算到底了,可以看到base route就是test後面加其他東西
又因為上面有提示start.mvc#lesson/算是一種base route的範例
把start.mvc#lesson/裡面的lesson改成test試試看

https://ithelp.ithome.com.tw/upload/images/20260926/20184109uj50o6lTBm.png

成功了!

Webgoat XSS 編號11(第4題)

https://ithelp.ithome.com.tw/upload/images/20260926/20184109iWmTfTsVtL.png

這題我們便要用剛剛找到的test路徑來使用腳本啦
先在輸入框把網址改成

http://127.0.0.1:8080/WebGoat/start.mvc#test/<script>webgoat.customjs.phoneHome()</script>

後點enter...

https://ithelp.ithome.com.tw/upload/images/20260926/201841094Pn3bTnmpb.png

會發現甚麼事情都沒發生
這是因為在網頁和瀏覽器中
這種包含<>的網址有可能會被網頁提前轉譯,所以我們要把他轉成url編碼,傳送進去時才會是我們要的模樣
<是%3C
>是%3E
/是%2F
這樣我們的網址會變成

http://127.0.0.1:8080/WebGoat/start.mvc#test/%3Cscript%3Ewebgoat.customjs.phoneHome()%3C%2Fscript%3E

https://ithelp.ithome.com.tw/upload/images/20260926/20184109xscw29hTKK.png

這樣我們便能讓我們的網址成功被解析並且執行腳本了

Stored XSS

把XSS指令存入網頁內能讓其他人存取到的地方(E.g 留言),讓瀏覽器讀取伺服器送過來的受汙染資料的時候中招

Webgoat XSS Stored 編號3(第1題)

https://ithelp.ithome.com.tw/upload/images/20260926/201841099tvDT0yONb.png

(這頁真的很大,縮放到80%還70%都放不下)

總而言之,這關的目標很簡單,就是要讓我們能夠靠留言板執行腳本
讓我們在留言裡面輸入
<script>webgoat.customjs.phoneHome()</script>

https://ithelp.ithome.com.tw/upload/images/20260926/20184109ucQUzNFtbE.png

可以看到我們明明輸入了一長串,最後跑出來卻是空留言
讓我們開Console看看

https://ithelp.ithome.com.tw/upload/images/20260926/20184109cKGw6wFCKu.png

看起來我們的腳本成功執行了
這說明我們成功的把腳本植入了這個網站的留言板

XSS的內容感覺好少,DOM XSS和Stored XSS兩個合在一起感覺也沒多少
總之,明天就是XSS本體的最後一天了

明日內容:XXS防護


上一篇
[DAY12]仿生人是否會夢見網頁山羊?--XSS原理及Reflected XSS
下一篇
[DAY14]仿生人是否會夢見網頁山羊?--XSS防護
系列文
仿生人是否會夢見網頁山羊? 資安小白的30天Webgoat闖關紀錄 共 18 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言