miércoles, 18 de febrero de 2009

XSS: Más formas de realizar un bypass

Saludos!


Son las 5:41 AM y mañana tengo clase de "Citología e Histología Animal y Vegetal", despues "Bioquímica", "Física", "Bioestadística" y por último prácticas de laboratorio de BQ... total que mi jornada empieza a las 9 de la mañana... así que imagenese el panorama: ahora no me puedo dormir porque no me despertaré. Por ello, voy a hacer algo productivo añadir un par de formas más sobre como saltar determinados filtros, y ya mañana cuando vuelva de clase (puesto que tengo huecos de varias horas) a mi habitáculo numerado como 302.... me pondré a juntar todos los métodos (es decir, extraer de aquel paper que hice ya time) y haré una especie de chuleta para tener en los marcadores por si nos hace falta ;)



Allá que vamos.

__________________________________________________


·Filtros basados en la supresión de palabras o expresiones concretas:

A este respecto, he encontrado dos formas curiosas de hacer el bypass. Una es aprovechando que la función de filtrado es Case Sensitive, es decir, que no distingue entre mayúsculas y minúsculas. En estos casos, si por ejemplo el filtro suprime la palabra "Javascript", nosotros podemos usar JaVaSCRiPT, y nuestro navegador lo dará por bueno :)

Otra posible forma que se me ocurre es el de meter un \n en mitad de la palabra, es decir, hacer:

JavaScr
ipt:alert(1);

Normalmente los navegadores suelen dar esto por válido y empalman la palabra automáticamente (siempre hay excepciones). Otro bypass u ofuscación de palabras puede ser el meter otra palabra tabú en mitad de la que nosotros queremos. Siguiente el ejemplo de la prohibición de Javascript:

java<script>script:alert(1);

De esta forma, el filtro eliminará <script> y empalmará el texto "javascript".


·Filtrado de expresiones, atributos y funciones

En algunas ocasiones el sistema sí permite el uso de código JS, pero meten un filtro para que suprima ciertas funciones que podrían volverse... "problemáticas". Para ello podemos usar eval(), metemos en ella la palabra por partes y despues concatenamos:

javascript:alert(eval('Saltando'+' Bypass'));

·Adhesión de caracteres al final de la cadena

Este curioso tipo de filtro me lo encontré en una web donde al hacer búsquedas, creaba un link a una foto del tipo <a href="http://example.org/index.php?z=LoqueBuscasSearched">. Me filtraba los <>, así que la idea de siempre de hacer "> no podía ser. El caso es que simplemente puse " para cerrar el href y despues puse un evento onmouseover con el JS y para poder evadirme el Searched">, simplemente me inveté un atributo. Entonces introduje esto:

foo" onmouseover=alert(1); bio="

Y el resultado fue:

<a href="http://example.org/index.php?z=foo" onmouseover="alert(1);" bio="Searched">


Bueno, son las 6:20AM ahora mismo (me fui a comer algo tenía hambre XD) y no se me ocurre ningún otro bypass, cuando me acuerde lo añadiré sobre la CheatSheet.

Byt3z a todos

5 0verl0ad Labs: XSS: Más formas de realizar un bypass Saludos! Son las 5:41 AM y mañana tengo clase de "Citología e Histología Animal y Vegetal", despues "Bioquímica", &quo...

2 comentarios:

Anónimo dijo...

soy fnix
me gusto tu articulo
pero no el nuevo theme del foro xD
me gustaba mas el otro jejeje

PD: JaAViEr tambien lee pero no comenta ¬_¬

Anónimo dijo...

Buen articulo

< >