Skip to content
KitploitKITPLOIT
HerramientasBlog
Log in
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
Herramientas/GitHubGitHub/sibersan/apache_audit_cve-2026-23918
Herramientas DefensivasEscáneres de VulnerabilidadesAuditoría de ConfiguraciónSeguridad WebSeguridad de RedesRespuesta a Incidentes
GitHubsibersan/apache_audit_cve-2026-23918

apache_audit_cve-2026-23918

Kit de herramientas en Python para auditar Apache HTTP Server contra CVE-2026-23918 (RCE por double-free en HTTP/2) y 4 CVE relacionados. Escáner pasivo con verificación ALPN + auditor local de solo lectura. Sin exploits.

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 →
Ver Repositorio
112hace 4 mesesAún no revisado
Compartir

cve-2026-23918

Herramientas de auditoría defensiva para CVE-2026-23918 (RCE por doble liberación en HTTP/2 de Apache HTTPD) y cuatro CVEs relacionados divulgados en el aviso de seguridad de la Apache Software Foundation del 4 de mayo de 2026.

CVEGravedadComponenteImpactoAfectados
CVE-2026-23918Alta (CVSS 8.8)HTTP/2Doble liberación / RCEsolo 2.4.66
CVE-2026-24072Moderadamod_rewrite (ap_expr)Escalada de privilegios≤ 2.4.66
CVE-2026-28780Bajamod_proxy_ajpDesbordamiento de búfer en heap≤ 2.4.66
CVE-2026-29168Bajamod_md (OCSP)Agotamiento de recursos2.4.30 – 2.4.66
CVE-2026-29169Bajamod_dav_lockDesreferencia de puntero NULL / DoS≤ 2.4.66

Todos los problemas están corregidos en Apache HTTP Server 2.4.67.


⚠️ Autorización y Alcance

Estas herramientas están pensadas para usarse solo contra sistemas de tu propiedad o para los que tengas autorización escrita explícita para realizar pruebas. El escaneo no autorizado puede ser ilegal en tu jurisdicción.

El kit está diseñado para ser defensivo:

  • Sin payloads de vulnerabilidad, sin intentos de explotación, sin sondeos intrusivos.
  • El escáner pasivo solo lee la cabecera HTTP estándar Server: y utiliza ALPN TLS estándar, el mismo mecanismo que todos los navegadores modernos usan para negociar HTTP/2.
  • El auditor local es de solo lectura; no modifica ningún archivo ni configuración.

Contenido

.
├── apache_passive_audit.py    # External asset audit (banner-grab + ALPN)
├── apache_local_audit.py      # On-host / SSH local audit
├── LICENSE                    # MIT
├── .gitignore
└── README.md

Requisitos

  • Python 3.6+ — funciona con el python3 predeterminado de Ubuntu 18.04 y todas las versiones posteriores.
  • Solo biblioteca estándar — sin dependencias externas.

Instalación

git clone https://github.com/sibersan/cve-2026-23918.git
cd cve-2026-23918
chmod +x apache_passive_audit.py apache_local_audit.py

1. Auditoría pasiva — apache_passive_audit.py

Lee la cabecera HTTP Server: para detectar la versión de Apache y la compara con la tabla de CVEs. Además, para objetivos HTTPS, realiza una negociación ALPN TLS estándar para determinar si HTTP/2 está expuesto; esta es la precondición clave para que CVE-2026-23918 sea explotable. No se envían payloads de explotación.

Verificación de HTTP/2 (ALPN)

El script ofrece h2 y http/1.1 en la extensión ALPN del handshake TLS (RFC 7301). La elección del servidor es la respuesta estándar e inequívoca a «¿está habilitado HTTP/2?», utilizada por todos los navegadores modernos y por curl. No activa la vulnerabilidad ni ningún comportamiento inusual.

El veredicto de riesgo refleja esto:

  • Versión 2.4.66 + HTTP/2 confirmado mediante ALPN → VULNERABLE (vector RCE abierto)
  • Versión 2.4.66 + HTTP/2 no negociado → AT_RISK (sigue sin parchear; aplican otros CVEs bajos/medios, pero el vector RCE de gravedad alta está cerrado)
  • No se pudo realizar la prueba ALPN → conservador; asumir expuesto
  • Versión ≥ 2.4.67 → SAFE

Uso

# Single target
python3 apache_passive_audit.py -t https://web.example.com

# Multiple targets
python3 apache_passive_audit.py -t https://a.example.com -t https://b.example.com

# Targets file, parallel, CSV + JSON output
python3 apache_passive_audit.py -f targets.txt -w 20 -o report.csv --json report.json

# CI / log-friendly (no colors)
python3 apache_passive_audit.py -f targets.txt --no-color

Formato de targets.txt (un objetivo por línea, # para comentarios):

https://www.example.com
intranet.example.local:8443
# old staging box
http://10.0.5.12

Opciones

FlagDescripción
-t, --targetObjetivo único (puede repetirse)
-f, --fileArchivo de lista de objetivos
-o, --csvSalida de informe CSV
--jsonSalida de informe JSON
--timeoutTiempo de espera de la solicitud en segundos (por defecto 10)
-w, --workersHilos de trabajo paralelos (por defecto 10)
--no-colorDeshabilitar salida de color

Códigos de salida (aptos para CI/CD)

CódigoSignificado
0Todos los objetivos seguros
1Al menos un objetivo UNKNOWN o ERROR
2Al menos un objetivo VULNERABLE o AT_RISK

Niveles de riesgo

NivelSignificado
VULNERABLELa versión coincide con un rango de CVE del aviso Y su precondición se cumple (p. ej., HTTP/2 habilitado)
AT_RISKVersión sin parchear pero la precondición de gravedad alta NO se cumple; otros CVEs siguen aplicando
SAFEVersión ≥ 2.4.67
UNKNOWNBanner oculto (ServerTokens Prod) o enmascarado por proxy inverso/WAF — verifíquelo con el script de auditoría local
NOT_APACHENo es Apache (nginx, IIS, etc.)
ERRORError de conexión

Limitaciones

  • Los servidores con ServerTokens Prod o Minimal ocultan la versión; el script devuelve honestamente UNKNOWN. Use la auditoría local para confirmar.
  • Una instancia de Apache detrás de un proxy inverso (Cloudflare, F5, nginx, etc.) puede no exponer su versión en el borde.
  • La detección de HTTP/2 mediante ALPN solo es significativa para objetivos HTTPS. HTTP/2 en claro (h2c) es poco frecuente en la práctica y no se prueba.

2. Auditoría local — apache_local_audit.py

Se ejecuta en el host objetivo (o vía SSH) e inspecciona el binario de Apache, la versión, los módulos cargados y la configuración de HTTP/2. También evalúa las precondiciones de explotabilidad: p. ej., si la versión es 2.4.66 pero HTTP/2 está deshabilitado, el riesgo para CVE-2026-23918 se reduce en consecuencia.

Uso

sudo python3 apache_local_audit.py

# JSON report (for centralized inventory)
sudo python3 apache_local_audit.py --json /var/log/apache_audit_$(hostname).json

# Custom binary path
sudo python3 apache_local_audit.py --binary /opt/apache/bin/httpd

Capacidades de detección

  • httpd -v / apache2 -v — versión
  • httpd -V — información de compilación, HTTPD_ROOT, SERVER_CONFIG_FILE
  • apache2ctl -M o httpd -M — módulos cargados
  • dpkg-query / rpm -q — versión del paquete
  • Configuración principal más todos los archivos incluidos mediante Include/IncludeOptional (incluyendo sites-enabled/, mods-enabled/ de Debian) → directiva Protocols (h2 / h2c / http/1.1)

Opciones

FlagDescripción
--binaryRuta del binario de Apache (anula la detección automática)
--jsonSalida de informe JSON
--no-colorDeshabilitar salida de color

Códigos de salida

CódigoSignificado
0SAFE
1PATCH_NEEDED o UNKNOWN
2VULNERABLE o AT_RISK

Niveles de riesgo

NivelSignificado
VULNERABLEVersión sin parchear + precondiciones del CVE de gravedad alta cumplidas (p. ej., HTTP/2 habilitado)
AT_RISKVersión sin parchear + al menos una precondición de CVE cumplida
PATCH_NEEDEDVersión sin parchear pero ningún módulo/protocolo relevante habilitado — parchee de todos modos
SAFEVersión ≥ 2.4.67
UNKNOWNNo se pudo detectar la versión

Privilegios

Se recomienda sudo/root para poder leer toda la configuración. Sin ellos, algunos archivos en sites-enabled/, mods-enabled/, o /etc/httpd/conf.d/ pueden resultar ilegibles.


Ejecución sobre un inventario

Para ejecutar la auditoría local en varios hosts y recopilar informes de forma centralizada, un ejemplo con Ansible ad-hoc:

ansible all -i inventory.ini -b -m script \
  -a "apache_local_audit.py --json /tmp/apache_audit.json --no-color"

ansible all -i inventory.ini -b -m fetch \
  -a "src=/tmp/apache_audit.json dest=./reports/ flat=no"
Descargar herramienta