JWT 攻擊者

JWT 攻擊者

在瀏覽器中偵測 JSON Web 權杖的已知攻擊面並偽造新權杖。

預設庫:

暫無偵測結果——請在上方貼上 JWT。

偽造面板

kid 面板

渲染的伺服器端路徑(永遠不會被擷取)
keys/.pem

關於 JWT 攻擊者

JWT 攻擊者是一款面向安全工程師、滲透測試員、CTF 玩家和程式碼審查員的瀏覽器工具。同族的 JWT 解碼器 假定權杖格式良好,JWT 創建器 假定使用者處於防禦方,而 JWT 攻擊者不做任何假設:貼上任何三段 JWT, 即可在一個偵測面板中即時看到權杖所暴露的所有已知攻擊面。

工具偵測的五類攻擊

  • alg: none 繞過 — 包括任何大小寫變體(NoneNONENoNe)和任何前導 / 尾部空白。帶有 alg: none 的權杖宣告不需要簽章;存在漏洞的驗證方會原樣接受。
  • HS256 ↔ RS256 金鑰混淆 — 當權杖的 alg 屬於 RSA 系列且提供了公鑰時,工具會鑄造一個以公鑰位元組作為 HMAC 金鑰的 HS256 權杖,並透過頁面上兩次點擊解鎖的金鑰混淆偽造功能報告該簽章是否會被存在漏洞的驗證方接受。
  • kid 注入標記 — 偵測 kid 標頭值中的路徑遍歷(../..%2f%2e%2e%2f)、SQL 注入('--union selector 1=1)和 XSS 標記(<script>javascript:on*=)。每個匹配都是一個獨立的偵測行,並標註具體標記。
  • 標頭注入 — 偵測標頭中是否存在 jkujwkx5ux5c,並以一行 SSRF / 金鑰替換 / 信任儲存注入風險說明及 URL 或金鑰 blob 渲染在標題旁邊。
  • 基於聲明的重播 / 替換提示 — 缺少 exp、缺少 nbfiat 在未來、exp 在過去、以及 exp - iat 超過 30 天。時間計算複用 JWT 解碼器的 interpretTimeClaims;新程式碼位於一個薄包裝中,將每種狀態轉換為偵測行。

kid 面板的作用

kid 面板 允許您輸入任何自訂的 kid 值,並查看它將解析為的伺服器端路徑,使用您控制的範本 (預設:keys/<kid>.pem)。它純粹是用戶端字串組裝——永遠不會向渲染的路徑發起網路請求。 目的是在無需觸碰真實伺服器的情況下示範 kid 注入攻擊(路徑遍歷、SQLi、透過 kid 的 XSS)。 例如,輸入 ../../etc/passwd,面板會渲染 keys/../../etc/passwd.pem——這正是存在漏洞的驗證方將讀取的檔案路徑。 "Swap kid" 操作將面板的 kid 寫入偽造面板的標頭中,因此您可以立即使用新的 kid 簽署一個變體並研究產生的權杖。

"使用當前金鑰偽造" 面板

在偵測面板下方,偽造面板支援全部九種 JWS 演算法(HS256、HS384、HS512、RS256、RS384、RS512、ES256、ES384、ES512), 並複用 JWT 解碼器的 jwt.js 中的 signJwt / verifyJwt——不新增任何加密程式碼。 選擇演算法,將標頭和負載編輯為 JSON,提供金鑰(標籤和占位符根據演算法系列在"共享金鑰"和"PEM 私鑰"之間自動切換, 鏡像 JWT 創建器的模式),點擊 簽署 生成三段權杖,點擊 複製 複製到剪貼簿, 點擊 驗證 使用當前提供的金鑰執行簽章驗證。

alg: none 偽造的兩次點擊門控

"生成 alg: none 變體" 按鈕由 alg 偵測行上的小 顯示 alg: none 變體 摺疊面板門控, 以防止隨意貼上權杖的訪客意外地在剪貼簿上產生 alg: none 權杖。 按鈕根據摺疊面板的展開狀態條件渲染——在使用者點擊摺疊面板之前,它不在 DOM 中(不僅僅是隱藏)。 專業受眾願意點擊兩次;不值得為節省一次點擊而留下安全隱患。

常見使用場景

  • CTF 挑戰 — "五個預設" 庫為每種攻擊類提供一個規範的已知錯誤權杖(alg-none 繞過、帶 ../ 的 kid、jku 標頭注入、用於金鑰混淆的 RS256 + 公鑰、乾淨權杖),使示範和復盤一鍵可達。
  • 程式碼審查 — 從拉取請求貼上一個權杖,一眼即可看出驗證方是否暴露於 alg-none 繞過、金鑰混淆、kid 注入或聲明稽核類。
  • 滲透測試報告 — 頁面內的 alg-none 偽造和金鑰混淆偽造讓您鑄造繞過變體並將其複製到剪貼簿而無需離開頁面;產生的權杖可往返於同族 JWT 解碼器以進行驗證。
  • 教學 — 每個偵測的說明區塊(附有相關 RFC 或 PortSwigger Academy 參考)以及 kid 面板被設計為可與安全教科書一起閱讀。

隱私不變數

所有分析、五個偵測器、兩個偽造以及 kid 面板完全在您的瀏覽器中執行。永遠不會有權杖、金鑰、簽章輸出或 kid 衍生的 URL 透過網路請求傳送。執行時由端到端測試套件中的 Playwright page.on('request') 監聽器 驗證(與 JWT 解碼器和郵件標頭分析器工具使用的模式相同)。該站台在生產環境中透過 HTTPS 提供,因此瀏覽器的 SubtleCrypto API(由金鑰混淆偽造使用)可用;罕見的非安全上下文情況會停用金鑰混淆偽造按鈕並給出明確說明, 工具的其餘部分仍然可用。

留言

請接受「功能性」Cookie 類別以查看和發表留言。