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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2019-9511_Priority-Churn-Data-Dribble — CVE-2019-9511 (Data Dribble) および CVE-2019-9513 (Priority Churn) のDoSベクターを許可された環境で制御検証するための軽量なHTTP/2プローブ。 | Kitploit
ツール/GitHubGitHub/harley-ghostie/cve-2019-9511_priority-churn-data-dribble
脆弱性分析エクスプロイトウェブセキュリティネットワークセキュリティペネトレーションテスト
GitHubharley-ghostie/cve-2019-9511_priority-churn-data-dribble

CVE-2019-9511_Priority-Churn-Data-Dribble

CVE-2019-9511 (Data Dribble) および CVE-2019-9513 (Priority Churn) のDoSベクターを許可された環境で制御検証するための軽量なHTTP/2プローブ。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

HTTP/2 CVE-2019-9511 & CVE-2019-9513 Lightweight Probes

CVE CVE-2019-9511 および CVE-2019-9513 に関連する動作を軽量に検証するためのスクリプトリポジトリです。両CVEはHTTP/2実装におけるサービス拒否ベクトルに関連しています。

これらのスクリプトは、許可された環境での技術的な検証を支援するために作成されました。サーバーがHTTP/2をネゴシエートし、Data Dribble や Priority Churn に関連する特定のパターンに応答するかどうかを、サービス拒否攻撃を実行せずに観察できます。

軽量かつ安全にベクトルを確認することを目的としており、少数のリクエストで環境をダウンさせる意図はありません。


対象CVE

CVE名称スクリプト説明
CVE-2019-9511HTTP/2 Data Dribbledata_dribble_probe.py少量のデータを制御された方法で解放し、HTTP/2フロー制御の動作を検証します。
CVE-2019-9513HTTP/2 Priority Churn / Resource Looppriority_churn_probe.py低強度で PRIORITY フレームの処理動作を検証します。

脆弱性の概要

CVE-2019-9511 — HTTP/2 Data Dribble

CVE-2019-9511(別名 HTTP/2 Data Dribble)は、フローウィンドウの操作とデータの段階的配信を効率的に処理しない一部のHTTP/2実装に影響を与えます。

このシナリオでは、攻撃者がサーバーにデータを要求し、フロー制御を操作して応答を開いたままにし、1バイトのパケットのような小さなブロックでデータを配信させることができます。実装によっては、この動作によりCPU、メモリ、または接続リソースが過剰に消費され、サービス拒否のリスクが生じる可能性があります。

このリポジトリでは、関連するスクリプトは次のとおりです。

data_dribble_probe.py

このスクリプトの目的は、攻撃的な負荷をかけず、サービス停止を引き起こそうとせずに、軽量に動作を検証することです。

参照:

  • https://nvd.nist.gov/vuln/detail/CVE-2019-9511
  • https://www.cve.org/CVERecord?id=CVE-2019-9511
  • https://ubuntu.com/security/CVE-2019-9511

CVE-2019-9513 — HTTP/2 Priority Churn / Resource Loop

CVE-2019-9513(別名 HTTP/2 Priority Churn または Resource Loop)は、ストリームの優先順位ツリーに対する継続的な変更をコストのかかる方法で処理する一部のHTTP/2実装に影響を与えます。

このシナリオでは、攻撃者が複数のストリームを作成し、それらの優先順位を繰り返し変更して、優先順位ツリーにチャーンを引き起こす可能性があります。実装によっては、この動作によりCPUが過剰に消費され、サービス拒否につながる可能性があります。

このリポジトリでは、関連するスクリプトは次のとおりです。

priority_churn_probe.py

このスクリプトの目的は、サーバーが PRIORITY フレームを受け入れて処理するかどうかを、低強度でDoS攻撃を実行せずに検証することです。

参照:

  • https://nvd.nist.gov/vuln/detail/CVE-2019-9513
  • https://www.cve.org/CVERecord?id=CVE-2019-9513
  • https://ubuntu.com/security/CVE-2019-9513

影響を受けるバージョンに関する注意

CVE-2019-9511 および CVE-2019-9513 は、nginx、Apache、Tomcatなどの単一の特定のバージョンのWebサーバーに関連付けられているわけではありません。

これらは、さまざまな製品、ライブラリ、プロキシ、ロードバランサー、サーバーにおける特定のHTTP/2実装に影響を与えます。したがって、検証では、分析対象の環境でHTTP/2をネゴシエートして処理しているコンポーネントを考慮する必要があります。

関与する可能性のあるコンポーネントの例:

nginx
Apache HTTP Server
Envoy
HAProxy
Tomcat
Jetty
Node.js
Go net/http2
nghttp2
CDN
WAF
ロードバランサー
Ingress Controller Kubernetes

最初の技術的な基準は、サービスがALPNを介してHTTP/2をネゴシエートするかどうかを確認することです。サービスが h2 をネゴシエートしない場合、これらのスクリプトは適用できません。

バージョンによる脆弱性の確認は、特定されたコンポーネントの製造元の公式アドバイザリに基づいて行う必要があります。


事前検証: HTTP/2サポートの確認

スクリプトを実行する前に、ターゲットがALPNを介してHTTP/2をネゴシエートするかどうかを検証します。

コマンドには https:// を含めず、ドメインのみを使用してください。

openssl s_client -alpn h2 -connect exemplo.com.br:443 </dev/null 2>/dev/null | grep -i "ALPN"

プレースホルダーを使用することもできます。

openssl s_client -alpn h2 -connect <HOST>:443 </dev/null 2>/dev/null | grep -i "ALPN"

期待される出力:

ALPN protocol: h2

出力が h2 を示している場合、サービスはHTTP/2をネゴシエートしており、スクリプトが適用可能である可能性があります。

出力がない場合、またはネゴシエートされたプロトコルが http/1.1 など別のものである場合、そのエンドポイントにはスクリプトは適用できません。

スクリプト概要

スクリプト関連CVE目的使用時
data_dribble_probe.pyCVE-2019-9511ウィンドウ制御を使用して小さなデータブロックを解放するData Dribbleに関連する動作を検証しますサーバーがHTTP/2をサポートし、縮小されたウィンドウでDATAフレームの配信動作を確認する必要がある場合。
priority_churn_probe.pyCVE-2019-9513低強度でPRIORITYフレームを使用してPriority Churnに関連する動作を検証しますサーバーがHTTP/2をサポートし、ストリームの優先順位変更を処理するかどうかを確認する必要がある場合。

推奨使用フロー

スクリプトを使用する最も論理的な順序は次のとおりです。

1. openssl による HTTP/2 事前検証
   ↓
2. priority_churn_probe.py
   ↓
3. data_dribble_probe.py

フローの簡単な説明

まず、openssl コマンドを使用して、ターゲットがHTTP/2をネゴシエートするかどうかを確認します。次に、priority_churn_probe.py を使用して、サーバーが優先順位フレームを受け入れて処理するかどうかを検証します。その後、data_dribble_probe.py を使用して、縮小されたフローウィンドウに対してサーバーがどのように動作し、制御された方法で少量のデータを解放するかを観察します。

どちらのスクリプトも軽量なプローブです。それらはサービス停止を引き起こすことを目的としておらず、観察された動作の技術的証拠を生成することを目的としています。


スクリプト

priority_churn_probe.py

説明

priority_churn_probe.py は、CVE-2019-9513(別名 HTTP/2 Priority Churn)に関連する動作を検証するための軽量なPoCです。

このスクリプトは、TLSを介してHTTP/2接続を確立し、小さなHTTPストリームを開き、PRIORITY フレームを介して優先順位の変更を送信します。次に、これらのフレームを送信する前後のレイテンシを測定し、処理に変動があるかどうかを観察します。

スクリプトの動作

  • ALPNを介してHTTP/2をネゴシエートします;
  • 指定されたホストとのTLS接続を開きます;
  • 最大3つのパスに対して単純なGETリクエストを送信します;
  • PING を使用して初期レイテンシを測定します;
  • PINGが不十分な場合は、GETを使用したフォールバックを行います;
  • 低強度で PRIORITY フレームを送信します;
  • 優先順位チャーン後のレイテンシを測定します;
  • テスト前後の時間を比較して表示します。

使用シナリオ

このスクリプトは、HTTP/2サーバーが Priority Churn ベクトルに関連する優先順位フレームを受け入れて処理するかどうかを、攻撃的なDoSテストを実行せずに検証する必要がある場合に使用します。

ペネトレーションテストでの制御された検証、HTTP/2露出分析、脆弱性または潜在的に敏感な動作の技術的確認に適しています。

変更が必要なフィールド/パラメータ

スクリプトはコマンドライン引数で値を受け取ります。

--host
--port
--paths
--shuffles

パラメータの説明

パラメータ説明
--host許可されたターゲットのFQDN。https:// を含めないでください。
--portHTTP/2サービスが利用可能なTLSポート。デフォルト: 443。
--pathsHTTP/2ストリームを開くための単純なパスのリスト。
--shuffles優先順位変更のサイクル数。安全なテストのために低く保ちます。

テストに適したパス

軽量で公開されており、影響の少ないパスを使用してください。例:

/
/robots.txt
/favicon.ico
/health
/login

バックエンドに負荷をかける可能性のある、重量級の操作、複雑なクエリ、レポート生成、アップロード、高度な検索、またはその他の機能を実行するパスは避けてください。

安全な使用例

python3 priority_churn_probe.py --host exemplo.com.br --port 443 --paths / /robots.txt /favicon.ico --shuffles 10

期待される出力

出力例:

[OK] PING 前: 45.20 ms; チャーン後: 52.80 ms; shuffles=10
シグナル9513: PRIORITY フレームが受け入れられ処理されました; チャーン後のわずかな増加がベクトルを示しています(DoSは発生しません)。

結果の解釈

スクリプトがHTTP/2をネゴシエートし、ストリームを開き、PRIORITY フレームを送信できた場合、サーバーがこの種の動作を処理していることを示します。

チャーン後にレイテンシがわずかに増加した場合、ベクトルが存在することの技術的証拠として使用できますが、それ単独で深刻な影響の証明として解釈されるべきではありません。最終的な分類は、コンテキスト、サーバーバージョン、アーキテクチャ、軽減策、WAF/CDN、HTTP/2設定に依存します。


data_dribble_probe.py

説明

data_dribble_probe.py は、CVE-2019-9511(別名 HTTP/2 Data Dribble)に関連する動作を検証するための軽量なPoCです。

このスクリプトは、TLSを介してHTTP/2接続を確立し、単一のストリームを開き、フロー制御ウィンドウを操作して少量のデータを解放し、DATAフレームの段階的な配信動作をシミュレートします。

スクリプトの動作

  • ALPNを介してHTTP/2をネゴシエートします;
  • 指定されたホストとのTLS接続を開きます;
  • 定義されたパスにGETリクエストを送信します;
  • 初期フローウィンドウを調整します;
  • 制御された方法で少量のデータを解放します;
  • 受信したDATAフレームをカウントします;
  • 解放されたバイト数、受信したフレーム数、合計時間を表示します。

使用シナリオ

このスクリプトは、HTTP/2サーバーが Data Dribble ベクトルに関連する縮小されたフロー制御パターンに応答するかどうかを、攻撃的な負荷をかけずに検証する必要がある場合に使用します。

自動化ツールが露出の可能性を指摘し、運用リスクを低減して手動で検証する必要がある場合の制御された技術的確認に適しています。

変更が必要なフィールド/パラメータ

スクリプトはコマンドライン引数で値を受け取ります。

--host
--path
--port
--bytes

パラメータの説明

パラメータ説明
--host許可されたターゲットのFQDN。https:// を含めないでください。
--pathテストでリクエストされるパス。
--portHTTP/2サービスが利用可能なTLSポート。デフォルト: 443。
--bytesテスト中に解放される総バイト数。安全な検証のために低く保ちます。

テストに適したパス

サーバーにとって負荷の低い、単純で静的なパスを使用してください。例:

/
/robots.txt
/favicon.ico
/health
/login

データベースクエリ、高負荷な認証、非同期処理、ドキュメント生成、内部システムへの呼び出しを行うエンドポイントは避けてください。

安全な使用例

python3 data_dribble_probe.py --host exemplo.com.br --path / --port 443 --bytes 12

期待される出力

出力例:

[OK] HTTP/2 ネゴシエート; 受信DATAフレーム数: 12; 解放バイト数: 12; 時間(ms): 1450
シグナル9511: ウィンドウ=1 で複数の極小DATAが配信されました(ストレスなしでの'dribble'パスの証明)。

結果の解釈

スクリプトがHTTP/2をネゴシエートし、フローウィンドウが解放されるにつれて小さなDATAフレームを受信した場合、サーバーがこのフロー制御パターンを処理していることを示します。

この動作はベクトルの技術的証拠として使用できますが、深刻度は、使用されているサーバー、バージョン、接続制限、ロードバランサー、CDN、WAF、タイムアウト、悪用防止策など、環境の実際のコンテキストを考慮する必要があります。


依存関係

スクリプトにはPython 3と h2 ライブラリが必要です。

python3
pip
h2
ssl
socket
argparse

ssl、socket、time、argparse、select はPython標準ライブラリの一部です。

主な外部依存関係は次のとおりです。

h2

依存関係のインストール

直接インストール:

python3 -m pip install h2

仮想環境を使用したインストール:

python3 -m venv venv
source venv/bin/activate
pip install h2

インストールの確認:

python3 -c "import h2; print('h2 が正常にインストールされました')"

実行前に必要な調整

1. HTTP/2サポートの確認

スクリプトはALPNを介したHTTP/2ネゴシエーションに依存します。

実行前に、サーバーがHTTP/2をサポートしているかどうかを確認してください。

openssl s_client -alpn h2 -connect exemplo.com.br:443 </dev/null 2>/dev/null | grep -i "ALPN"

期待される出力:

ALPN protocol: h2

サーバーが h2 をネゴシエートしない場合、スクリプトは適用できません。


2. --host パラメータにはFQDNのみを使用

--host パラメータに https:// を含めないでください。

正しい例:

--host exemplo.com.br

誤った例:

ツールをダウンロード