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?