KeyFrame內部研究專用

Make Your Own JAILBROKEN DeepSeek That Hacks ANYTHING

DeadOverflow·6月14日週日·8 min中文

三句話摘要

利用 JavaScript 型別混淆漏洞繞過 XSS 過濾,並以 DeepSeek AI 輔助挖掘 Bug Bounty 漏洞。 後端只驗證格式、不驗證型別,是導致 `.includes()` 被陣列繞過的根本原因——永遠先確認輸入是預期的型別,再做內容檢查。 DeepSeek 無內容過濾的實用優勢:講者直接將伺服器源碼貼給 DeepSeek 詢問漏洞,DeepSeek 不需要任何提示詞包裝或藉口,直接回應分析結果,這讓滲透測試工作流程更為直接。

重點整理

重點
  • 1

    DeepSeek 無內容過濾的實用優勢:講者直接將伺服器源碼貼給 DeepSeek 詢問漏洞,DeepSeek 不需要任何提示詞包裝或藉口,直接回應分析結果,這讓滲透測試工作流程更為直接。

  • 2

    `.includes()` 的型別混淆是核心漏洞:JavaScript 的 `.includes()` 方法同時適用於字串與陣列,但行為不同——對字串是子字串比對,對陣列是嚴格元素比對。當 payload 以陣列形式傳入時,`includes('javascript')` 因找不到完全相符的元素而回傳 `false`,成功繞過過濾。

  • 3

    型別信任錯誤是後端驗證的常見盲點:後端假設輸入一定是字串,卻沒有驗證資料型別,導致攻擊者可透過修改 JSON 請求體,將字串換成陣列,使驗證邏輯失效。

  • 4

    DeepSeek 的局限性同樣存在:DeepSeek 初步發現了 `https` 缺少強制驗證及大小寫繞過問題,但在深入分析型別混淆漏洞時出現理解困難,需要講者手動引導才能完成,顯示 AI 工具仍是輔助角色。

實用技巧與重點

乾貨
  • 漏洞類型:型別混淆(Type Confusion)導致的 XSS(跨站腳本攻擊)
  • 目標平台:Node.js 本地聊天網站
  • 使用工具:DeepSeek(源碼漏洞分析)、Burp Suite(HTTP 攔截與修改請求)、FoxyProxy(瀏覽器代理切換)
  • 過濾邏輯(有問題的)
  • 檢查連結是否包含 `https`(`url.includes('https')`)
  • 檢查連結是否包含 `javascript`(`url.includes('javascript')`)
  • Payload 結構:`["javascript:alert(1)//", "https"]`
  • 陣列轉字串後為 `javascript:alert(1)//,https`
  • `includes('https')` → `false`(陣列元素比對,找不到單獨的 `https` 子字串)
  • `includes('javascript')` → `false`(同理,陣列中沒有純 `javascript` 元素)
  • DeepSeek 額外發現:可用 `http` 替代 `https` 繞過;可用大小寫變體 `HTTPS` 繞過
  • Bug Bounty 獎金:$500 美元
  • 挖掘耗時:約 1 小時

結論

結論

後端只驗證格式、不驗證型別,是導致 `.includes()` 被陣列繞過的根本原因——永遠先確認輸入是預期的型別,再做內容檢查。

完整解析

詳細

這支影片的背景是講者對一個真實本地聊天網站的滲透測試。該網站以 Node.js 建置,允許使用者發送可點擊的 HTTP 連結。為了防止 XSS 攻擊,開發者在後端加入了連結驗證邏輯:用 `.includes()` 確認連結包含 `https`,並同時確認連結不包含 `javascript:` 字首。乍看之下這個機制合理,但問題藏在 JavaScript 語言本身的設計細節裡。

講者取得源碼後,將完整伺服器程式碼貼給 DeepSeek 並直接詢問是否有安全漏洞。DeepSeek 迅速回應了幾個問題,包括缺少強制 `https` 驗證(攻擊者可改用 `http`)以及大小寫繞過問題。這些都是有效的發現,甚至連講者自己也承認其中一點是他沒有發現的盲點。不過當講者要求 DeepSeek 深入解釋型別混淆漏洞時,AI 開始出現理解混亂,需要講者主動引導,顯示 DeepSeek 在此類深層邏輯推理上仍有侷限。

核心漏洞在於:JavaScript 的 `.includes()` 方法在字串上執行子字串搜尋,但在陣列上執行的是嚴格的元素相等比對。開發者預設傳入的 `url` 是字串,但透過 Burp Suite 攔截請求並修改 JSON body,可以把字串替換成陣列 `["javascript:alert(1)//", "https"]`。此時 `url.includes('javascript')` 找不到一個完全等於 `'javascript'` 的陣列元素,回傳 `false`,過濾被繞過;`url.includes('https')` 同樣因為陣列元素是完整字串 `"https"` 而非作為子字串的 `https`,也回傳 `false`,第一道檢查反而失敗。當陣列最終被轉成字串送到前端渲染時,結果為 `javascript:alert(1)//,https`,瀏覽器解析為合法的 `javascript:` 連結,點擊後即觸發 XSS。

講者在瀏覽器開發者工具的 Console 中實際示範了 `.includes()` 在字串與陣列上的差異,清楚證明了漏洞的成因,並用 Burp Suite 現場觸發 `alert(1)`。最終此漏洞被提交並獲得 $500 美元的 Bug Bounty 獎金。整個過程不到一小時,充分說明了即使是「簡單」的型別混淆錯誤,也能造成真實的安全風險。

關鍵時刻

Pipeline v2

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

事實查核

Pipeline v2

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

更多「Web2 安全」的內容

SANS Stormcast Tuesday, August 25th, 2026: DOUBLECUP PNG; WebAudio Fingerprinting; Expired Domains; Android; Car
7 min
Web2 安全英文PODCAST8月25日

SANS Stormcast Tuesday, August 25th, 2026: DOUBLECUP PNG; WebAudio Fingerprinting; Expired Domains; Android; Car

SANS Stormcast

  • PNG 容器攻擊的簡易性設計:Double Cup 不依賴複雜的 Exif 或隱寫技術,只用 PNG 副檔名和檔頭來偽裝,核心是利用 findstr 指令的常見可用性讓執行變得無需額外工具。
  • Web Audio API 的隱密指紋識別:音訊於增益零的無聲狀態下播放,使用者完全無感,但錄製波形足以建立裝置特徵,在瀏覽器原生功能層面難以區分是反詐欺還是過度追蹤。
  • 域名過期引發的串聯漏洞:DMARC 報告端點使用過期域名是常見疏漏,允許攻擊者透過簡單的域名註冊取得他人的 SPF/DKIM 錯誤報告,進而收集目標系統配置情報。
Risky Bulletin: Expired credit cards can be used for malicious transactions
5 min
Web2 安全英文PODCAST8月24日

Risky Bulletin: Expired credit cards can be used for malicious transactions

Risky Business

  • 支付安全的非對稱風險:Visa卡利用未加密的卡片資料與NFC通訊,攻擊者可藉由中間人技術竄改過期日期進行交易,但MasterCard、美運卡與Discover的防護更完善,顯示不同發卡機構的安全架構存在明顯差異。
  • 國家級駭客活動的連鎖延伸:北韓Lazarus集團在2月單一事件已累積100名受害者,涵蓋大學、警察部門、媒體與醫療機構,伊朗駭客則針對基礎建設如電力系統發動破壞性攻擊,反映地緣政治在網路戰爭中的升溫。
  • AI加速漏洞生態的雙面刃:AI工具催生近2萬份漏洞概念驗證代碼發布,但同時也導致大量失效漏洞代碼氾濫,增加資安團隊甄別真實威脅的難度;Mayer Protocol遭攻擊事件中,駭客用AI鏈接六個無關的小漏洞完成盜竊170萬美元的攻擊。
SANS Stormcast Monday, August 24th, 2026: More Entra Powershell; Entra Vulnerability; GitLab Vuln (and PoC); GTA 6 Leak Malware
5 min
Web2 安全英文PODCAST8月24日

SANS Stormcast Monday, August 24th, 2026: More Entra Powershell; Entra Vulnerability; GitLab Vuln (and PoC); GTA 6 Leak Malware

SANS Stormcast

  • Microsoft EntraID 的遠端代碼執行漏洞已由微軟修補,初期報告顯示已遭利用但後來更正為未遭利用。這反映 Microsoft 在雲端軟體安全上的透明度提升,對漏洞採用與內部軟體相同的 CVE 編號和公告流程。
  • PowerShell 指令碼可用於驗證 MFA 部署完整性,特別是找出未啟用 MFA 的遺漏帳號。同時可以分析 EntraID 登入日誌中的異常行為,如風險係數評估和地理位置檢測,幫助組織快速識別可疑登入。
  • GitLab 的 GraphQL 代碼注入漏洞允許未認證攻擊者刪除或修改儲存庫,潛在導致供應鏈攻擊。已有公開概念驗證 (PoC) 存在,使用內部部署 GitLab 的組織必須立即修補。