Resumen

Comprende de forma práctica cómo funcionan las vulnerabilidades LFI y RFI en aplicaciones web usando DVWA. Verás cómo un simple parámetro en el URL permite incluir archivos locales o remotos, leer información sensible y, en escenarios avanzados, llegar a ejecutar comandos mediante una web shell. Todo se explica con ejemplos claros y pasos concretos.

¿Qué es la inclusión de archivos y cómo se explota en DVWA?

En DVWA, la funcionalidad vulnerable se encuentra en la sección File Inclusion. El punto clave está en el parámetro page del URL, que carga internamente include.php. Aunque no se muestre, existe un index.php que puede ocultarse mediante .htaccess. Al intentar cargar explícitamente index.php, el sistema devuelve un error: es el primer indicio de que el parámetro controla qué archivo se incluye.

  • El parámetro page determina qué archivo se procesa.
  • index.php puede estar oculto con .htaccess.
  • Un cambio inválido en page genera errores visibles.

¿Qué revela seleccionar archivos listados y no listados?

La interfaz muestra File1, File2 y File3. Al elegirlos, el contenido cambia: saluda al usuario admin, muestra la IP y datos del navegador. Sin cuadro de entrada visible, se puede forzar manualmente un File4 no listado y el sistema responde con “Good job!”: se logró incluir un archivo que no debía estar accesible.

  • Seleccionar File1, File2, File3 muestra datos como IP y navegador.
  • Forzar File4 confirma inclusión arbitraria de archivos.
  • Esto valida que la entrada del usuario controla la carga de archivos.

¿Qué conceptos claves debes retener?

  • Local File Inclusion (LFI): incluir archivos locales del servidor.
  • Parámetro page: punto de entrada para manipular qué archivo se incluye.
  • .htaccess: puede ocultar rutas como index.php en el navegador.

¿Cómo se escala un LFI para leer archivos sensibles?

Mediante directory traversal con secuencias como ..\ repetidas, es posible retroceder directorios y apuntar a rutas críticas. Al alcanzar la raíz y solicitar etc/passwd, se logra leer el archivo /etc/passwd, listando usuarios del sistema como root, games, nobody, keylog, bind, administrator, discc, proftpd. En cambio, intentar leer /etc/shadow falla por permisos: evidencia de controles del sistema operativo.

  • El traversal con ..\ retrocede carpetas hasta la raíz.
  • Leer /etc/passwd expone usuarios del sistema.
  • /etc/shadow suele estar protegido y no abrirá sin permisos.

¿Qué otros archivos pueden dar ventaja al atacante?

Leer registros puede aportar vectores avanzados. Acceder a logs de Apache o del sistema ayuda a identificar rutas, agentes y entradas inyectadas. Además, /proc/self/environ puede habilitar inyecciones que desemboquen en ejecución de comandos y en una web shell.

  • Logs de Apache: pistas de rutas y entradas manipuladas.
  • Logs del sistema: contexto de ejecución y usuarios.
  • /proc/self/environ: posibilidad de inyección para ejecutar comandos.

¿Qué habilidades se fortalecen aquí?

  • Detección de LFI a través de parámetros manipulables.
  • Uso de directory traversal para alcanzar rutas sensibles.
  • Identificación de artefactos críticos: /etc/passwd, /etc/shadow, logs y /proc/self/environ.

¿En qué consiste un RFI y por qué es riesgoso?

En Remote File Inclusion (RFI), el parámetro permite cargar archivos remotos. Por ejemplo, al apuntar a https://www.youtube.com, el servidor vulnerable incluye el índice remoto procesado, aunque el usuario permanece en el mismo dominio: es evidencia de inclusión remota.

  • RFI carga contenido remoto dentro de la aplicación.
  • El procesamiento ocurre en el servidor vulnerable.
  • El dominio no cambia pese al contenido externo.

¿Cómo un FTP puede llevar a ejecución de PHP?

Si se incluye un archivo vía FTP indicando IP, ruta y nombre del archivo, y este archivo es PHP, el protocolo FTP lo entrega en texto plano. La aplicación vulnerable lo procesa como código: así puede cargarse una web shell, ejecutar comandos y escalar el impacto.

  • FTP entrega PHP sin interpretarlo.
  • La aplicación vulnerable lo ejecuta al incluirlo.
  • Se habilita web shell y ejecución de comandos.

¿Qué palabras clave debes dominar?

  • RFI: incluir archivos remotos como HTTP o FTP.
  • Web shell: interfaz remota para ejecutar comandos en el servidor.
  • Ejecución de comandos: consecuencia de incluir código interpretado.

Si te interesa profundizar en explotación avanzada e ideas como inyección vía /proc/self/environ o escenarios con FTP y PHP, comparte tus dudas y casos en los comentarios. Próximos temas: full path disclosure y directory traversal.