A tu propio ritmo

Explora nuestra extensa colección de cursos diseñados para ayudarte a dominar varios temas y habilidades. Ya seas un principiante o un aprendiz avanzado, aquí hay algo para todos.

Bootcamp

Aprende en vivo

Únete a nosotros en nuestros talleres gratuitos, webinars y otros eventos para aprender más sobre nuestros programas y comenzar tu camino para convertirte en desarrollador.

Próximos eventos en vivo

Catálogo de contenidos

Para los geeks autodidactas, este es nuestro extenso catálogo de contenido con todos los materiales y tutoriales que hemos desarrollado hasta el día de hoy.

Tiene sentido comenzar a aprender leyendo y viendo videos sobre los fundamentos y cómo funcionan las cosas.

Buscar en lecciones


IngresarEmpezar
← Regresar a lecciones
Editar en Github

Inclusión de Archivos Locales (LFI) e Inclusión de Archivos Remotos (RFI)

Inclusión de Archivos Locales (LFI)

En 2014, Sony Pictures Entertainment fue afectada por un ciberataque significativo. Aunque el ataque involucró múltiples vectores, una de las vulnerabilidades explotadas fue la Inclusión de Archivos Locales (LFI). El hackeo fue tan impactante que la compañía tuvo que cancelar el lanzamiento de la película "The Interview". En este artículo veremos cómo funciona la Inclusión de Archivos Locales y cómo prevenirla.

sony hack

Inclusión de Archivos Locales (LFI)

La Inclusión de Archivos Locales (LFI) es un tipo de vulnerabilidad que se encuentra comúnmente en aplicaciones web. Ocurre cuando una aplicación incluye un archivo basado en la entrada del usuario sin sanitizar o validar correctamente esa entrada. Esto puede permitir que un atacante manipule la entrada para incluir archivos del sistema de archivos local del servidor, lo que potencialmente expone información sensible o permite otros ataques.

Uno de los exploits más conocidos de las vulnerabilidades LFI es la capacidad de visualizar el contenido del archivo /etc/passwd en sistemas basados en Unix. Este archivo contiene información sobre los usuarios del sistema y puede proporcionar información valiosa a un atacante.

Escenario de Ejemplo

Considera una aplicación web que incluye un archivo basado en un parámetro de URL:

http://ejemplo.com/index.php?file=user.txt

Si la aplicación no valida correctamente el parámetro file, un atacante podría manipularlo para incluir el archivo /etc/passwd:

http://ejemplo.com/index.php?file=/etc/passwd

Esto resultaría en que la aplicación incluya el archivo /etc/passwd, lo que podría exponer información sensible sobre los usuarios del sistema.

Prevención de LFI en Python Flask

Para evitar vulnerabilidades de Inclusión de Archivos Locales (LFI) en una aplicación Python Flask, es crucial validar y sanitizar adecuadamente las entradas del usuario. A continuación, un ejemplo de cómo manejar de manera segura la inclusión de archivos en Flask:

1from flask import Flask, request, abort 2 3app = Flask(__name__) 4 5@app.route('/') 6def index(): 7 file = request.args.get('file') 8 if file and file.endswith('.txt'): 9 try: 10 with open(file, 'r') as f: 11 content = f.read() 12 return content 13 except FileNotFoundError: 14 abort(404) 15 abort(400) 16 17if __name__ == '__main__': 18 app.run(debug=True)
1const express = require('express'); 2const fs = require('fs'); 3const app = express(); 4 5app.get('/', (req, res) => { 6 const file = req.query.file; 7 if (file && file.endsWith('.txt')) { 8 try { 9 const content = fs.readFileSync(file, 'utf8'); 10 res.send(content); 11 } catch (error) { 12 res.status(404).send('Archivo no encontrado'); 13 } 14 } else { 15 res.status(400).send('Archivo inválido'); 16 } 17}); 18 19app.listen(3000, () => { 20 console.log('Servidor corriendo en el puerto 3000'); 21});

Este código valida correctamente el parámetro file para asegurarse de que es un archivo válido y no una ruta maliciosa.

Herramientas para Detectar LFI

Detectar vulnerabilidades de Inclusión de Archivos Locales (LFI) es crucial para mantener la seguridad de las aplicaciones web. Aquí hay algunas herramientas que pueden utilizarse para detectar LFI:

  1. Burp Suite: Un escáner de vulnerabilidades web integral que puede detectar varias vulnerabilidades, incluidas LFI. Aquí te mostramos cómo usar Burp Suite para detectar LFI:

    • Spider la Aplicación: Usa la función de spidering de Burp Suite para rastrear la aplicación web y mapear todos los puntos finales.
    • Intruder: Utiliza la herramienta Intruder para fuzzear parámetros que podrían ser vulnerables a LFI. Establece las posiciones de los payloads en los parámetros que deseas probar y utiliza listas de payloads que incluyan rutas comunes de archivos (por ejemplo, /etc/passwd, ../../../../etc/passwd).
    • Escáner: Utiliza el escáner automatizado para escanear pasivamente y activamente en busca de vulnerabilidades LFI. El escáner buscará patrones LFI comunes e informará cualquier hallazgo.
    • Pruebas Manuales: Prueba manualmente LFI interceptando solicitudes con el Proxy de Burp Suite y modificando los parámetros para incluir rutas de archivos. Observa las respuestas para ver si algún contenido de archivo se incluye en la respuesta.
  2. OWASP ZAP (Zed Attack Proxy): Un escáner de seguridad de aplicaciones web de código abierto que puede utilizarse para encontrar vulnerabilidades LFI. Para usar OWASP ZAP para detectar LFI, sigue estos pasos:

    • Escaneo Automatizado: Ejecuta un escaneo automatizado en tu aplicación web. OWASP ZAP rastreará la aplicación y probará patrones comunes de LFI.
    • Fuzzing: Usa la herramienta Fuzzer para probar parámetros en busca de LFI. Establece las posiciones de los payloads en los parámetros que deseas probar y utiliza listas de payloads que incluyan rutas comunes de archivos.
    • Pruebas Manuales: Intercepta solicitudes usando el Proxy de ZAP y modifica manualmente los parámetros para incluir rutas de archivos. Revisa las respuestas para ver si se incluye algún contenido de archivo.
    • Escaneo Activo: Realiza un escaneo activo para detectar vulnerabilidades LFI.
  3. Nikto: Un escáner de servidores web de código abierto que realiza pruebas exhaustivas contra servidores web para múltiples vulnerabilidades, incluidas LFI.

  4. Acunetix: Un escáner comercial de vulnerabilidades web que puede detectar LFI entre otras vulnerabilidades. Proporciona informes detallados y consejos de remediación.

  5. Wfuzz: Una herramienta diseñada para la fuerza bruta de aplicaciones web, que puede utilizarse para detectar LFI al fuzzear rutas de archivos y parámetros.

  6. SQLMap: Principalmente diseñado para inyecciones SQL, SQLMap puede adaptarse para identificar vulnerabilidades LFI al probar patrones de inclusión de archivos. Aquí están los pasos para usar SQLMap para detectar LFI:

    • Paso 1: Instala SQLMap si no lo has hecho ya. Puedes descargarlo desde el sitio oficial o usar un administrador de paquetes como pip.
    • Paso 2: Identifica la URL objetivo que deseas probar para vulnerabilidades LFI.
    • Paso 3: Ejecuta SQLMap con la opción --file-read seguida de la ruta del archivo que deseas probar. Por ejemplo:
      sqlmap -u "http://ejemplo.com/vulnerable_page.php?file=1" --file-read="/etc/passwd"
      
    • Paso 4: Analiza el resultado para ver si el contenido del archivo especificado está incluido en la respuesta.
  7. Nmap con NSE (Nmap Scripting Engine): Nmap puede ampliarse con scripts personalizados para detectar vulnerabilidades LFI.

  8. Metasploit: Un framework de pruebas de penetración que incluye módulos para detectar y explotar vulnerabilidades LFI. Aquí los pasos para usar Metasploit:

    • Paso 1: Instala Metasploit si no lo has hecho ya.
    • Paso 2: Abre Metasploit ejecutando el comando msfconsole.
    • Paso 3: Identifica la URL objetivo que deseas probar.
    • Paso 4: Busca módulos LFI con el comando:
      search lfi
      
    • Paso 5: Selecciona un módulo LFI apropiado.
    • Paso 6: Establece la URL objetivo y otras opciones requeridas.
    • Paso 7: Ejecuta el módulo para iniciar la detección de LFI.

Con estas herramientas, los profesionales de seguridad pueden identificar y mitigar vulnerabilidades LFI para proteger aplicaciones web de posibles ataques.

Más sobre el hackeo de Sony Pictures

En 2014, Sony Pictures Entertainment fue víctima de un ciberataque significativo. Una de las vulnerabilidades explotadas fue la Inclusión de Archivos Locales (LFI). Los atacantes pudieron acceder a archivos y datos sensibles, lo que provocó una fuga masiva de datos que expuso información confidencial, correos electrónicos y películas no estrenadas.

Las consecuencias de este hackeo fueron graves:

  1. Exposición de Datos: Se filtró información confidencial de empleados, incluidos números de seguridad social y correos electrónicos personales.
  2. Pérdidas Financieras: La empresa enfrentó costos significativos.
  3. Daño a la Reputación: La imagen pública de Sony sufrió considerablemente.
  4. Disrupción Operativa: