RCE

RCE
Daniel Tapia

En el artículo anterior vimos cómo realizar un ataque a través de la vulnerabilidad LFI. Hoy vamos a ver una nueva técnica denominada RCE que también afecta a una mala configuración de PHP.

¿Qué es RCE?

Esta vulnerabilidad se definiría de la siguiente manera, es la ejecución de código o comandos remotamente en una máquina cuyo software tenga este fallo.

Tipos de RCE

Tenemos dos tipos de RCE, veamos cuáles son:

    • Remote Code Execution: es una vulnerabilidad que nos permite ejecutar código PHP en el servidor, se debe a un fallo en la programación de la página al usar funciones como la función eval() de PHP, evalúa una cadena como código PHP, así que para que el ataque funcione debemos usar el; al final.
    • Remote Command Injection: es otra vulnerabilidad de PHP, con la diferencia de que en este caso ejecutamos comandos en el servidor en vez de incluir código como en la anterior.
  • Código vulnerable

Veamos algunos ejemplos de código vulnerable:

 1. Ejemplo 1

<?php

$varerror = system(‘cat’.$_GET[‘pageid’],$valorretorno);

echo $varerror:

?>

2. Ejemplo 2

<?php

$var = $_GET[‘VULN’];

eval($var);

?>

3. Ejemplo 3

<?php

$cmd=$_GET[‘cmd’];

system=($cmd);

?>

  • Cómo explotar esta vulnerabilidad

    • Primera manera:

http://www.url.com/9g3j.php?vuln=phpinfo(); para poder vulnerarlo podemos hacer lo siguiente, por ejemplo: cambiamos el parámetro “phpinfo” por “system” y en los paréntesis incluimos el comando que queramos ejecutar por ejemplo ls, esto se vería de la siguiente manera.

http://www.url.com/9g3j.php?vuln=system(ls);

    • Segunda manera:

Tomamos de ejemplo la URL anterior,http://www.url.com/9g3j.php?vuln=phpinfo(); esta vez lo que queremos es ejecutar un comando a través del cmd, para ello lo que vamos a hacer es sustituir el parámetro vuln por “cmd” y el parámetro “phpinfo” por el comando que queramos ejecutar en este caso “ipconfig”. Quedaría de la siguiente manera:

http://www.url.com/9g3j.php?cmd=ipconfig

  • Solucionar el problema

 

  • Lo ideal para solucionar este problema es tener nuestro ordenador actualizado a la última versión que ofrezca nuestro pc.
  • Otra forma sería filtrar mediante un firewall los siguientes caracteres:

# & ; ` | * ? ~ < > ^ ( ) [ ] { } $ , x0A y xFF

  • Tener bien configurado el código php.
Mouad Tenbihi-