KeyFrame

Day 1 Bug Bounty Class 🔥 | WHY XSS Exists? Reflected XSS Explained with Fix | hacker vlog

Hacker Vlog·2月3日週二·92 min英文

三句話摘要

以 Logic-Based 視角完整解析跨站腳本攻擊(XSS)的成因、類型、真實影響與防禦方法。 --- XSS 之所以存在,根本原因是開發者對使用者輸入的盲目信任與輸出編碼的缺失,理解這條信任鏈才能從根源防禦,而非只會「插 script 跳彈窗」。 1. XSS 存在的根本原因是信任鏈破壞

重點整理

重點
  • 1

    1. XSS 存在的根本原因是信任鏈破壞

  • 2

    伺服器無條件信任使用者輸入(未做驗證),瀏覽器無條件信任伺服器回應(未做過濾),攻擊者正是利用這條「信任鏈」的空隙,把惡意腳本夾帶進正常的請求-回應流程中。

  • 3

    2. 程式碼層面的直接漏洞是「缺乏輸出編碼」

  • 4

    最常見的錯誤模式是直接將使用者輸入回顯(如 PHP 的 `echo $_GET['name']`),資料到達瀏覽器後被解讀為 HTML/JS 而非純文字。單純的輸入驗證不夠,必須同時對輸出做編碼,才能斷絕注入路徑。

  • 5

    3. 三種危險 JS 函數是 DOM-Based XSS 的溫床

  • 6

    `innerHTML`、`document.write`、`eval` 這三個函數會直接將字串當作程式碼執行,一旦將不可信的使用者資料傳入,攻擊者即可運行任意腳本。ChatGPT/Gemini 官方文件均對這三個函數標注明確的安全警告。

  • 7

    4. Stored XSS 的衝擊最大,影響所有訪客

  • 8

    與 Reflected XSS 只影響點擊惡意連結的使用者不同,Stored XSS 將 payload 永久寫入資料庫,每一個瀏覽該頁面的使用者都會在自己的瀏覽器中執行惡意腳本,且 2FA 也無法阻擋已被竊取的 Session Token。

  • 9

    --

實用技巧與重點

乾貨
  • 具體數字 / 案例數據
  • 某食品外送網站因 XSS 遭 `window.location` 重新導向攻擊,全站頁面跑流量 6–8 個月後商業幾近崩潰
  • 2FA(雙因素驗證)在 Session Hijacking 情境下完全失效
  • 工具 / 平台 / 函數名稱
  • 測試環境:DVWA Lab(Damn Vulnerable Web Application)
  • 滲透工具:Burp Suite(Decoder 模組)
  • 瀏覽器工具:Chrome DevTools → Elements、Console、Network、Sources 分頁
  • AI 輔助:ChatGPT、Gemini(用於查詢危險函數說明)
  • 危險 JS 函數:`innerHTML`、`document.write`、`eval`
  • PHP 防禦函數:`htmlspecialchars()`
  • 漏洞類型對照
  • | 注入內容 | 形成的漏洞類型 |
  • |---|---|
  • | JavaScript | XSS |
  • | HTML 標籤 | HTML Injection |
  • | SQL 語句 | SQL Injection |
  • | XML 資料 | XML Injection |
  • | OS 指令 | Command Injection |
  • 防禦步驟清單
  • Input Sanitization(輸入驗證)
  • Output Encoding(輸出編碼)—— 使用 `htmlspecialchars()` 將 `<` → `&lt;`、`>` → `&gt;` 等
  • 避免使用 `innerHTML`、`document.write`、`eval`
  • 啟用 CSP Header(Content Security Policy)
  • 以攻擊者視角定期測試(Attacker Mindset Testing)
  • 手動測試流程
  • 找到輸入點:搜尋框、Login 表單、Comment 區、URL 參數、HTTP Header
  • 注入測試字串(如 `test`)
  • 確認字串是否出現在:頁面顯示 / HTML Source / JavaScript 程式碼
  • 觀察 DevTools Console 有無錯誤
  • 確認反映位置後,嘗試對應的 XSS payload
  • --

結論

結論

XSS 之所以存在,根本原因是開發者對使用者輸入的盲目信任與輸出編碼的缺失,理解這條信任鏈才能從根源防禦,而非只會「插 script 跳彈窗」。

完整解析

詳細

這支影片是「Logic-Based Building」系列的起點,主講人聚焦在許多人知道 XSS 名字、卻不知道它為何存在的核心問題。影片的出發點是:安全漏洞不是憑空出現的,它來自開發者在架構設計時對信任關係的錯誤假設。伺服器假設使用者只會輸入符合預期格式的資料(電話號碼欄位就只放電話號碼),瀏覽器則假設來自伺服器的回應都是安全的,攻擊者正是利用這兩層「盲目信任」,把惡意 JavaScript 混入正常的資料流中,讓受害者的瀏覽器在不知情的情況下執行。

在程式碼層面,主講人以 DVWA Lab 的 Low 等級原始碼為例,展示最簡單的漏洞模式:`echo $_GET['name']`,開發者直接把使用者輸入印到頁面上,完全沒有任何過濾或編碼,導致瀏覽器把收到的字串解析成 HTML 或 JavaScript 並執行。除此之外,URL 參數的「盲目信任」也是常見根因——許多開發者直接讀取 URL 中的 query string 並渲染到頁面,而沒有驗證其內容。JavaScript 層面則特別點出三個危險函數:`innerHTML`(MDN 文件明確警告不可用於不可信輸入)、`document.write`(現代開發已列為 bad practice)、`eval`(可將任意字串當作程式碼執行,官方文件稱「eval is evil」),這三個函數一旦接收到攻擊者控制的資料,就等同於直接幫攻擊者執行任意腳本。

影片接著區分三種 XSS 類型:Reflected XSS 的 payload 透過 URL/GET 參數傳送,伺服器讀取後立即反映在頁面上,適合透過惡意連結散布;Stored XSS 則將 payload 永久寫入資料庫,每個瀏覽該頁面的用戶都受影響,危害最廣,且 2FA 在 Session Token 已被竊取的情況下完全無效;DOM-Based XSS 純粹發生在客戶端,不經過伺服器,因此傳統的伺服器端防護對它無效,但相對難以散布給其他用戶。主講人也舉了一個真實商業案例:一家食品外送網站遭到 XSS 攻擊,攻擊者利用 `window.location` 將全站頁面重新導向至其他網址,網站 SEO 排名崩跌,流量持續流失長達 6 到 8 個月,商業幾近瓦解,事後檢查才發現幾乎所有頁面都存在 XSS 漏洞。

在防禦面,主講人強調輸入驗證只是第一步,輸出編碼(Output Encoding)才是防禦的核心,也是面試中最能展現深度的答案。PHP 的 `htmlspecialchars()` 函數會把 `<`、`>` 等特殊字元轉換為 HTML 實體(`&lt;`、`&gt;`),讓瀏覽器把腳本當成純文字而非程式碼。此外應避免使用危險的 JS Sink 函數,並在 HTTP Response Header 中啟用 Content Security Policy(CSP)限制腳本來源。最後,測試時應以攻擊者視角出發,在搜尋框、登入表單、評論區、URL 參數等所有輸入點注入測試字串,透過 Chrome DevTools 確認字串出現在頁面、HTML Source 或 JavaScript 中的位置,再針對性地嘗試對應的 payload。

---

關鍵時刻

Pipeline v2

帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。

事實查核

Pipeline v2

說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

更多「Web2 安全」的內容

Apple Can’t Fix This Security Exploit…
編輯精選
7 min
Web2 安全英文6月20日

Apple Can’t Fix This Security Exploit…

TechLinked

  • Apple 舊款 iPhone 存在不可修補的硬體漏洞:由 Paradigm Shift 研究團隊發現,漏洞位於 USB 控制器層,可在 iOS 啟動前就取得設備控制權。由於需要實體接觸與有線連接,一般使用者日常風險較低,但手機被竊後就可能成為攻入者的入口。
  • META 積極推動聯邦立法以對抗州級訴訟:面對全美超過千件涉及平台縱容犯罪的民事案件,META 選擇透過遊說要求聯邦政府介入、統一管轄,以取代各州分散的訴訟壓力。這是防禦性法律策略,而非從根本解決平台安全問題。
  • Waymo 自駕安全問題持續累積:近 4,000 起事故紀錄中包含闖入施工封閉區、駛入水中等嚴重情境,已觸發多次 NHTSA 正式調查與召回。這顯示自駕技術在非結構化環境下仍有系統性弱點。
Eksploitasi LPE Terbaru 2026: Dirty Frag | CVE-2026-43284 & CVE-2026-43500 | Rooting Linux
10 min
Web2 安全英文6月20日

Eksploitasi LPE Terbaru 2026: Dirty Frag | CVE-2026-43284 & CVE-2026-43500 | Rooting Linux

Naughtysec

  • DirtyFrag 機制類似 DirtyPipe,但因無 Race Condition 而不會造成 Kernel 崩潰或觸發 Buffer Overflow,舊版類似漏洞(如 Buckeye 時期)因有競爭條件會導致伺服器變得如 DoS 狀態,DirtyFrag 解決了這個不穩定問題。
  • 目標防火牆封鎖了標準 Reverse Shell(PentestMonkey 的 bash/nc 類型),因此必須改用 Chisel 建立 TCP Tunnel,再透過 gsocket 穿透防火牆,而非直接連線。
  • gsocket 的 session 具備高度持久性,即使伺服器重啟後連線仍可維持,講者提到曾有 session 存活超過一年,使其成為理想的隱蔽隧道工具。
Hack The Box Administrator | Full Walkthrough
編輯精選
23 min
Web2 安全英文6月20日

Hack The Box Administrator | Full Walkthrough

Cole Mahoney Cybersecurity

  • BloodHound 的「Outbound Object Control」是核心突破口:每換一個使用者就立刻回到 BloodHound 查看該帳號對外的 AD 物件控制權,這條鏈式思維決定整個攻擊路線,是橫向移動的核心依據。
  • 強制改密碼(ForceChangePassword)是 GenericAll 最快的利用方式:對 Michael、Benjamin 等帳號都直接用 `net rpc password` 改密,比注入 ACE 或其他手法更直接,適合在已控帳號有 GenericAll 的場景快速推進。
  • Password Safe 資料庫是隱藏的憑證倉庫:Benjamin 因隸屬 Share Moderators 群組能存取 FTP,其中藏有 `backup.psafe3` 加密資料庫;用 `pwsafe2john` 提取 hash、John 破解 master password 後,即可取出 Emily 的明文密碼。