Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2023-48223 — Proof-of-conceptで、fast-jwtライブラリにおけるJWTアルゴリズム混乱を実証します。脆弱なサーバー、トークン偽造スクリプト、およびセキュリティ教育用の検証修正が含まれています。 | Kitploit
ツール/GitHubGitHub/lucastran05/cve-2023-48223
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育ラボと実践
GitHublucastran05/cve-2023-48223

CVE-2023-48223

Proof-of-conceptで、fast-jwtライブラリにおけるJWTアルゴリズム混乱を実証します。脆弱なサーバー、トークン偽造スクリプト、およびセキュリティ教育用の検証修正が含まれています。

リポジトリを見る
485ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2023-48223 PoC(fast-jwt アルゴリズム混乱)

このリポジトリは、トークン検証時に許可されたアルゴリズムをロックしていない fast-jwt における JWT アルゴリズム混乱(algorithm confusion)を実演します。

環境構築

必要条件

  • Node.js 18 以降
  • npm
  • OpenSSL(ターミナルの PATH で利用可能である必要があります)

1) 依存関係のインストール

プロジェクトのルートから次を実行してください:

root@kitploit:~
npm install

2) RSA キーの生成

このアプリは次のファイルを必要とします:

  • keys/private.pem
  • keys/public.pem

次のいずれかのコマンドセットを実行してください。

PowerShell(Windows):

root@kitploit:~
New-Item -ItemType Directory -Path keys -Force | Out-Null
openssl genrsa -out keys/private.pem 2048
openssl rsa -in keys/private.pem -RSAPublicKey_out -out keys/public.pem

Linux/macOS/Git Bash:

root@kitploit:~
mkdir -p keys
openssl genrsa -out keys/private.pem 2048
openssl rsa -in keys/private.pem -RSAPublicKey_out -out keys/public.pem

3) サーバーの起動

root@kitploit:~
node server.js

想定される出力:

root@kitploit:~
Server running at http://localhost:3000

クイック実行(PoC フロー)

1) 通常のトークンを取得する

root@kitploit:~
curl http://localhost:3000/generateToken

2) 管理者トークンを偽造する

root@kitploit:~
node sign.js

出力されたトークンをコピーします。

3) 偽造したトークンで管理者エンドポイントを呼び出す

root@kitploit:~
node checkAdmin.js <JWT_TOKEN>

攻撃が成功すると、レスポンスに Welcome Admin! が含まれます。

なぜ脆弱なのか

server.js では、検証側がアルゴリズムを制限していません:

root@kitploit:~
const verifySync = createVerifier({
  key: publicKey,
});

アルゴリズムの許可リストがないため、サーバーは公開鍵を HMAC シークレットとして署名された悪意のある HS256 トークンを受け入れる可能性があります。

脆弱なライブラリの模倣方法の説明(レポート用)

チームの CVE デモでは、脆弱な対象はライブラリであり(単独では実行できません)。そのため、実際のシステムがそのライブラリの API を呼び出す方法を模倣するために、模擬アプリケーションを使用する必要があります。このリポジトリでは、server.js が模擬アプリケーション層です。

  • エンドポイント /generateToken: このルートは fast-jwt の createSigner を RS256 で呼び出し、通常ユーザー(admin=false)向けの有効なトークンを生成します。目的は、偽造トークンと比較するための「通常の」ベースライントークンを作成することです。
  • エンドポイント /admin: このルートは Bearer トークンを受け取り、fast-jwt の createVerifier を呼び出してトークンを検証し、payload.admin に基づいて管理者権限を決定します。脆弱な実装の要点は、verifier が algorithms をロックしていないため、アルゴリズム混乱(algorithm confusion)が発生することです。

補助的な PoC コードフロー:

  • sign.js: 攻撃者が createSigner を HS256 で呼び出し、公開鍵をシークレットとして使用して偽造トークン(admin=true)に署名する様子を模倣します。
  • checkAdmin.js: 偽造トークンを使って /admin にリクエストを送信し、脆弱な設定のサーバーが偽造トークンを受理することを証明します。

要約すると、チームはライブラリの関数を書き直していません。脆弱なライブラリの元の API(createSigner、createVerifier)を模擬アプリケーション内で使用して、悪用シナリオを正確に再現しているだけです。

修正

検証を RS256 のみに制限します:

root@kitploit:~
const verifySync = createVerifier({
  key: publicKey,
  algorithms: ["RS256"],
});

安全性に関する注意

このプロジェクトは、管理されたラボ環境でのセキュリティ学習のみを目的としています。

ツールをダウンロード