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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking
| | |-+  Bugs y Exploits
| | | |-+  Nivel Web (Moderadores: sirdarckcat, WHK)
| | | | |-+  Bug en php 5.2.9 y versiones anteriores (Path disclosure)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Bug en php 5.2.9 y versiones anteriores (Path disclosure)  (Leído 7,657 veces)
WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


Ver Perfil WWW
Bug en php 5.2.9 y versiones anteriores (Path disclosure)
« en: 31 Mayo 2009, 08:45 am »

Estaba en mi servidor local y pude percatarme de un bug bién raro.
Enciende tu servidor local y haz un nuevo directorio con cualquier nombre que contenga la letra "ñ" y pon dentro un archivo php o html con cualquier contenido.
Si lo intentas visualizar verás que php lanza un error y da el path disclosure:
Citar
Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0

Fatal error: Unknown: Failed opening required 'C:/wamp/www/portal_foro/diseño/index.php' (include_path='.;C:\php5\pear') in Unknown on line 0

Nakp me ayudó y pudo verificar que esto también funciona en servidores Linux y con casi cualquier carácter especial como por ejemplo acentos.

Esto puede dificilmente pero posible transformarse en una vulnerabilidad como por ejemplo en el mod My_Uploads de phpnuke donde se crea un nuevo directorio dependiendo del nombre de usuario, claramente esto tiene un filtro de no incluir slashses y puntos pero estos filtros no consideran carácteres especiales haciendo el directorio lo mas fiél posible al nick del usuario pero sin contar que php no está preparado para eso lanzando este tipo de errores y mostrando la ruta total del directorio dando información a un posible atacante.

Ya lo avisé.
« Última modificación: 31 Mayo 2009, 08:49 am por WHK » En línea

isseu


Desconectado Desconectado

Mensajes: 325


°º¤ø,¸¸,El conocimiento es poder°º¤ø,¸¸,ø¤º°`°º¤ø,


Ver Perfil WWW
Re: Bug en php 5.2.9 y versiones anteriores (Path disclosure)
« Respuesta #1 en: 31 Mayo 2009, 08:52 am »

interesante..
esto podria ser mucho mas grande que solo phpnuke, ¿seguro que no habia sido descubierto antes?
En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Bug en php 5.2.9 y versiones anteriores (Path disclosure)
« Respuesta #2 en: 31 Mayo 2009, 09:01 am »

Que yo sepa no, busqué info en gogole y no encontré nada relacionado además si alguien mas lo hubiera dicho ya estarían en una versión de php que no tuviera ese bug
En línea

‭lipman


Desconectado Desconectado

Mensajes: 3.062



Ver Perfil WWW
Re: Bug en php 5.2.9 y versiones anteriores (Path disclosure)
« Respuesta #3 en: 31 Mayo 2009, 09:36 am »

Hmm interesante la verdad. Tenia idea de preparar algo, y la verdad que saber esto me ayuda bastante.

Alguna idea de como verificar todas las letras del contenido de una variable?
En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Bug en php 5.2.9 y versiones anteriores (Path disclosure)
« Respuesta #4 en: 31 Mayo 2009, 09:51 am »

Atraves de un script en php no se puede evitar si el directorio ya está hecho pero si puedes evitar crear directorios así, puedes usar la función de wordpress seo_permalink():

http://cl2.php.net/manual/es/function.preg-replace.php
Código
  1. <?php
  2.  
  3. function seo_permalink($value) {
  4. $turkce=array(
  5. "&#351;","&#350;","&#305;","(",
  6. ")","'","ü","Ü",
  7. "ö","Ö","ç","Ç",
  8. " ","/","*","?",
  9. "&#351;","&#350;","&#305;","&#287;",
  10. "&#286;","&#304;","ö","Ö",
  11. "Ç","ç","ü","Ü");
  12. $duzgun=array(
  13. "s","S","i","",
  14. "","","u","U",
  15. "o","O","c","C",
  16. "","-","-","",
  17. "s","S","i","g",
  18. "G","I","o","O",
  19. "C","c","u","U");
  20. $value=str_replace($turkce,$duzgun,$value);
  21. $value = preg_replace("@[^A-Za-z0-9\-_]+@i","",$value);
  22. return $value;
  23. }
  24.  
  25. echo seo_permalink('nick o url maligno "xÑoàöd"');
  26.  
  27. ?>

Me fijé también que seo no contempla la letra eñe  >:(, de todas formas se filtra al final y no aparecerá en la conversión.

Nota: el geshi del foro no deja ver bién los carácteres especiales asi que si usas el código haz click en citar tema y vee como está posteada la función.
« Última modificación: 31 Mayo 2009, 09:53 am por WHK » En línea

‭lipman


Desconectado Desconectado

Mensajes: 3.062



Ver Perfil WWW
Re: Bug en php 5.2.9 y versiones anteriores (Path disclosure)
« Respuesta #5 en: 31 Mayo 2009, 10:22 am »

Es una idea lo de sustituir, pero no me referia a eso, y weno, por no abrir un tema en PHP, aprovecho. Lo que digo es lo siguiente:

Tienes una variable con un cierto contenido como "azúcar". Entonces podrias pasar ese contenido a una matriz, poniendo en cada contenido de la matriz una letra:
matriz[0] = a
matriz[1] = z
matriz[2] = ú
....
..

Y luego con un foreach, recorrer toda la matriz y comprobar que cada carácter se encuentra entre el 97 y 122 (ASCII) (bueno aqui serian solo letras minusculas pero podriamos incluir mayúsculas y numeros)

La cuestion seria, como pasar el contenido de una variable a una matriz de la forma que he dicho  :P (que además, no tiene porque ser una palabra, podria ser una frase, y en este caso habria que incluir el espacio en blanco)

Un saludo
En línea

Azielito
no es
Colaborador
***
Desconectado Desconectado

Mensajes: 9.188


>.<


Ver Perfil WWW
Re: Bug en php 5.2.9 y versiones anteriores (Path disclosure)
« Respuesta #6 en: 1 Junio 2009, 17:16 pm »

Tambien en mi version [PHP Version 5.2.5 ] da error
Código:
Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0

Fatal error: Unknown: Failed opening required 'G:/Desarrollo/web/www/azi/ñoño/hola.php' (include_path='.;g:\Desarrollo\web\php5') in Unknown on line 0

Tal vez serán todas las versiones de php?:xD
En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Bug en php 5.2.9 y versiones anteriores (Path disclosure)
« Respuesta #7 en: 2 Junio 2009, 02:43 am »

Bueno ya me enviaron una respuesta desde php y me dijeron que el estado de reportes de errores no debe producir estados del sistema en sistemas publicos o sea que yo debería configurar mi php.ini para no mostrar este tipo de errores.

De todas formas en un hosting de pago es muy raro tener acceso a este tipo de configuracionesy para que decir de los hostings gratuitos.

De todas formas para mi no deja de ser un bug porque puede aprobecharse en hostings donde el propio administrador no tenga acceso a los archivos de configuraciones (la única exepción sería tener un dedicado).

Citar
See http://www.php.net/manual/en/errorfunc.configuration.php#ini.display-errors
Pay special attention to this note:
"Note: This is a feature to support your development and should never be used on production systems (e.g. systems connected to the internet)."

On 31.05.2009 10:49, WHK wrote:
Citar
Hola, disculpame pero no se hablar ingles.
El problema radica en que php no es compatible con rutas de carácteres especiales.

PoC: http://127.0.0.1/diseño/

Warning: Unknown: failed to open stream: No such file or directory in
Unknown on line 0

Fatal error: Unknown: Failed opening required 'C:/wamp/www/diseño/index.php'
(include_path='.;C:\php5\pear') in Unknown on line 0

Path disclosure remoto en casos como este:
http://foro.elhacker.net/bugs_y_exploits/bug_en_php_529_y_versiones_anteriores_path_disclosure-t256586.0.html

Gracias.
Att, WHK.
En línea

s E t H

Desconectado Desconectado

Mensajes: 152


Ha tenido un sueño donde todos los pollos eran libres de cruzar una carretera sin tener que justificar sus actos.


Ver Perfil WWW
Re: Bug en php 5.2.9 y versiones anteriores (Path disclosure)
« Respuesta #8 en: 10 Junio 2009, 01:24 am »

apache me lo muestra asi al listar el directorio:

Index of /diseño

Icon  Name                    Last modified      Size  Description[DIR] Parent Directory                             -   
[   ] poc.php                 09-jun-2009 20:23    3   


pero el archivo se ve bien
uso xampp
seth@debian:~$ sudo lampp phpstatus
5.2.9


si ponen "error_reporting(0);"  que pasa?

En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Bug en php 5.2.9 y versiones anteriores (Path disclosure)
« Respuesta #9 en: 10 Junio 2009, 04:08 am »

Obiamente no te da error porque no se está ejecutando php sino el apache, pero y si le haces click al archivo poc.php? o en ves de poc lo renombras a index.php?

si le pones error_reporting(0) al php igual te dará el error ya que se produce antes de la interpretación del script a menos que lo hagas desde el php.ini directamente.
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines