viernes, 22 de julio de 2011

Local File Inclusion


                                                   Local File Inclusion 

Inclusión de archivos locales (también conocido como LFI) es el proceso de inclusión de archivos en un servidor a través
del navegador web.
Esta vulnerabilidad se produce cuando en una página no se incluyen apropiadamente la deteccion de errores, y acepta
los caracteres del directorio transversal a inyectar. 
Un ejemplo típico de un script PHP vulnerable a LFI es el siguiente: 

  <? Php                                             
    $ File = $ _GET ['file'];          
    if (isset ($ file))                       
    {                                                    
        include ("pages/$file");
    }                                                    
    else                                                
    {                                                    
        include ("index.php");               
    }                                                    
 >                                                    
La solicitud legítima hizo con el guión podría ser la siguiente: (URL posiblemente vulnerable)
  http://imationgroup.com/index.php?file=contactus.php

Pero si realmente es vulnerable se pordra salir de los directorios donde esta alojada la pagina y moverte por el sistema
operativo de esta forma:
  http://imationgroup.com/index.php?file=../../../../etc/passwd

Esto muestra los hashes de las contraseñas en MD5 en el servidor, que más tarde podría ser roto y se utiliza para obtener
acceso a archivos. (mirar tema de Cracker)
 

Crear un filtro  
La mayoría de los administradores de buena voluntad se han protegido contra los ataques de LFI de la forma más simple,
por lo que debe actualizar el script de esta forma. 

  <? Php                                                                
    $ File = str_replace ('../','', $ _GET ['file']);
    if (isset ($ archivo))                                           
    {                                                                       
        include ("pages/$file");                   
    }                                                                      
    else                                                                  
    {                                                                      
        include ("index.php");                                 
    }                                                                      
   >  
Ahora, nuestro sencillo ataque LFI ya no funcionará. Obviamente, no queremos ser disuadidos por esto, así que tenemos
que encontrar una manera para acceder a nuestro directorio transversal de trabajo, 
(se puede evadir los filtros).
Una forma de hacer esto es  codificar uno o más caracteres en hexadecimal.
Esto funciona porque el navegador decodifica la entrada, pero PHP no lo hace.
Nuestro nuevo LFI sería la siguiente: 

  http://example.com/index.php?file =..% 2F% 2F .. .. ..% 2F%% 2Fetc 2Fpasswd

Por lotanto el administrador de la pagina debe aplicar mas filtros.
 
 
Notas adicionales 
Los ataques de LFI se combinan a menudo con  Poison Null Bytes Attacks (ya lo posteare) , lo que les ayuda a pasar por
alto otras protecciones que se pueden poner en su lugar.

Informacion sacada de:
http://hakipedia.com/index.php/Local_File_Inclusion

Nota:
Casi identico porque es dificil esplicarlo mejor.
 --------------
Ejemplo practico
--------------
Escojemos una pagina con la terminacion de la url en: download.php?file=
Seleccionamos cualquier enlace para provar suerte....
Si todo va bien, deveria sarir algo asi:
bien, ahora se trata de probar con archivos que posiblemente existan como 'login.php, admin.php, registrer.php, index.php... todo lo que se os ocurra.
esto indica que no tiene filtro del directorio hacia delalante, me explico:
en la url, sabemos que se puede acceder a archivos del mismo directorio, aun no se puede saber si tiene alguno hacia atras...
si lo tubiera, no se podria acceder a ww.____.com.br/download.php?file=../../../../../../../../etc/passwd
pero eso mas tarde...
Ahora toca inspeccionar los archivos descargados:

lo que se suele hacer, es descargarse todo lo que se pueda y luego inspeccionar....
 Aqui se puede observer perfectamente en la ruta, que es de un sistema Linux y el nombre de usuario
esto puede servir , entre otros, de ayuda a la hora de ejecutar codigo arbitrario (SQL) en la maquina remota
así como buscar exploits, ect....
Curioseando en la pagina.. me he encontrado con la url de la imagen.
que, parte de ella esta en hexadecimal, esto quiere decir que tampoco existe nngun tipo de filtro para caracteres hexadecimales...

esto viene bien saberlo, porque si queremos ir hacia atras en los directorios y no deja y/o muestra mensaje de error, se puede provar a difrar la url en hexadecimal o otros lenguajes

puede que esto no funcione:
ww.____.com.br/download.php?file=../../../../../../../../etc/passwd
 pero tal vez esto si:
ww.____.com.br/download.php?file=%2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E%2E/etc/passwd
o esta:
ww.____.com.br/download.php?file=%2F%2E%2E%2F%2E%2E%2F%2E%2E%2F%2E%2E%2F%2E%2E%2F%2E%2E/etc/passwd

o todas esas pero con Poison Null Bite
todo es ir provando...

hasta pronto!

martes, 19 de julio de 2011

Full path disclosure


Full Path disclosure

Al castellano se traduce como: divulgación de ruta completa

Es una vulnerabiidad muy habitual en las aplicaciones Web, consiste en encontrar un Script vulnerable, el cual te devuelba un error donde revele la ruta completa del recurso al que se desea acceder.

La vulnerabilidad en sí, no es de mucha importancia, pero si puede ser en un segundo plano para un atacante en la red, ya que se descubre la ruta entera de un sistema y en ella esta el nombre de usuario, cullo nombre se puede usar por ejemplo en ataques de tipo injeccion SQL.

Este error se consigue usando caracteres inesperados en parametros especificos de una aplicación Web,

Esta infomacion puede llegar a ser vital en ciertos casos, sobre todo al provar un valor falso o verdadero en una injeccion SQL (Blind SQL Injeccion) en el panel de control de una pagina web.

La aplicación web puede ser vulnerable a una FPD que se hace eco de la ubicación de una base de datos de archivos planos, lo que puede incluir la información administrativa, como contraseñas panel de administración, direcciones de correo electrónico, o contraseñas de usuario.

Esta vulneravilidad podria ser arreglada si los scrips contaran con un sistema de correccion de errores en el lenguaje de programación.

No solo consiste en el error de printear el nombre de usuario, en algunos casos la aplicación puede dar una ruta aunque no llege al nivel del usuario.

Ejemplo de error FPD:
htmlentities() expects parameter 1 to be string, array given in /var/www/aplicacaion.php on line 14

Inyección sesión ilegal

es posible a través del cambio del valor de la cookie de sesión a un carácter no válido, o no permitido.
Hay muchos tipos de injeccion que se traducirá en el input de la aplicación, pero la más común, es usar caracteres nulos.
Para inyectar una cookie PHPSESSID, la inyección JavaScript a través de la barra de URL:

javascript: void (document. cookie = "PHPSESSID =");


PREVENCIÓN

Desactivar la pantalla de mensajes de error (esto se hace en los siguientes archivos)
*.php.ini: display_errors = 'off'
Apache, httpd.conf: php_flag display_errors off
En el script directamente: ini_set('display_errors', false);
Conclusión

Es un error comun pero es muy raro que sea un factor importante a la hora de llevar un ataque con éxito o fallido, pero si puedellegar a serlo, normalmente se usa para reunir informacion sobre un sitio y usarlo como si fuese una especie de comodin para deducir otras cosas.

Es muy facil de prevenir y es un riesgo innecesario que suelen correr muchas aplicaciones


Este es un claro ejemplo de Full Pach Disclosure

La url original era:
http://www.___________.net/index.php?file=search.php

pero al probar si tenia la vulnerabilidad LFI:
http://www.___________.net/index.php?file=./index.php

me salio un Full Pach Disclosure!!
Wireshok

miércoles, 13 de julio de 2011

Tutorial w3af objetivo (experimentando...)

Bueno primero de todo, lo de siempre, no usar este tutorial para hacer el mal, nosotros no nos responsabilizamos de ello,bla,bla,bla...

Ahora sike!



W3af es (a mi parecer) de los mejores escanner se vulnerabilidades que me he topado por la red, me entere explorando las increíbles herramientas que nos ofrece nuestro amigo  Backtrack 5.

Lo tenemos para LINUX o Windows

Windows:
http://sourceforge.net/projects/w3af/files/w3af/w3af%201.0-stable/w3af_1.0_stable_setup.exe/download

LINUX: (poner en terminal)
svn co https://w3af.svn.sourceforge.net/svnroot/w3af/trunk w3af

Aunque lo mejor es que instaleis Synaptic que es un gestor de paquetes para LINUX y desde ahí podeis instalar cualquier cosa dandole a un boton, se baja los paquetes y librerias y los instala solo, el comando es el siguiente:

apt-get install synaptic.

Os pongo una imagen a modo de "preview"


- Con este superprograma podremos auditar cualquier aplicación web, detectar vulnerabilidades,descubrir información oculta, información útil a la hora de escoger un exploit... infinidad de cosas que iremos descubriendo..

recuerdo que este tutorial es para sacar conclusiones y aprender un poco,seguramente sepa lo mismo que vosotros sobre esto pero... algo hay que aportar.

EMPECEMOS

Por si alguien se pierde y no sabe donde se encuentra el w3af (como me paso a mi)
 la ruta es la siguiente:
pentest/web/w3af/w3af_gui > run in terminal

 Si no veis bien la imagen, pinchar sobre ella y se os muestra a tamaño original.

- El panel de confuguración

Es la parte mas importante del programa ya configuras lo que quieres hacer,las pestañas mas importantes para mi, es la de audity, se seleciona audity y luego se bajan las opciones y se selecciona solo las que se quieran, yo seleccione estas porque son las mas peligrosas (sql, blindsql,fileupload,LFI..)

Si el programa detecta tales fallos de seguridad te lo dira y en el peor de los casos podras sacar informacion que se necesite algún tipo de autorización, y en el peor, se podrá subir una "remote reverse shell" que ya veremos lo que es pero, consiste en:

tener el control total o casi, del sevidor en el que está la pagina, permitiéndote copiar todo lo que tienen (usuarios contraseñas,facturas..) y borrar toda la pagina,o defeisearla.

en los proximos tutoriales les voy a mostrar los distintos tipos de vulneravilidades, y que se pueden hacer con ellas.

No creo que haga falta comentar mas sobre este programa, tenemos un log donde muestra los plugins que esta provando y lo mas importante, los resultados, es haí donde hare mas incapie.

Lo mejor es provar a escanear paginas web y observar los resultados para irse familiarizando con el programa.