25 abr 2014

Creando un entorno vulnerable. Parte 4

Buenas a todos, continuando con la cadena de artículos sobre la creación de un entorno vulnerable, hoy vamos a construir una página web vulnerable a Remote File Inclusion (RFI).

RFI es una vulnerabilidad característica de las páginas dinámicas en PHP, que permite enlazar archivos por un fallo en el desarrollo de la página (debido a un mal uso de las funciones include, include_once, require y require_once, que posibilitan la inclusión remota de archivos que no se encuentran por defecto en el servidor).

Vista esta leve introducción, vamos al lío :)

En primer lugar vamos a crearnos un archivo PHP en la raíz de nuestro servidor WAMP, y de igual manera que en las anteriores ocasiones, llamaremos a nuestro archivo "rfi1.php", matizando con el nº 1 el nivel técnico requerido para bypasear la vulnerabilidad.

Dentro del archivo introduciremos el siguiente código PHP:



Si intentamos acceder a la URL sin indicar ningún valor en el parámetro "file", deberíamos ver un error como el siguiente:



Vamos a poner una imagen como ejemplo, para mostrar su contenido en nuestra página. Cómo veis es un ejemplo un poco burro, pero aclarará rápidamente el funcionamiento de un RFI:



El problema de este tipo de vulnerabilidad, es que si un usuario sustituye esta imagen por un archivo PHP ejecutable, podrían ejecutar cualquier tipo de código en el servidor, y tomar su control.

Por ejemplo, ejecutaremos un comando ipconfig, para ello crearemos el siguiente código PHP, al que llamaremos "shell.php":



Ahora llamaremos a nuestra página web vulnerable, pasándole como parámetro la shell básica que acabamos de implementar:

Cómo veis, nos ha ejecutado el comando "ipconfig" y nos ha presentado el resultado en la página, así que ya tenemos cierto control sobre la máquina. Ahora podríamos subir una consola completa PHP para automatizar el lanzamiento de muchas instrucciones, aunque no todas, dependerá de si el usuario que ejecuta el aplicativo en el servidor tiene más o menos permisos, si es root (algo improbable), de si se trata de un hosting compartido (lo que nos ayudaría a comprometer otras páginas, aunque sería un grave error), etc.

Nuestro entorno comienza a crecer con cuatro páginas web vulnerables a XSS, SQL Injection, Xpath Injection y Remote File Inclusion de nivel 1. En el próximo post seguiremos ampliando nuestra máquina.

Saludos!

No hay comentarios:

Publicar un comentario