Uno de los filtros más básicos contra LFI es un filtro de búsqueda y reemplazo, en el que simplemente se eliminan las subcadenas de (../) para evitar los recorridos.
Si la aplicación web de destino no permite y / en nuestra entrada, podemos codificar la URL ../ en %2e%2e%2f, lo que puede eludir el filtro. Para ello, podemos utilizar cualquier utilidad de codificación de URL en línea o utilizar la herramienta Burp Suite Decoder, como se indica a continuación:
Approved Paths
Appended Extension
Path Truncation
Null Bytes
Para explotar esta vulnerabilidad, podemos terminar nuestro payload con un byte nulo (por ejemplo, /etc/passwd%00), de forma que la ruta final pasada a include() sería (/etc/passwd%00.php). De esta forma, aunque .php se añade a nuestra cadena, cualquier cosa después del byte nulo se truncaría, y así la ruta utilizada sería realmente /etc/passwd, lo que nos llevaría a evitar la extensión añadida.
PHP Filters
Input Filters
Hay cuatro tipos diferentes de filtros disponibles para su uso: filtros de cadenas , filtros de conversión , filtros de compresión y filtros de cifrado . Puede leer más sobre cada filtro en su enlace respectivo, pero el filtro que es útil para los ataques LFI es el convert.base64-encodefiltro que se encuentra en Conversion Filters.
Fuzzing for PHP Files
PHP Wrappers
Checking PHP Configurations
Remote Code Execution
Ahora, podemos codificar la cadena base64 en la URL y luego pasarla al contenedor de datos con data://text/plain;base64,. Por último, podemos usar comandos de paso al shell web con &cmd=<COMMAND>:
Se refiere directamente al filtro convert.base64-encode aplicado al recurso config.
Uso:
Intenta aplicar el filtro de codificación en Base64 sin especificar explícitamente una operación (read, write, etc.).
Limitación:
Esta forma no siempre es válida, ya que el filtro debe aplicarse a una acción específica como read o write. En muchos casos, este formato puede no funcionar correctamente.