VULNERABILIDADES DE APLICACIONES WEB: LISTAS BLANCAS INAPROPIADAS

15.03.2018 13:01
Tomemos el siguiente archivo .php:
 
<?php
$dir = $_GET['carpeta'];
include($dir . "/accion.php");
?>
 
La intención del programador era que el usuario ingresara el valor "inicio" o "fin" para elegir entre dos acciones o funciones distintas, cada una ejecutada por un script PHP ubicado en una carpeta diferente: 
 
inicio/accion.php
fin/accion.php
 
Sin embargo si en el mismo directorio que "inicio/" y "fin/" se encontrara el subdirectorio "administrador/" con otro archivo "accion.php", el usuario podría ingresar como parámetro "carpeta" el valor "administrador" y ejecutar una acción reservada al mismo. 
 
Hemos dado un ejemplo extremadamente sencillo, el lector podrá complicarlo a gusto. Lo importante es ver que el desarrollador intentó limitar los archivos a ejecutar pero no lo hizo de la forma apropiada. El atacante incluso podría aprovechar alguna vulnerabilidad para crear o subir un archivo con el nombre de "accion.php" e ingresar una ruta totalmente diferente a la esperada:
 
https://127.0.0.1/inclusion-local-archivos/inclusion.php?accion=Unidad de disco:\xampp\htdocs\directorio\subidos\archivos-subidos  
 
El archivo sería incluido y ejecutado sin inconvenientes.