PHP LFI corrige con los permisos de archivo correctos

0

Estoy tratando de entender cómo realizar un LFI (específicamente PHP LFI), y hay un aspecto de Este ataque que parece que nunca se discute en los artículos en línea que leí: El archivo inyectado permisos .

De hecho, supongamos que puedo inyectar un archivo en el sistema. La mayoría de las veces, no será legible ni ejecutable por palabra (incluso el directorio puede no ser transitable). Por lo tanto, incluso si puedo atravesar una ruta a través de ?file=../../../../../shell.php , no se ejecutará.

Lo que trato de decir es que, según mi opinión, si un sistema que ejecuta PHP está bien configurado y asigna los permisos correctos a los archivos, no hay necesidad de preocuparse mucho por las extensiones de archivos, el contenido de los archivos ... Entonces, en lugar de agregar varias comprobaciones en el archivo inyectado como se sugiere en múltiples recursos en línea, ¿no debería el desarrollador enfocarse en la configuración del sistema (allow_url_include = 0, permisos de archivo, ...)? Para mí, es comparable a las inyecciones de SQL. Preferiría usar declaraciones de preparación y verificación simple de entrada de usuario en lugar de consultas vulnerables y verificación compleja de entrada de usuario con grandes listas blancas / negras.

¿Me estoy perdiendo algo?

    
pregunta KJ202 28.11.2018 - 04:08
fuente

1 respuesta

0

Consideraría estas dos vulnerabilidades diferentes: almacenar un archivo en el servidor remoto y inclusión de archivo local , que lo leería / ejecutaría. Cada uno de ellos puede ser suficientemente malo por sí mismo.

Una vulnerabilidad de LFI normalmente le permite leer archivos a los que no debería tener acceso. Por ejemplo, una vulnerabilidad de recorrido de ruta en un sistema de comentarios podría permitir leer la configuración de la aplicación web y permitir el acceso a las claves utilizadas por la aplicación (como las credenciales de la base de datos). No puede cambiar los permisos de archivo para que la aplicación web no pueda leerlo, ya que la aplicación necesita leerlo. Simplemente no debería mostrar los contenidos al usuario.

Otro caso típico sería que la aplicación permita cargar imágenes, y luego puedes incluir la imagen cargada como un archivo php. El archivo fue creado por la aplicación web, por lo que será el propietario del archivo y tendrá acceso al archivo ( si la aplicación web se ejecuta bajo un uid diferente al de su servidor web , puede eliminar el permiso de lectura del propietario y déjelo en manos de otros para que se lo muestre al usuario. Sin embargo, es posible que la aplicación necesite leer la imagen cargada más adelante, como para generar una miniatura).

En cuanto al almacenamiento de archivos, debe quedar claro que si puede cargar un archivo en el lugar correcto (por ejemplo, un archivo con una extensión de script en un servidor de carpetas por parte del servidor web), podría ejecutarse sin una Vulnerabilidad de LFI.

    
respondido por el Ángel 03.12.2018 - 00:40
fuente

Lea otras preguntas en las etiquetas