:::info # Web II 講師:101 時間:8/27 13:30~16:30 課程簡報:[簡報](https://docs.google.com/presentation/d/1BinmjOjB3XKSwI3VQpZz88-2qzGVuWBM8Z24ppPLtZs/edit?usp=sharing) ::: ## XSS, Cross-Site Scripting - 跨站腳本攻擊 - 目的 - 竊取資料 - 騙你移動到假的網站 - 盜用身分 ## Review 通常腳本會塞 `alert` 測試 - 事件 - `onload`:頁面載入完畢時執行 - `<div onload=''></div>` - `onclick`:滑鼠點擊元素時執行 - `<span onclick=''></span>` - `onerror`:發生錯誤時執行 - 圖片載入錯誤:`<img src onerror=''>` - `<script></script>` [XSS Cheat Sheet](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet) ## 反射型 - 注入方式 - 將惡意程式隱藏在網址列or表單中 - 觸發方式 - 會在使用者點擊連結或提交表單時觸發 ## Lab 0x0 https://portswigger.net/web-security/cross-site-scripting/reflected/lab-html-context-nothing-encoded ## 儲存型 - 注入方式 - 將惡意程式儲存在伺服器資料庫 - 觸發方式 - 只要訪問含惡意程式的頁面,都會執行腳本 URL encode ## Lab 0x1 https://portswigger.net/web-security/cross-site-scripting/reflected/lab-html-context-nothing-encoded ## DOM 型 - 與反射型類似 - 在 URL 輸入 DOM 物件,把物件/事件嵌入網頁程式碼 - `document.getElementById('').innerHtml` ## Lab 0x2 https://portswigger.net/web-security/cross-site-scripting/dom-based/lab-document-write-sink #### 利用onload的解題步驟 1. 看到題目網頁,找到可以進行攻擊的輸入框 2. 在那個輸入框裡隨便打點東西,並點按按鈕送出 3. 按下F12,去觀察輸入的東西究竟跑到哪裡、修改了什麼 4. 找到有個img圖片標籤的src圖片網址後面明顯是我在輸入框裡隨便輸入的123 ![image](https://hackmd.io/_uploads/BkKeaxojC.png) 5.利用onload事件,會在圖片加載成功後,立即執行function動作的原理,開始做XSS注入 6.也就是要在輸入框打上 ```'"onload="alert('')"```,成功用另一種方法解題~ ## 預防 XSS 來路不明不要亂點 輸入帳密前要三思 保護餅乾:cookie:(HTTP only) ## XSS Game https://xss-game.appspot.com/ call 外部 api:`//google.com/jsapi?callback=alert` <!-- 聊天區 大家午安,有睡飽嗎 sicc:等一下就會看到我原地睡覺 新鮮的肝 -->