Autor Tema: Tecnicas para evadir, explotar y atacar los filtros mas importantes de XSS [IRC]  (Leído 8936 veces)

0 Usuarios y 1 Visitante están viendo este tema.

hkm

  • Moderador
  • *
  • Mensajes: 1236
  • Liked: 267
    • Hakim.Ws
[Nuestros filtros XSS favoritos y como evadirlos] por sdc
Tecnicas que han sido usadas, estan siendo usada y seran usadas para evadir, explotar, y atacar algunos de los mas importantes y avanzados filtros de XSS




<hkm> el tema es "nuestros filtros de XSS favoritos y como evadirlos"
<sdc> jaja.. pues bueno, la info del draft esta en ingles.. medio ire traduciendo el abstract
<sdc> lo que se supone que se va a presentar, son varias tecnicas que han sido usadas, estan siendo usada y seran usadas para evadir, explotar, y atacar algunos de los mas importantes y avanzados filtros de XSS
<sdc> que incluyen los filtros contra xss que trae IE8
<sdc> addons como noscript
<sdc> IDSs en el servidor como mod_security y PHPIDS
<sdc> y bueno, un poco sobre como escaparte de la revision manual de logs
<sdc> son mas que nada tecnicas, ideas, y tips, que en general te podrian ayudar en hacer cualquier ataque
<sdc> les dare ejemplos de vulnerabilidades pasadas que usamos, para hacer ataques o demos, o pocs
<sdc> y para los que vayan a blackhat veran 0days xD jaja
<sdc> y bueno.. sobre background..
<sdc> ya todos conocemos las maneras comunes de instertar XSS.. <script> en eventos como atributos, etc..
<sdc> algo no muy conocido es el estudio que se hace a el payload en si
<sdc> o DOM level XSS
<sdc> cuyo payload consiste enteramente de javascript
<sdc> algunos de los filtros que detectan esto son IE8 XSS Filter y el de NoScript (asi como phpids)
<sdc> la manera de evadir esto es muy sencilla, solo debes conocer muy bien javascript, y su sintaxis
<sdc> por ejemplo, una manera normal de "protegerte" contra XSS seria detectar si la peticion contiene "document.cookie" (es un ejemplo)
<sdc> sinembargo, fuera de que hay muchos ataques que no requieren la cookie
<sdc> si realmente quisieras obtenerla
<sdc> lo puedes hacer o con..
<sdc> (document).cookie o (1&&document||0).cookie o (1?document:0).cookie o with(document)cookie o.. document["cookie"] etc.. hay muchas maneras

<depasonico> pero ne si para hacer una buena defenza contra XSS seria desde la programacion del aplicativo web y haciendo una whitelist
<sdc> ah si claro
<sdc> pero no se puede hacer esto siempre
<sdc> el uso de filtros es obviamente debil por diseño
<sdc> pero por ejemplo
<depasonico> pero bueno sin esos programadores no tendriamos diversion
<depasonico> :P
<sdc> tu siendo el creador de NoScript
<sdc> como creas un filtro usando whitelist?
<depasonico> pues noscript no se
<sdc> no se puede, de hecho he conversado con Giorgio Maone el creador de noscript mucho tiempo al respecto, y es obvio, que blacklist es la unica opcion
<sdc> al igual con los filtros de IE8
<sdc> lo mejor seria que no hubiera vulnerabilidades de XSS, vamos que los programadores no cometieran errores
<depasonico> asi es
<sdc> pero eso no pasa, asi que se usan WAFs y IDSs para protegerte
<sdc> el problema esta cuando los IDSs los usan como IPS (como pasa con mod_security)
<sdc> pero bueno, ya llegare alla xD
<depasonico> ok
<sdc> la manera enfin de ejecutar codigo javascript, y romper las protecciones es infinita
<sdc> ahora tambien existen vulnerabilidades de XSS no solo en HTML
<sdc> sino en XML
<sdc> practicamente nadie usa -moz-binding en la vida real
<depasonico> he leido que ya hay para webservices
<depasonico> pero nunca he visto uno que realmente funcione
<sdc> ya hay que?
<depasonico> XSS
<sdc> seria XML injection
<depasonico> pero si haces eso casi siempre truena el parseo
<sdc> o SOAP o XMLPC algo asi, eso existe desee hace tiempo
<sdc> en fin.. algunas de las cosas que se pueden hacer con XML respecto a XSS
<sdc> es cambiar el namespace (XMLPC es xml rpc)

<itachiiii> por eso ¬¬ preguntaba
<sdc> tambien puedes generar imagenes SVG con eventos (malicious-markup.blogspot.com)
<sdc> tambien existe XSLT que te permite que un archivo XML pueda contener HTML

<sdc> pero hay otra cosa interesante
<sdc> si un servidor te permite
<sdc> subir archivos XML
<sdc> aunque manden la header de content-type: text/xml
<sdc> usando el namespace puedes forzar su contenido a ser html
<sdc> por ej.
<sdc> http://warzone.elhacker.net/xss.xml

<sdc> ademas si ven el codigo fuente
<sdc> <?xml version="1.0"?><html:html xmlns:html='http://www.w3.org/1999/xhtml'><html:script>alert(document.cookie);</html:script></html:html>
<sdc> el codigo no usa las tags que normalmente se usan
<sdc> el <html:algo> no es forzoso de usar
<sdc> puede ser
<sdc> <cripkeyesgay:script> etc..

<sdc> otra cosa es usar CSS
<sdc> pero eso tiene demasiadas cosas
<sdc> jajaja asi que de eso mejor vean la presentacion

<depasonico> xD
<itachiiii> jajaja
<el5patas> rola slides
<sdc> http://www.google.com/url?sa=t&source=web&ct=res&cd=2&url=http%3A%2F%2Fp42.us%2Fcss%2F&ei=Cp-4SciNJ4r2sAOzwoQ8&usg=AFQjCNH4JdA4k61GSucg0UAxN-kQqi8SMA&sig2=SPPuTWnJm6YMwt7Ap8a9vg
<sdc> seh aver espera
<sdc> http://www.google.com/url?sa=t&source=web&ct=res&cd=4&url=https%3A%2F%2Fwww.underground.org.mx%2Findex.php%3Ftopic%3D22163.0&ei=Gp-4SdPhB4nOtQPZyPws&usg=AFQjCNH7-FkVD5uuOkl75sDxM-sap-crRg&sig2=dOkLhoGGxbRunqTAoUMvxw
<sdc> ah madlito google chafa
<sdc> https://www.underground.org.mx/index.php?topic=22163.0
<sdc> www.yscx.net/root/documents/The_Sexy_Assassin.ppt
<sdc> los PoCs estan aca:
<sdc> p42.us/css
<sdc> les recomiendo vean el CSSAR y el CSSH
<sdc> el CSSAR lee el contenido de un campo
<sdc> y lo manda a un servidor externo
<sdc> sin el uso de javascript
<sdc> por mediod e XSS

<sdc> asi que si tu victima navega con javascript desactivado
<sdc> no importa, igual lo puedes pwnear
<sdc> este es el CSSAR: http://eaea.sirdarckcat.net/cssar/v2/
<sdc> y este es el CSSH: http://eaea.sirdarckcat.net/cssh-mon/cssh-mon.php
<sdc> el CSSH mon monitorea que paginas web estas navegando (en otras ventanas)
<sdc> y te guarda un historial con la hora en la que diste click y etc..
<sdc> todo usando CSS nadamas, sin javascript

<depasonico> seria un tipo clickhijacking
<sdc> no, nada que ver
<depasonico> okas
<sdc> aunque es otro ataque clickjacking
<sdc> si navegas con javascript desactivado eres mas vulnerable a clickjacking a que si no lo estuvieras
<sdc> noscript es diferente, noscript tiene cosas que protegen contra eso
<sdc> ie8 tambien
<sdc> si alguien de aqui usa IE8 o firefox con noscript, pueden probarlo, pusimos protecciones contra clickjacking en foro.elhacker.net..
<sdc> entonces aunque se usa javascript tambien se usa
<sdc> la alternativa de la header
<sdc> X-FRAME-OPTIONS
<sdc> http://images.google.com/imgres?imgurl=:&imgrefurl=http://foro.elhacker.net/&usg=&h=&w=&sz=&tbnh=&tbnw=&ei=
<sdc> ah fuck
<sdc> maldito google
<sdc> http://images.google.com/imgres?imgurl=http://www.jakeludington.com/images/xp/bootscreen/resourcehacker1.png&imgrefurl=http://foro.elhacker.net/windows/cambiar_la_imagen_de_arranque_del_windows_xp-t133023.0.html&usg=__eHYgEntFLRiu5DGIsqYOXSJeduA=&h=367&w=586&sz=31&hl=en&start=3&sig2=5uDgZMIviKN_WY5WegehIw&tbnid=j6ZUJdIi2ynTiM:&tbnh=85&tbnw=135&ei=S6C4Saa9L4m0sAOLq9gv&prev=/images%3Fq%3Delhacker.net%26gbv%3D2%26hl%3Den%26rlz%3D1B5GGGL_enMX299MX
<sdc> 299%26sa%3DG
<itachiiii> o.o
<depasonico> ??
<beavis> To protect your security, the publisher of this content does not allow it to be displayed in a frame.
<sdc> si usan IE8 o NOScript, el navegador les da un error
<sdc> si, ese

<sdc> http://tinyurl.com/noclickjacking
<sdc> (es el mismo link)
<sdc> enfin.. el objetivo es no permitir que los botones en el foro sean "overlapeados" si se puede decir asi
<hkm> Adrian pagvac Pastor publico una variacion de eso, para atacar gmail
<hkm> en el frame ponia un fake de gmail y como url el mismo que pusiste, pero con diferente dominio:
<hkm> http://mail.google.com/imgres?imgurl=http://www.jakeludington.com/images/xp/bootscreen/resourcehacker1.png&imgrefurl=http://foro.elhacker.net/windows/cambiar_la_imagen_de_arranque_del_windows_xp-t133023.0.html&usg=__eHYgEntFLRiu5DGIsqYOXSJeduA=&h=367&w=586&sz=31&hl=en&start=3&sig2=5uDgZMIviKN_WY5WegehIw&tbnid=j6ZUJdIi2ynTiM:&tbnh=85&tbnw=135&ei=S6C4Saa9L4m0sAOLq9gv&prev=/images%3Fq%3Delhacker.net%26gbv%3D2%26hl%3Den%26rlz%3D1B5GGGL_enMX299MX
<eXTaSyS> y esta info se puede usar en shopadmins?
<sdc> ah yo tengo un PoC para gmail tmbn xD
<sdc> http://www.sirdarckcat.net/gmailclickjacking.html

<sdc> eso me manda un mail
<sdc> desde su cuenta de correo
<hkm> si lo he probado.. y funciona muy bien, seguro tienes varios correos desde mi cuenta por ahi
<Etal> Interesante
<eXTaSyS> para obtener acceso a un shopadmin
<hkm> tambien puedes robarte la lista de contactos no?
<sdc> tengo otro para twitter: http://www.sirdarckcat.net/coconuterror.html que recientemente aparecio un worm basado en ese PoC
<sdc> desde /a/contacts sip

<sdc> enfin, pero clickjacking ya va fuera del scope de xss
<sdc> cosas interesantes a remarcar en XSS es la codificacion
<eXTaSyS> iteresante informacion.
<sdc> ya deben conocer el problema de US-ASCII, charsets chinos y japoneses, y de israel, y muchos que no conozco
<sdc> si no conocen
<sdc> aca esta
<sdc> http://ha.ckers.org/charsets.html
<sdc> y bueno, el problema es que permiten hacer cosas bien divertidas
<sdc> como hacer que en cierto charset una cadena cambie
<sdc> y cosas asi, recientemente un japones no recuerdo su nombre
<sdc> presento una manera de romper cadenas de JSON
<sdc> usando precisamente esto
<sdc> y despues gareth heyes presento el mismo concepto
<sdc> pero en XML (muy interesante para atacar cosas como feeds RSS de foros SMF xD, o blogs, etc..)
<sdc> esta es la presentacion de lo de los charsets y json
<sdc> http://powerofcommunity.net/poc2008/hasegawa.pptx
<sdc> y esta la de gareth
<sdc> http://www.thespanner.co.uk/2009/02/24/inline-utf-7-e4x-javascript-hijacking/

<sdc> enfin, continuando
<sdc> esta informacion era a manera de introduccion de las maneras que hay de escapar de filtros
« Última Modificación: marzo 12, 2009, 11:54:22 pm por hkm »

hkm

  • Moderador
  • *
  • Mensajes: 1236
  • Liked: 267
    • Hakim.Ws
<sdc> ya pasando a los filtros en si, empesaremos con este: http://msdn.microsoft.com/en-us/library/ms972967.aspx
<sdc> en ASP.NET 1.0 hay un conjunto de herramientas

<sdc> que te permiten detectar strings peligrosas
<sdc> su potencia es obviamente muy muy muy `perl -e "print 'muy'x1e3"`
<sdc> baja
<sdc> y su principal problema es que solo detecta sentencias HTML basicas
<sdc> digamos, las de aqui http://ha.ckers.org/xss.html

<sdc> cuando deberia estar detectando cosas avanzadas.. como la de XSSdb
<sdc> de gnucitizen
<sdc> que creo que pdp ya la quito
<sdc> que cabron..
<sdc> bueno pero aca esta la BD
<sdc> http://xssdb.dabbledb.com/

<sdc> el siguiente PoC puede pasar las protecciones de servicios protegidos
<sdc> con ASP.NET
<sdc> <iFraMe srC=javAscrIpt:alert(123)//

<sdc> en primera lo pasa porque el tag no esta cerrado, sinembargo pasa el chequeo, porque buscan por
<sdc> "javascript:" en minusculas
<sdc> y pasa el chequeo de atributos porque no uso comillas
<sdc> sinembargo, no siempre querremos bypasear el filtro
<sdc> habra veces en las que ser detectados sera bueno
<hkm> eso funciona en todos los browsers? lo de no cerrar los tags?
<sdc> sip
<sdc> solo que tengan un DOCTYPE de STRICT
<sdc> que pasa aveces
<sdc> jaja
<sdc> pero a menos que quieran atacar w3c.org
<sdc> no tienen problemas
<a_d_mIRC> ?
<sdc> EL problema principal en mi opinion con este filtro es que por default, o por culpa de admins tontos revela informacion http://i.msdn.microsoft.com/ms972967.scriptingprotection_fig07(en-us,MSDN.10).gif
<sdc> el stacktrace, y demas
<sdc> y la cantidad de sitios que hacen esto
<sdc> es..
<sdc> http://www.google.com/search?q=a+potentially+dangerous+request.form+value+was+detected+from+the+client
<itachiiii> si enorme xD
<sdc>  Results 1 - 10 of about 50,000 for a potentially dangerous request.form value was detected from the client. (0.09 seconds)
<sdc> enfin..
<sdc> Ahora hablare de mod_security
<sdc> esto lo usan muchos admins que usan apache
<sdc> creen que son seguros
<sdc> pero no
<sdc> warzone tiene mod_security, asi que ahi presentare las pruebas
<sdc> http://warzone.elhacker.net/test.php
<sdc> un forbidden o internal server error
<sdc> significa que modsecurity detecto el vector

<sdc> prueba #1
<sdc> http://warzone.elhacker.net/test.php?document.cookie -> error
<sdc> http://warzone.elhacker.net/test.php?document[%22cookie%22] -> no hay error
<sdc> http://warzone.elhacker.net/test.php?echo+%27test%27 -> error
<sdc> http://warzone.elhacker.net/test.php?echo(%27test%27) -> no hay error
<sdc> http://warzone.elhacker.net/test.php?SELECT%20*%20FROM%20something -> error
<sdc> http://warzone.elhacker.net/test.php?SELECT%20/**/%20*%20FROM%20something -> no hay error
<sdc> http://warzone.elhacker.net/test.php?/etc/passwd -> error
<sdc> http://warzone.elhacker.net/test.php?/etc/kernel/../passwd -> no hay error
<sdc> puedo seguirle asi por siglos, el problema es que las reglas son insuficientes, y estan orientadas a detener a atacantes de "tutorial" (los que quieren hackear siguiendo un tutorial de un foro ^^)
<hkm> bah con un simple /**/ ? quien diria..
<sdc> jajaja seh, hay unos mas elite, que protegen contra comentarios
<sdc> una ves me encontre con uno que protegia contra UNION SELECT
<sdc> asi hiciera
<sdc> UNION /* BASURA */ SELECT
<sdc> me lo detectaba
<scp> jajaj
<sdc> lo unico que hice fue entrar a la documentacion de mysql
<sdc> y decia que habia una constante opcional
<sdc> dejada por compatibilidad
<sdc> UNION ALL SELECT
<sdc> la probe, y paso el filtro

<sdc> asi igual pasa muchas veces, y esto es en mod_security
<sdc> que en POST requests cuando la peticion es multipart
<sdc> puedes mandar
<sdc> UNION [salto de linea] SELECT
<sdc> como la expresion regular
<sdc> checa por
<sdc> .*
<sdc> y . significa cualquier char menos salto de linea
<sdc> pues no detecta nada

<sdc> mod_security necesita mucho trabajo.. si quiere ser un IPS como IDS esta bien, pero si quiere detener atacantes, va por mal camino
<sdc> y bueno, ahora sobre PHP-IDS..
<sdc> mario heiderich, es muy bueno y ha arreglado practicamente todas las vulnerabilidades que encontramos

<LightOS> and 1=1 lo detecta mod_security
<LightOS> pero trate con and (select 1 from Test)=1 y funciono sin problema
<sdc> si, asi pasa :P jaja
<sdc> pueden probar PHP-IDS aqui http://php-ids.org/demo/
<sdc> Gareth Heyes, y David Lindsay  han pasado mucho tiempo atacando ese IDS
<sdc> puedo confiar en que esas reglas son las mas avanzadas para detectar XSS que hay actualmente
<sdc> asi que bueno, ese fue mi comercial para PHP-IDS, no tenemos ningun ataque contra el "sin arreglar" porque los arregla en 7 minutos
<sdc> ahora, eso fue sobre filtros de XSS a nivel servidor
<sdc> ahora pasare a IE8 XSS
<sdc> para los que no sabian, IE8 tiene filtros de XSS
<sdc> detecta si tu peticion tiene algo que se ve peligroso
<LightOS> http://demo.php-ids.org/?test=this[('eva')+new Array + 'l'](/x.x.x/+name+/x.x/)
<sdc> ve si la peticion se refleja en el codigo HTML
<sdc> y si lo hace, simplemente modifica el resultado
<sdc> eso efectivamente detiene la mayoria de los ataques contra XSS
<sdc> tenemos un par de ataques contra el filtro, pero eso sera publico hasta blackhat jajaja.. ya las reporte a Microsoft y las arreglaran como en 1 mes, o algo asi..

<sdc> en cualquier caso
<sdc> se puede atacar
<sdc> por ejemplo, el filtro no tiene planeado proteger contra CSS

<sdc> como ya hemos visto, CSS solo puede ser bastante peligroso
<sdc> otra cosa que podemos hacer es desactivar javascript o algun script determinado en una pagina
<sdc> por ejemplo.. si quisieramos desactivar el script que protege a un sitio web a no ser colocado dentro de un iframe
<sdc> solo tenemos que hacer
<sdc> http://pagina.com/x?<script>codigo que protege</script>
<sdc> el filtro de IE8 va a pensar que el codigo que aparece en la pagina
<sdc> es consecuencia de nuestro ataque
<sdc> y lo va a quitar

<sdc> estamos en si, aprovechandonos del filtro para vulnerar otros
<sdc> ademas, podemos desahbilitar hojas de estilo
<sdc> "meta refreshes"
<sdc> etc..
<sdc> si alguna ves se encontraron con algun script que les molestaba para poder atacar
<sdc> pues, IE8 XSS Filter es la solucion
<sdc> lo pueden deshabilitar
<sdc> aprovechando su misma capacidad para proteger a los usuarios
<sdc> ahora voy con NoScript..
<sdc> todo esto lo platique con Giorgio Maone, y si algo es vulnerable todavia
<sdc> es porque no lo piensa arreglar
<sdc> el en verdad me dijo que no arreglara varias cosas
<sdc> porque no quiere sacrificar el tiempo de carga
<sdc> o para evitar flasos positivos
<sdc> primero, NoScript tiene una excepcion.. si el sitio no es marcado como "confiable"
<sdc> entonces los filtros de XSS no se aplican en el
<sdc> esto es porque el sentido comun indica
<sdc> "si javascript esta deshabilitado, que puede hacer un atacante?"
<sdc> pues puede hacer mucho
<sdc> puede hacer inyeccion de frames (para clickjacking) inyectar CSS (ver the sexy assassin), puede inyectar formularios (y hacer phishing), puede hacer redirecciones, etc..

<sdc> tengo pensado mostrar PoCs, pero ahorita no los tengo hechos
<sdc> hay otra excepcion muy importante
<sdc> llamada
<sdc> "same origin"
<sdc> y es..
<sdc> si http://hakim.ws/ es el origen de una peticion a http://hakim.ws/publica-noticia.php
<sdc> entonces aunque la peticion tenga cosas con XSS
<sdc> noscript no lo bloqueara
<sdc> porque viene del mismo origen
<sdc> esto es importante, porque eso significa que noscript no protege contra xss worms

<sdc> y porque
<sdc> sitios con "open redirections" como google
<sdc> o con paginas que permiten meter frames arbitrariamente (como google, telmex, etc..)
<sdc> pueden ser explotadas con ataques de xss
<sdc> sin ser detectado por noscript
<sdc> tengo un PoC para esto
<sdc> un momento
<sdc> ahm, no se donde lo deje
<sdc> http://www.google.com/imgres?imgurl=http://tinyurl.com/ZWZ8Z4&imgrefurl=http://tinyurl.com/ZWZ8Z4
<sdc> si lo notan, noscript no hizo ninguna alerta

<Neuro> tinyurl = virii
<sdc> y si ven la pagina a la que se hizo peticion
<sdc> https://www.google.com/adsense/g-app-single-1.do?websiteInfoInput.uri=ZWZ8Z4&contactInput.asciiNameInput.fullName=%3Cscript%22
<sdc> tiene un codigo que deberia haber sido detectado por noscript
<sdc> <script"
<sdc> no fue detectado porque quien hizo la peticion fue google
<sdc> otra cosa que tiene de problema noscript es que solo limpia peticiones de subdocumentos
<sdc> como <frames> <iframes> etc..
<sdc> pero si haces <img src="peticion">
<sdc> no lo detecta noscript

<sdc> asi que si tienen una vulnerabilidad que guarda en sesion informacion
<sdc> y la replica en una pagina
<sdc>  (como formularios)
<sdc> de registro
<sdc> pues pueden hacer la peticion como imagen
<sdc> y despues mostrar la pagina de registro
<sdc> y bueno, ahora, ataques que se pueden hacer usando NoScript
<sdc> en primera puedes forzar a NoScript ha entrar en un loop infinito de "chequeos" contra XSS con la header de HTTP Location
<sdc> o con meta Refresh
<sdc> o con imagenes
<sdc> o con iframes
<sdc> no importa, noscript siempre checara
<sdc> el problema es que estos chequeos consumen aproximadamente 2 segundos en un procesador 2.0 ghz
<sdc> y si haces muchos simultaneamente
<sdc> puedes congelar al navegador

<sdc> tambien existen cosas con su sistema para proteger contra leeks de POST cross-domain entre inseguro y seguro
<sdc> es decir, si www.hakim.ws no esta marcado como confiable (como todos lo deberiamos tener.. jaja), y hace una peticion a www.sirdarckcat.net (que todos deberian tener como confiable), entonces la peticion se convierte en GET y se le quitan las cookies
<sdc> eso de quitar las cookies es muuuy importante para ataques de Session Fixation
<sdc> porque ahora el servidor generara nuevas cookies sobreescribiendo las anteriores

<sdc> y eso se intensificara mas con "ABE" unaddon que va a traer noscript para intensificar estas features abusables
<sdc> y bueno.. ya es todo a grandes razgos
<sdc> como conclusion pues..
<sdc> deberian navegar con lynx
<hkm> xD
<scp> jaja
<hkm> con nc
<dexter_one> XD
<sdc> si, netcat es mejor
<sdc> o wget
<sdc> nonono
<sdc> wget no
<hkm> curl ya no
<hkm> xD
<sdc> porque luego van a querer arir los archivos con un browser
<hkm> muy buena la platica buena info sdc
<hkm> ya ando jugando con algunas cosas
<scp> concuerdo contigo amigo
<sdc> jaja faltan los PoCs, pero es costumbre hacer los PoCs 5 minutos antes de la platica
<sdc> ya es como tradicion
<sdc> la pagina esta http://p42.us/css la terminamos de hacer mientras nos estaban presentando en el auditorio ese
« Última Modificación: marzo 12, 2009, 01:53:28 am por hkm »