💀 ¿Qué es Ghostcat (CVE-2020-1938)?

Ghostcat es una vulnerabilidad crítica descubierta en el conector AJP - Apache JServ Protocol (Apache JServ Protocol) usado por Apache Tomcat.


📌 ¿Qué permite?

Permite a un atacante leer archivos internos del servidor web (como WEB-INF/web.xml) e incluso cargar archivos JSP maliciosos para ejecución remota de código (RCE), si no hay restricciones.


🔥 Afecta a:

  • Apache Tomcat desde versiones antiguas hasta:

    • Tomcat 9.0.30

    • Tomcat 8.5.50

    • Tomcat 7.0.99

¡Y está presente por defecto! El puerto 8009 (AJP) está habilitado y expone una puerta trasera si no está correctamente filtrado.


🎯 ¿Qué permite Ghostcat?

  1. Leer archivos como:

    • WEB-INF/web.xml

    • WEB-INF/web.xml.bak

    • Archivos de configuración

    • .jsp, .class, .properties

  2. Subir archivos (con métodos como PUT) si no está bien configurado.

  3. En algunos casos: ejecutar código JSP maliciosoRCE 😈


🧪 ¿Cómo se explota?

Con herramientas como:

📦 ajpShooter (Python)

git clone https://github.com/00theway/Ghostcat-CNVD-2020-10487
cd Ghostcat-CNVD-2020-10487
python3 ajpShooter.py -t 10.2.74.32 -p 8009 -f WEB-INF/web.xml

Esto intenta leer el archivo WEB-INF/web.xml a través del conector AJP.

⚠️ Si tenés éxito:

Vas a ver XML con configuraciones internas. Ya con eso podrías encontrar usuarios, rutas, o preparar un payload para subir.


🛡 ¿Por qué es peligroso?

Porque ni siquiera se necesita estar autenticado en Tomcat, ni tener una sesión válida. Solo conectarse al puerto AJP expuesto.


🚨 Recomendaciones (para mitigar)

  • Cerrar el puerto 8009 si no se usa.

  • O configurar address="127.0.0.1" en el conector AJP para que solo escuche local.

  • O usar secretRequired="true" con secret="clave" para autenticación.


🧠 En resumen:

CosaDetalle
NombreGhostcat
CVECVE-2020-1938
Protocolo afectadoAJP (Apache JServ Protocol)
Puerto típico8009
Qué permiteLFI (leer archivos) → posible RCE
Afecta aApache Tomcat ≤ 9.0.30 (y otras versiones previas)
Riesgo🟥 Crítico – ejecución remota de código (RCE)

vulnerabilidades_extra