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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
jquery-cve-2022-31160 — jquery XSS Proof of Concept (PoC) | Kitploit
ツール/GitHubGitHub/cyberone-teamares/jquery-cve-2022-31160
Vulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityCTFLearning & Education
GitHubcyberone-teamares/jquery-cve-2022-31160

jquery-cve-2022-31160

jquery XSS Proof of Concept (PoC)

リポジトリを見る
1年前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

jQuery UI CVE-2022-31160 脆弱性デモンストレーション

Security Badge jQuery UI CVE Docker

このプロジェクトは、jQuery UI Checkboxradio ウィジェットのリフレッシュ時の脆弱性(CVE-2022-31160)を実証します。この脆弱性により、ウィジェットのリフレッシュ操作中に HTML エンティティのデコードが行われ、クロスサイトスクリプティング(XSS)攻撃につながる可能性があります。

🚨 セキュリティ警告

⚠️ このプロジェクトには、教育および研究目的のみの動作する XSS ペイロードが含まれています。

  • 本番システムでは使用しないでください
  • 管理された環境でのみ使用してください
  • セキュリティ研究および教育を目的としています

📋 目次

  • 脆弱性の概要
  • クイックスタート
  • プロジェクト構成
  • デモンストレーション
  • 技術詳細
  • Docker の使用方法
  • セキュリティ分析
  • 緩和策
  • 貢献

🔍 脆弱性の概要

CVE-2022-31160 の詳細

  • コンポーネント: jQuery UI Checkboxradio ウィジェット
  • 影響を受けるバージョン: jQuery UI ≤ 1.13.1
  • 脆弱性の種類: HTML エンティティデコードによるクロスサイトスクリプティング(XSS)
  • CVSS スコア: 6.1(Medium)
  • 初公開日: 2022年7月20日

根本原因

ラベル内の input に checkboxradio ウィジェットが初期化されると、そのウィジェットに対して .checkboxradio("refresh") を呼び出すと、ラベルコンテンツ内の HTML エンティティが誤ってデコードされます。これにより、安全にエンコードされた悪意のあるコンテンツが実行可能な JavaScript に変換される可能性があります。

攻撃ベクトル

root@kitploit:~
<!-- 安全なエンコードコンテンツ -->
<label for="checkbox">
  Text &lt;img src=x onerror=&quot;alert('XSS')&quot;&gt;
  <input type="checkbox" id="checkbox">
</label>

<!-- .checkboxradio("refresh") 実行後 -->
<label for="checkbox">
  Text 
  <input type="checkbox" id="checkbox">
</label>

🚀 クイックスタート

前提条件

  • Docker がシステムにインストールされていること
  • 開発者ツール付きの Web ブラウザ
  • Web セキュリティの基本概念の理解

ビルドと実行

root@kitploit:~
# プロジェクトディレクトリに移動
cd jquery-cve-2022-31160

# Docker イメージをビルド
docker build -t jquery-cve-2022-31160 .

# コンテナを実行
docker run -p 3000:3000 jquery-cve-2022-31160

デモンストレーションへのアクセス

コンテナが実行されたら、以下にアクセスします。

  • 簡易調査デモ: http://localhost:3000/survey
  • 代替調査 URL: http://localhost:3000/simplified-survey

📁 プロジェクト構成

root@kitploit:~
jquery-cve-2022-31160/
├── README.md                    # このドキュメント
├── Dockerfile                   # Docker コンテナ設定
├── package.json                 # Node.js 依存関係
├── server.js                    # Express.js サーバー
└── simplified-survey.html       # 調査形式のデモ

🎯 デモンストレーション

1. 簡易調査デモ (simplified-survey.html)

URL: http://localhost:3000/survey

  • 調査形式のインターフェース
  • 複数の脆弱性シナリオ
  • 強化された視覚的フィードバック

機能:

  • さまざまなシナリオを示す 4 つの異なるチェックボックスオプション:
    • 安全なオプション: エンコードされたエンティティなし(対照群)
    • ネットワークセキュリティ XSS: &lt;img src=x onerror=&quot;...&quot;&gt; - 即時実行
    • モバイルセキュリティ XSS: &lt;details ontoggle=&quot;...&quot; open&gt; - 即時実行
    • クラウドセキュリティ XSS: &lt;span onmouseover=&quot;...&quot;&gt; - インタラクティブ実行

分析ツール:

  • 詳細なコンソールログ出力
  • XSS 実行アラート
  • ステップバイステップの脆弱性追跡

🔧 技術詳細

脆弱性のメカニズム

  1. ウィジェット初期化: jQuery UI が checkboxradio ウィジェットを作成
  2. HTML エンティティの保存: エンコードされたエンティティを含むラベルコンテンツが処理される
  3. リフレッシュのトリガー: .checkboxradio("refresh") が呼び出される
  4. エンティティデコード: jQuery UI が誤って HTML エンティティをデコードする
  5. XSS 実行: デコードされた悪意のあるコンテンツが実行可能になる

影響を受けるコードパス

root@kitploit:~
// 脆弱な操作
$('#vulnerable-checkbox').checkboxradio();
$('#vulnerable-checkbox').checkboxradio("refresh"); // 脆弱性をトリガー

テストペイロード

デモには、さまざまな XSS 実行方法をテストするための複数のペイロードが含まれています。

root@kitploit:~
<!-- ネットワークセキュリティ: エラーイベント XSS(即時実行) -->
&lt;img src=x onerror=&quot;console.log('XSS via widget refresh!'); alert('Widget refresh XSS executed!');&quot;&gt;

<!-- モバイルセキュリティ: Details トグル XSS(即時実行) -->
&lt;details ontoggle=&quot;alert('Mobile Security XSS executed!'); console.log('Mobile XSS via details ontoggle!')&quot; open&gt;&lt;summary&gt;&lt;/summary&gt;&lt;/details&gt;

<!-- クラウドセキュリティ: インタラクティブ XSS(ユーザー操作が必要) -->
&lt;span onmouseover=&quot;alert('Hover XSS executed!'); console.log('Cloud Security XSS via mouseover!')&quot; style=&quot;text-decoration:underline; cursor:pointer;&quot;&gt;[Hover to trigger]&lt;/span&gt;

XSS 実行方法

1. エラーイベントハンドラ (onerror)

  • トリガー: 要素が DOM に挿入されると即座
  • 信頼性: 非常に高い(src=x で常に失敗)
  • 使用例: 即時 XSS 実行の実証
  • 現実世界のリスク: 高い - 入力フィルタを一般的にバイパス

2. Details トグルイベントハンドラ (ontoggle)

  • トリガー: details 要素の開閉状態が変わるとき
  • 信頼性: 非常に高い(open 属性で確実にトリガー)
  • 使用例: DOM 挿入時の即時実行
  • 現実世界のリスク: 高い - ブラウザ間で信頼性の高い実行

3. マウスイベントハンドラ (onmouseover)

  • トリガー: ユーザーの操作(ホバー)が必要
  • 信頼性: ユーザーが操作すれば高い
  • 使用例: ソーシャルエンジニアリングシナリオ
  • 現実世界のリスク: 中程度 - ユーザーの関与が必要

これらのペイロードが機能する理由

イベントハンドラの利点:

  • innerHTML で要素が挿入されたときに実行
  • <script> タグの制限をバイパス
  • 異なるブラウザで一貫して動作
  • 外部リソースのロードが不要
  • 状態ベースのトリガー(ontoggle など)は信頼性が高い

エンコーディングバイパス:

  • HTML エンティティ(&lt;、&quot;)が jQuery UI のリフレッシュによってデコードされる
  • 安全にエンコードされたコンテンツを実行可能なコードに変換
  • 現実世界のサニタイゼーションバイパスを示す
  • 複数の実行ベクトルが攻撃対象領域の多様性を示す

🐳 Docker の使用方法

イメージのビルド

root@kitploit:~
docker build -t jquery-cve-2022-31160 .

コンテナの実行

root@kitploit:~
# デフォルトポート 3000 で実行
docker run -p 3000:3000 jquery-cve-2022-31160

# カスタムポートで実行
docker run -p 8080:3000 jquery-cve-2022-31160

# バックグラウンドで実行
docker run -d -p 3000:3000 jquery-cve-2022-31160

# カスタム名で実行
docker run --name jquery-xss-demo -p 3000:3000 jquery-cve-2022-31160

コンテナ管理

root@kitploit:~
# 実行中のコンテナを一覧表示
docker ps

# コンテナを停止
docker stop jquery-cve-2022-31160

# コンテナを削除
docker rm jquery-cve-2022-31160

# イメージを削除
docker rmi jquery-cve-2022-31160

🔬 セキュリティ分析

影響評価

  • 深刻度: Medium(CVSS 6.1)
  • 攻撃の複雑さ: 低い
  • ユーザー操作: 必要(ページ操作)
  • スコープ: 変更なし(同一オリジン)
  • 機密性: 低い影響
  • 完全性: 低い影響
  • 可用性: なし

現実世界のシナリオ

この脆弱性は、以下のようなアプリケーションで悪用される可能性があります。

  1. jQuery UI の checkboxradio ウィジェットを使用している
  2. ラベル内でユーザー生成コンテンツを許可している
  3. HTML エンティティエンコーディングを使用してコンテンツをサニタイズしている
  4. プログラムでウィジェットをリフレッシュしている

検出方法

  • 静的解析: .checkboxradio("refresh") 呼び出しを検索
  • 動的解析: ウィジェット操作中の HTML コンテンツの変更を監視
  • 自動スキャン: DOM ベースの XSS を検出できるツールを使用
  • 手動テスト: エンコードされたペイロードでウィジェットリフレッシュをテスト

🛡️ 緩和策

即時対応

  1. jQuery UI の更新: バージョン 1.13.2 以降にアップグレード
  2. 入力検証: 適切なサーバーサイド検証を実装
  3. コンテンツセキュリティポリシー: 制限的な CSP ヘッダーを展開
  4. 出力エンコーディング: コンテキストに適した出力エンコーディングを使用

コード修正

root@kitploit:~
// リフレッシュ前にコンテンツをサニタイズまたは検証
function safeRefresh(element) {
    // リフレッシュ前にラベルコンテンツを検証
    const label = $(`label[for="${element.attr('id')}"]`);
    const content = label.html();
    
    // 潜在的に危険なコンテンツをチェック
    if (content.includes('<') || content.includes('javascript:')) {
        console.warn('潜在的に危険なコンテンツが検出されました');
        return;
    }
    
    element.checkboxradio("refresh");
}

セキュリティヘッダー

root@kitploit:~
// Express.js セキュリティヘッダー
app.use((req, res, next) => {
    res.setHeader('X-Content-Type-Options', 'nosniff');
    res.setHeader('X-Frame-Options', 'DENY');
    res.setHeader('X-XSS-Protection', '1; mode=block');
    res.setHeader('Content-Security-Policy', "default-src 'self'");
    next();
});

📚 教育価値

このプロジェクトは、以下のための教育リソースとして役立ちます。

  • セキュリティ研究者: DOM 操作の脆弱性を理解する
  • Web 開発者: jQuery UI のセキュリティ考慮事項を学ぶ
  • ペネトレーションテスター: 実践的な XSS 悪用手法
  • セキュリティ学生: ハンズオン脆弱性分析

🔗 参考文献

  • CVE-2022-31160 公式エントリ
  • jQuery UI セキュリティ勧告
  • OWASP XSS 防止チートシート
  • CWE-79: クロスサイトスクリプティング

📈 テストチェックリスト

このデモを使用する際は、以下を確認してください。

テスト前のセットアップ:

  • jQuery UI のバージョンを確認(1.13.0 であること)
  • 開発者ツールを開いてテスト(F12)
  • http://localhost:3000/survey にアクセス
  • 初期化メッセージがコンソールに表示されることを確認

脆弱性テスト:

  • 「🔄 Refresh Widgets」ボタンをクリック
  • ネットワークセキュリティオプション: 即座にアラートが実行されることを確認
  • モバイルセキュリティオプション: 即座にアラートが実行されることを確認
  • クラウドセキュリティオプション: 「[Hover to trigger]」テキストにマウスを重ねる
  • コンソールで詳細な脆弱性ログを確認

分析の確認:

  • XSS ペイロードの実行を検証(3 種類)
  • ウィジェットのリセット機能をテスト
  • チェックボックスの視覚的フィードバックが正しく動作することを確認

🤝 貢献

貢献は歓迎します。以下を行ってください。

  1. このリポジトリをフォーク
  2. 機能ブランチを作成
  3. 変更を加える
  4. 適切なドキュメントを追加
  5. プルリクエストを送信

改善の余地がある領域

  • 追加のペイロード例
  • より詳細な分析ツール
  • 強化された視覚的デモ

⚖️ 法的免責事項

このソフトウェアは教育および研究目的のみで提供されます。著者および貢献者は以下を表明します。

  • このソフトウェアの誤用について一切の責任を負いません
  • 悪意のある活動を奨励または容認しません
  • 許可されたテスト環境でのみ使用することを推奨します
  • 責任ある開示慣行に従うことを推奨します

📄 ライセンス

このプロジェクトは教育目的で MIT ライセンスの下で提供されます。


セキュリティ研究と教育のために作成 | 責任を持って使用 | 脆弱性は適切なチャネルを通じて報告

ツールをダウンロード