VULNERABILIDADES DE APLICACIONES WEB: LISTAS NEGRAS INCOMPLETAS

07.03.2018 09:42
 
Si se utiliza una lista negra incompleta como mecanismo de seguridad el filtro puede permitir que valores peligrosos pasen a la aplicación posibilitando diferentes ataques.
 
Veamos un caso concreto:
 
<?php
$html = $_POST["nombre"];
 
$filtrar = array("<script>", "</script>");
$html = str_replace($filtrar, "", "$html");
 
echo 'Bienvenido '. $html . "!";
?>
 
Si como "nombre" ingresamos "<script>alert(1)</script>" les etiquetas "<script>" y "</script>" serán filtradas pero si ingresamos "<scr<script>ipt>alert(1)</sc</script>ript>" o "<video><source  onerror="alert('probado')">" lograremos ejecutar un ataque de Cross-site Scripting. Hoy por hoy para ver el efecto (¡para estas etiquetas!) muy probablemente debamos desactivar la protección contra xss del navegador, pero aún así habrá otras etiquetas (en rigor otras cargas útiles) que podamos inyectar para vencer la defensa en profundidad contra este ataque.
 
Las listas negras incompletas pueden dar lugar a vulnerabilidades muy diferentes tal como vimos en: geoestrategia.webnode.es/news/vulnerabilidades-de-aplicaciones-web-inyeccion-de-comandos-iii/Precisamente la inyección de comandos es uno de los ataques que por su alto impacto dio lugar a las técnicas de evasión de filtros más ingeniosas. 
 
Las listas negras suelen ser un elección de valor muy dudoso a la hora de prevenir ataques y cada uno de ellos suele tener mejores formas de ser impedido o al menos muy dificultado.