LFI | Local File Include (Inclusión Local de Archivos)

ByDrok3r

LFI | Local File Include (Inclusión Local de Archivos)

Comparte este contenido en tus redes sociales!

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’]);
?>
Comentarios de Facebook

About the author

Drok3r author