[Tutorial] Bypass de Uploaders
Publicado: 20 Mar 2010, 04:16
Bueno estrenando la nueva seccion del foro , me decidi a hacer un post sobre el byppas por asi decir "evitar" la seguridad de un uploader.
Para poder aprender bien esto hay que primero identificar los tipos de uploader que existen :
Los que aceptan cualquier tipo de extension: En este caso lo unico que se debe hacer es subir la shell que tenemos en nuestro poder como puede ser la C99(Una de las mas conocidas);Lo suben con extension .php si es asi que lo permite y en algunos casos les aparecera el link de donde se aloja nuestro archivo , pero en otros no osea que tendremos que buscar la carpeta donde se suben todos los archivos , un ejemplo [Enlace externo eliminado para invitados]/uploads/Shell.php..
Los que cualquier extension excepto .php : En este caso muchos administradores se sienten seguros al restringir solamente esta extension .. Pero la verdad no es asi , para poder bypassear este tipo solamente le cambian el ".php" a su archivo como por ejemplo por ".TEST" o sea que nos quedaria por ejemplo "Shell.TEST" , esto tambien depende de la configuracion del servidor pero casi siempre funciona .
Los que solo aceptan extensiones de imagen(.JPG,.PNG,etc.): Aca hay tres formas de bypassear , por eso dividire este tipo.
1-Subimos un .JPG(puede ser tambien .bmp,.png yo uso esto de ejemplo) , con un comentario que contenga un codigo PHP (<? phpinfo(); ?>//Esto usaremos de ejemplo) , lo pueden agregar con el Gimp . Aca una imagen :[Enlace externo eliminado para invitados], en el caso de que el codeador de la web halla puesto el codigo getimagesize() , BINGO! , tendremos la informacion de php , totalmente inutil , pero que pasa si le cambiamos el codigo? Solo cuestion de ingenio.
2-Subiendo un .JPG y usando LFI:Aca hacemos lo mismo que en el caso 1 . Subimos una imagen con comentario con codigo php , esto seria una alternativa de no tener getimagesize() , bueno cuando lo subimos encontramos su ubicacion todo lo de siempre . Pero ahora para que pase lo mismo que con el primer nesesitaremos encontrar LFI , un ejemplo [Enlace externo eliminado para invitados]?pagina=home.php , aca cambiamos por la ruta donde se subio nuestra imagen , entonces nos quedaria [Enlace externo eliminado para invitados]?pagina=../uploads/Shell.jpg y listo si nos funciona nos apareceria lo mismo que en el paso uno .
3-El caso de subir un .php (Solo funciona en algunos casos!): En esto se debe usar la extension de firefox Live HTTP Headers , pero como no es compatible con mi firefox usare el Tamper Data , es lo mismo nada mas que por comodidad es mejor usar el primero . Subimos nuestra shell y encontraremos que cuando se sube hay un texto que dice "Content-Type: application/x-httpd-php" o algo parecido sin cambiar Content-Type obviamente , y cambiamos lo que en el ejemplo se ve como "application/x-httpd-php" por "Image/JPG" y si tenemos exito se subira con la extension .php.
Y como se dice en los cuentos colorin colorado este cuento se ha terminado .
Si tienen alguna otra forma no duden en comentarla .
Saludos .
Para poder aprender bien esto hay que primero identificar los tipos de uploader que existen :
Los que aceptan cualquier tipo de extension: En este caso lo unico que se debe hacer es subir la shell que tenemos en nuestro poder como puede ser la C99(Una de las mas conocidas);Lo suben con extension .php si es asi que lo permite y en algunos casos les aparecera el link de donde se aloja nuestro archivo , pero en otros no osea que tendremos que buscar la carpeta donde se suben todos los archivos , un ejemplo [Enlace externo eliminado para invitados]/uploads/Shell.php..
Los que cualquier extension excepto .php : En este caso muchos administradores se sienten seguros al restringir solamente esta extension .. Pero la verdad no es asi , para poder bypassear este tipo solamente le cambian el ".php" a su archivo como por ejemplo por ".TEST" o sea que nos quedaria por ejemplo "Shell.TEST" , esto tambien depende de la configuracion del servidor pero casi siempre funciona .
Los que solo aceptan extensiones de imagen(.JPG,.PNG,etc.): Aca hay tres formas de bypassear , por eso dividire este tipo.
1-Subimos un .JPG(puede ser tambien .bmp,.png yo uso esto de ejemplo) , con un comentario que contenga un codigo PHP (<? phpinfo(); ?>//Esto usaremos de ejemplo) , lo pueden agregar con el Gimp . Aca una imagen :[Enlace externo eliminado para invitados], en el caso de que el codeador de la web halla puesto el codigo getimagesize() , BINGO! , tendremos la informacion de php , totalmente inutil , pero que pasa si le cambiamos el codigo? Solo cuestion de ingenio.
2-Subiendo un .JPG y usando LFI:Aca hacemos lo mismo que en el caso 1 . Subimos una imagen con comentario con codigo php , esto seria una alternativa de no tener getimagesize() , bueno cuando lo subimos encontramos su ubicacion todo lo de siempre . Pero ahora para que pase lo mismo que con el primer nesesitaremos encontrar LFI , un ejemplo [Enlace externo eliminado para invitados]?pagina=home.php , aca cambiamos por la ruta donde se subio nuestra imagen , entonces nos quedaria [Enlace externo eliminado para invitados]?pagina=../uploads/Shell.jpg y listo si nos funciona nos apareceria lo mismo que en el paso uno .
3-El caso de subir un .php (Solo funciona en algunos casos!): En esto se debe usar la extension de firefox Live HTTP Headers , pero como no es compatible con mi firefox usare el Tamper Data , es lo mismo nada mas que por comodidad es mejor usar el primero . Subimos nuestra shell y encontraremos que cuando se sube hay un texto que dice "Content-Type: application/x-httpd-php" o algo parecido sin cambiar Content-Type obviamente , y cambiamos lo que en el ejemplo se ve como "application/x-httpd-php" por "Image/JPG" y si tenemos exito se subira con la extension .php.
Y como se dice en los cuentos colorin colorado este cuento se ha terminado .
Si tienen alguna otra forma no duden en comentarla .
Saludos .