LFI | Inyección de Bytes Nulos

Local File Inclusión | Inyección de Bytes Nulos


Introducción Técnica de Inyección de Byte Nulo

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. 

Te recomendamos leer nuestro post:  LFI | Local File Include (Inclusion Local de Archivos)

Para poder encontrar este tipo de vulnerabilidad, tenemos varias formas, las cuales describimos en nuestro post sobre explotación y detección de esta vulnerabilidad. Estas formas pueden ser por ejemplo Google Hacking por medio de Dorks como este:

[*] inurl:download.php

Te recomendamos leer nuestro post:  LFI | Explotación e Identificación

Técnica de Explotación | Bytes Nulos (Null Byte)

Cuando estamos tratando de explotar una vulnerabilidad, LFI nos podemos enfrentar a medidas de protección, principalmente filtros o BlackList. La técnica de inyección de bytes nulos (Null Byte Inyection) es una contramedida con la cual nosotros podemos burlar o evadir este tipo de filtros, mediante la inyección de bytes nulos.

Con esta técnica burlamos los filtros agregando NullBytes codificados en la URL, comúnmente se utiliza el %00 como byte nulo, logrando eludir el filtro de blacklist.

¿Cómo o porque funciona?

El Byte Nulo es un carácter de control con valor 0 existente en muchos conjuntos de caracteres que se utiliza como un carácter reservado para marcar el final de una cadena. Cuando este es empleado cualquier carácter después de este byte especial será ignorado. Comúnmente la forma de insertar este carácter sería con la cadena codificada en URL anexándola a la ruta de acceso solicitada.

Por ejemplo tenemos el siguiente caso:

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

En el cual el script view.php es el siguiente:

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

El cual como les mostramos en nuestro post de introducción ese código es vulnerable a LFI. Para explotar el fallo vamos a aceder al directorio /etc/ y al archivo passwd, para eso en la url vamos a sustiruir el archivo index.php por la ruta /etc/passwd

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

Esto nos daría acceso a información muy sensible, Algunos desarrolladores o webmaster implementan un filtro en el script como el siguiente:

<?php include($_GET['file'].".php"); ?>

Con lo cual hacer lo primero ya no será posible. Este es el momento en donde haremos uso del byte nulo. Debemos recordar que su función es finalizar todo aquello que esta después del byte nulo

Http://www.banco.com.mx/view.php?sitio=/etc/passwd%00.php

Haciendo esto podemos burlar el filtro y dejar la extensión .php eliminada permitiéndonos tener acceso al archivo passwd y su contenido altamente sensible.

Publicar un comentario

0 Comentarios

Slider Parnert

Subscribe Text

¿Quieres estar al día con noticias?