Obtener la ruta del archivo cargado sin saber el destino de carga

0

Imagina un escenario en el que podemos cargar un archivo PHP en el servidor. Sin embargo, no somos conscientes de la ruta de carga. Simplemente quiero decir que podemos cargar el archivo pero no sabemos dónde se almacenará después de cargarlo. ¿Es posible obtener la ruta del archivo después de cargar el script PHP? ¿De alguna manera hacer el script cargado para informarnos sobre su ubicación? Sé que la pregunta suena rara. Pero estaba pensando en una capacidad en PHP en la que el script se ejecute automáticamente justo después de que se haya cargado, por ejemplo, puede enviarnos un correo electrónico informándonos sobre la ruta de carga. Otra forma de hacer tal pregunta sería: ¿es posible conocer la ruta del archivo cargado simplemente cargando PHP o el script de Python? Aunque prefiero PHP, puede haber soluciones en otros idiomas que sean compatibles con el lado del servidor.
P.S. Si ninguna de las ideas anteriores funciona, ¿no es posible conocer la ruta de destino de la carga por cualquier medio?

    
pregunta FreeMind 29.05.2015 - 19:09
fuente

2 respuestas

1

El destino en el que se guarda un archivo depende completamente de la aplicación. Incluso si pudiera garantizar que un archivo que cargó se ejecutó, el archivo podría almacenarse en un entorno chroot y no conocer su ubicación real. Dicho esto, es posible que pueda determinar la ruta de una aplicación en particular.

  • El servidor a menudo le dirá la ruta a la que subió. Por ejemplo, si carga una imagen, busque una página web que contenga esa nueva imagen y busque su URL. Puede ser RESTful y no una referencia de archivo directa, pero es un buen lugar para comenzar.
  • Mira el código fuente de la aplicación. Si está buscando una aplicación de código abierto, busque su código fuente para ver dónde almacena los archivos. Por ejemplo, wordpress normalmente almacena archivos en ./wp-includes/uploads/<date>/file . Determinar esto para un sitio de wordpress puede darte información sobre múltiples sitios.
  • Intenta crear mensajes de error. Si puede bloquear la aplicación y forzar un mensaje de error, se le puede dar información sobre dónde se almacenan los archivos. Algunas cosas para ayudar con esto serían incluir nombres de archivos demasiado largos o contener caracteres no válidos para un sistema de archivos en particular.
  • Intentar ataques de cruce de directorios. Si puede encontrar una referencia básica a un archivo conocido como / etc / passwd, puede comenzar a adivinar otros nombres de archivo y rutas. Esto se hace muy fácil si la aplicación permite globs para nombres de archivos.
  • Comprueba el archivo robots.txt. Algunas aplicaciones tienden a restringir que los robots rastreen el contenido subido por el usuario, por lo tanto, asegúrese de revisar el archivo /robots.txt en busca de entradas inusuales.
  • Pruebe un programa como dirbuster. Nota: dirbuster es muy ruidoso y requiere mucho proceso para el servidor.
  • Haga referencia a una imagen en un servidor web que controle y verifique los encabezados de referencia. Esto puede filtrar la URL de la página que se está ejecutando. Nota: para los sitios HTTPS, necesitará un sitio web HTTPS.
respondido por el amccormack 29.05.2015 - 20:56
fuente
0

todo esto depende del controlador en el extremo del servidor. Este controlador normalmente recibirá los detalles sobre el archivo cargado, generalmente un nombre de archivo, la ruta a la ubicación del archivo temporal donde el servidor ha colocado el archivo y la cantidad de bytes en el archivo. El manejador usará esta información para procesar el archivo de alguna manera. por ejemplo, podría mover el archivo a una ubicación específica, modificar los permisos de acceso, etc.

Este controlador también suele devolver algo al cliente para informarle que la carga se ha realizado correctamente o no. También puede agregar otra información, como la ubicación final del archivo. Entonces, en principio, sí, puede hacer lo que le pida. La respuesta del servidor podría incluir detalles de la ubicación del archivo, el controlador podría enviar un correo electrónico a alguien informándoles sobre la carga del archivo, etc. Sin embargo, hay algunas cosas que pueden complicar las cosas.

El servidor puede estar ejecutándose en un entorno chroot donde las rutas de los archivos, etc., son relativas a ese entorno, el servidor puede tener restricciones sobre lo que los controladores pueden hacer con los archivos o el nivel de interacción permitido en el nivel del sistema operativo / sistema de archivos, etc. .

La idea de permitir que un cliente cargue un archivo que el controlador acepte e instale para que el servidor web lo sirva ahora como nuevo contenido es una propuesta de alto riesgo. Necesitaría muchos controles para proteger el sistema. Muchos de estos controles ya podrían estar en su lugar, lo que puede hacer que la implementación sea más difícil de lo que anticipó.

    
respondido por el Tim X 30.05.2015 - 02:28
fuente

Lea otras preguntas en las etiquetas