Make Your Own JAILBROKEN DeepSeek That Hacks ANYTHING
三句話摘要
利用 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 只會顯示它真正能驗證的內容。


