• LOGIN
  • No hay productos en el carrito.

LFI | Local File Include (Inclusion local de Archivos)

La vulnerabilidad LFI o en español inclusión local de archivos, son aquellas que permiten a un atacante robar datos, información, archivos o ejecutar código malicioso, pues esta vulnerabilidad permite a un atacante manipular los servidores web, por medio de parámetros vulnerables, mediante la inclusión de una URL, la cual haga de referencia para albergar código arbitrario, de este modo permitiendo la ejecución remota.
En otras palabras, es una vulnerabilidad que permite cargar y ejecutar archivos locales, se da por un error de programacion PHP, donde se carga un archivo, contenido en una variable.
Un ejemplo de código PHP vulnerable es aquel que utiliza las sentencias include o require por ejemplo:
<?php
include $_GET['variable']; 
?>
En la URL del sitio seria, donde en el código anterior, «variable» seria remplazado por pagar.html.
http://www.objetivo.com/view.php?page=pagar.html
La vulnerabilidad LFI permite ejecutar o descargar archivos locales del propio servidor, (en otro post veremos la vulnerabilidad RFI, lo contrario a LFI). Estos archivos pueden ser los de configuracion, logs, passwords, etc. Los motivos por los cuales se da esta vulnerabilidad, son de error de programacion, como ya lo había mencionado, pero especificado un poco, podemos decir que se da por:
  • Utilizar las sentencias include o require, con una variable en lugar del archivo especifico.
  • No validar el contenido de la variable. (Algo común en la inyección de código)

Explotando LFI

Para detectar la vulnerabilidad lo podemos hacer, con solo ver la URL del sitio. Suponiendo que nuestro objetivo es el siguiente:

Http://www.banco.com.mx/view.php?sitio=login.php

Podemos ver que en la URL el archivo view.php tiene el parámetro «sitio», el cual tiene login.php. Donde el código PHP vulnerable seria:

<?php
include $_GET['sitio']; 
?>

<?php
include $_GET['login.php']; 
?>

Para explotar la vulnerabilidad seria:
Http://www.banco.com.mx/view.php?sitio=/etc/passwd
De esta forma tendríamos acceso al directorio etc/passwd en sistemas linux, donde ya sabemos que se almacena ahi 😎

Protección contra LFI

La protección que se debe implementar para evitar se víctima de este tipo de vulnerabilidad, es que el programador filtre la variable o en su defecto no utilice una variable con las sentencias.
CÓDIGO VULNERABLE

<?php
include $_GET['sitio']; 
?>

CÓDIGO NO VULNERABLE
<?php
if ($sitio==»login»)
include ($sitio.”.php”);
?>
Mejorando el codigo anterior es recomendable utilizar un if-else o switch para validar el contenido de la URL, también es recomendable utilizar la función file_exist
<?php
if(!file_exists($_GET[‘page’])){
die(‘No existe’);
} else {
require_once($_GET[‘page’]);
?>
26/08/2018

¿Necesitas ayuda?

Si necesitas ayuda con la plataforma puedes enviarnos un correo a cursos@iciberseguridad.io, una persona estará feliz de poder ayudarte 🙂

Un poco de nosotros

Creemos que la capacitación en ciberseguridad debe ser gratuita, para todos y PARA SIEMPRE. Todos merecemos la OPORTUNIDAD de comenzar y desarrollar una carrera en este fascinante y majestuosa área.
Por lo tanto, el Instituto de Ciberseguridad es una comunidad donde las personas y las empresas se unen para brindar a todos la posibilidad de colaborar y revolucionar la experiencia educativa de ciberseguridad.

ICS: Instituto de Ciberseguridad

top
Instituto de Ciberseguridad. Todos los derechos reservados.
X