SlideShare una empresa de Scribd logo
1 de 40
XSSto the MAX
Juan Manuel García
CEH/GPEN/CHFI/CEI/CICP/SCSE/STS
Cross Site Scripting
$Whoami
Juan Manuel García
 Profesional de Seguridad
 Ethical Hacker / Researcher
 Instructor
http://packetstormsecurity.org/files/author/8294/
www.linkedin.com/in/juanmagarcia
Define:Cross Site Scripting (XSS)
Vulnerabilidad que permite la inyección de scripts maliciosos (JavaScript, HTML, etc.) en
aplicaciones web que no chequean correctamente las salidas provenientes de las
peticiones del usuario (GET, POST, COOKIES, etc.).
Atacante inyecta el payload
<script>alert(document.cookie)</script>
La aplicación no valida correctamente el input y
devuelve el payload al browser de la víctima
El browser de la vícitma no filtra correctamente la
respuesta del server y ejecuta el payload
Define:Cross Site Scripting (XSS)
Vulnerabilidad que permite la inyección de scripts maliciosos (JavaScript, HTML, etc.) en
aplicaciones web que no chequean correctamente las salidas provenientes de las
peticiones del usuario (GET, POST, COOKIES, etc.).
Atacante inyecta el payload
<script>alert(document.cookie)</script>
La aplicación no valida correctamente el input y
devuelve el payload al browser de la víctima
El browser de la vícitma no filtra correctamente la
respuesta del server y ejecuta el payload
Define:Cross Site Scripting (XSS)
Vulnerabilidad que permite la inyección de scripts maliciosos (JavaScript, HTML, etc.) en
aplicaciones web que no chequean correctamente las salidas provenientes de las
peticiones del usuario (GET, POST, COOKIES, etc.).
Atacante inyecta el payload
<script>alert(document.cookie)</script>
La aplicación no valida correctamente el input y
devuelve el payload al browser de la víctima
El browser de la vícitma no filtra correctamente la
respuesta del server y ejecuta el payload
Atacante toma control del Browser de la víctima:
Contenido Cookie / Redirección a otro sitio / Iframe /
CSRF/ Keylogging/ XSS Tunneling
Tipos de XSS
Reflected Persistent
DOM Based
Mutation (mXSS)
XSS
Reflected XSShttps://www.owasp.org/index.php/Types_of_Cross-Site_Scripting#Reflected_XSS_.28AKA_Non-Persistent_or_Type_II.29
Persistent XSShttps://www.owasp.org/index.php/Types_of_Cross-Site_Scripting#Stored_XSS_.28AKA_Persistent_or_Type_I.29
Define:DOM
Es la estructura de objetos que genera el navegador cuando se carga un
documento y se puede alterar mediante Javascript para cambiar
dinámicamente los contenidos y aspecto de la página.
Netscape 2.0 fue el primero en incorporarlo, se lo llama “DOM0” (nivel 0). La
última especificación publicada es DOM4.
Las implementación de DOM difiere de browser en browser…
DOM Based XSShttps://www.owasp.org/index.php/Types_of_Cross-Site_Scripting#DOM_Based_XSS_.28AKA_Type-0.29
Algunos Inputs susceptibles DOM Based XSS:
 document.referer
 document.writte
document.documentURI
location.href
location.search
 location
 location.hash
location.*
 document.url
 window.name
 window.location
(element).innerHTML
eval
setTimout / setInterval
execScript
DOM Based XSShttps://www.owasp.org/index.php/Types_of_Cross-Site_Scripting#DOM_Based_XSS_.28AKA_Type-0.29
Define:DOM's innerHTML property
Setea o devuelve el contenido HTML de un elemento,
es utilizado para crear “paginas interactivas” (generalmente con JavaScript).
<script type="text/javascript"> function changeText2(){ var
userInput = document.getElementById('userInput').value;
document.getElementById('boldStuff2').innerHTML =
userInput; } </script> <p>Welcome to the site <b
id='boldStuff2'>dude</b> </p> <input type='text'
id='userInput' value='Enter Text Here' /> <input type='button'
onclick='changeText2()' value='Change Text'/>
Qué pasa si se manipula el contenido ingresado por el
usuario antes de ser procesado por el innerHTML?
Mutation (mXSS)
Mario Heiderich: https://cure53.de/fp170.pdf
La webapp es vulnerable si inserta inputs del usuario a través de innertHTML
- o propiedades relacionadas- (Ej: jQuery) en el DOM del browser
1. Ningún sitio conocido es vulnerable a XSS
2. Explotando XSS no se ownea nada
realmente
3. El filtrado Anti-XSS es infalible
Mitos sobre XSS
Reflected XSS en sitios populares
Desmitificación 1: Ningún sitio es vulnerable a XSS
Persistent XSS en sitios populares
Desmitificación 1: Ningún sitio es vulnerable a XSS
Incidentes provocados por XSS…
2013: Apple Developer Website Hacked
http://mytechblog.com/other/apple/apple-developer-website-hacked-what-happened/
2013: Ubuntu Forums Hacked
http://blog.canonical.com/2013/07/30/ubuntu-forums-are-back-up-and-a-post-mortem/
2010: Servidor Apache Foundation Owneado
https://blogs.apache.org/infra/entry/apache_org_04_09_2010
Desmitificación 1: Ningún sitio es vulnerable a XSS
XSS en aplicaciones
Desmitificación 1: Ningún sitio es vulnerable a XSS
XSS en aplicaciones (cont.)
Desmitificación 2: Explotando XSS no se ownea nada realmente
XSS Tunneling
Establecen un canal bidireccional entre el atacante y el browser un usuario víctima
El atacante inyecta un link a un .js, logrando que cuando el usuario ingrese a la aplicación
vulnerable, el browser ejecute el Javascript alojado en el servidor del atacante.
Esto permite que el atacante obtenga control sobre el Navegador Web de la víctima ;)
Desmitificación 2: Explotando XSS no se ownea nada realmente
Cómo obtener acceso como Domain Admin
1
•Inyectar un payload (BeeF) en una aplicación vulnerable a XSS persistente
2
•El usuario víctima accede y el payload es ejecutado por su browser.
•Explotamos alguna vulnerabilidad (Metasploit) e inyectamos meterpreter
3
•Impersonalizamos un token con privilegios de “domain admin”
• Obtenemos IP del DC (post/windows/gather/enum_ad_computers)
•Hacemos un “port fw” del puerto 3389 del equipo víctima a nuestro equipo
4
•Nos conectamos vía RDP al escritorio del servidor de Active Directory
Desmitificación 2: Explotando XSS no se ownea nada realmente
Anti-XSS: Server-Side (App)
Escape (&, <, >, ", '): HTML / JavaScript …
Ej: &lt;script&gt;alert(1)&lt;/script&gt;
 Sanitize HTML Markup (remoción de “etiquetas inseguras” como <script>):
HtmlSanitizer / OWASP AntiSamy / OWASP Java HTML Sanitizer…
Ej: AntiSamy as = new AntiSamy(); CleanResults cr = as.scan(dirtyInput, new
File(policyFilePath));
 X-XSS-Protection: Fuerza la activación del filtro Anti-XSS del browser
Ej: X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff Previene ataques de MIME (contenido)
 HTTPOnly: Flag opcional de la cookie que le indica al browser que la cookie no
debe ser accedida por client-side scripts.
Ej: Set-Cookie: path=/; Secure; HttpOnly
Puede ser seteado en el código de la WebApp o agregado on the fly por un WAF
Es una solución de seguridad (proxy) que analiza tráfico (entrante y
saliente) a nivel de capa 7 con el fin de detectar y bloquear/alertar
ataques web (SQLi, XSS, DDoS, …)
Anti-XSS: Server-Side (WAF)
Características típicas:
 Detección de ataques basado en Firmas (texto o regex)
 Uso de “listas negras” (IP, Browser, etc.)
 Importación de salidas de DAST Scanners para aplicar“Virtual Patching”
 Aplicación de protecciones en la respuestas HTTP (Ej: Httponly)
Anti-XSS: Client-Side
 Protecciones de XSS en Browsers
 Browser Anti-XSS Filters: Son filtros integrados nativamente en los browsers.
Si detectan una “condición peligrosa” reescriben el código para hacerlo inocuo
 Compatibilidad con protecciones de XSS indicadas por el webserver:
• Httponly
• X-XSS-Protection
• X-Content-Type-Options: nosniff
 Content Security Policy: Crea “Listas blancas” de origen de recursos client-
side. Más info en: http://content-security-policy.com/
Ej: Content-Security-Policy: default-src 'self';
Extensiones Anti XSS complementarias
Filtran inyecciones de HTML o JavaScript basándose en la detección de
“caracteres peligrosos”
Soporte de “X-Content-Type-Options: nosniff” para Firefox
Técnicas para saltear protecciones
 Url Encoding: http://meyerweb.com/eric/tools/dencoder/
%3Cscript%3Ealert(1)%3C%2Fscript%3E
 Double Encoding: [(ASCII -> Hexa) + Url Encoding]-> Hexa + Url Encoding
 Mixed Encoding: Double URL Encoding + HTML Encoding + Unicode Encoding
<img/src="x"/onerror="promt(‘XSS’);">
%3Cimg%2Fsrc%3D%22x%22%2Fonerror%3D%22prom%5Cu0070t%2526%2523x28%3B%2526%25
23x27%3B%2526%2523x58%3B%2526%2523x53%3B%2526%2523x53%3B%2526%2523x27%3B%25
26%2523x29%3B%22%3E
 JS-FUCK Encoding: Encoding de JavaScript usando solo estos 6 caracteres: ! ( ) + [ ]
http://jscrew.it/
%253Cscript%253Ealert(1)%253C%252Fscript%253E
http://www.asciitohex.com/
Desmitificación 3: El filtrado Anti-XSS es infalible
Técnicas para saltear protecciones
 Url Encoding: http://meyerweb.com/eric/tools/dencoder/
%3Cscript%3Ealert(1)%3C%2Fscript%3E
 Double Encoding: [(ASCII -> Hexa) + Url Encoding]-> Hexa + Url Encoding
 Mixed Encoding: Double URL Encoding + HTML Encoding + Unicode Encoding
<img/src="x"/onerror="promt(‘XSS’);">
%3Cimg%2Fsrc%3D%22x%22%2Fonerror%3D%22prom%5Cu0070t%2526%2523x28%3B%2526%25
23x27%3B%2526%2523x58%3B%2526%2523x53%3B%2526%2523x53%3B%2526%2523x27%3B%25
26%2523x29%3B%22%3E
 JS-FUCK Encoding: Encoding de JavaScript usando solo estos 6 caracteres: ! ( ) + [ ]
http://jscrew.it/
%253Cscript%253Ealert(1)%253C%252Fscript%253E
http://www.asciitohex.com/
JS-FUCK Encoding del XSS payload alert(1)
Desmitificación 3: El filtrado Anti-XSS es infalible
Técnicas para saltear protecciones
 Url Encoding: http://meyerweb.com/eric/tools/dencoder/
%3Cscript%3Ealert(1)%3C%2Fscript%3E
 Double Encoding: [(ASCII -> Hexa) + Url Encoding]-> Hexa + Url Encoding
 Mixed Encoding: Double URL Encoding + HTML Encoding + Unicode Encoding
<img/src="x"/onerror="promt(‘XSS’);">
%3Cimg%2Fsrc%3D%22x%22%2Fonerror%3D%22prom%5Cu0070t%2526%2523x28%3B%2526%25
23x27%3B%2526%2523x58%3B%2526%2523x53%3B%2526%2523x53%3B%2526%2523x27%3B%25
26%2523x29%3B%22%3E
 JS-FUCK Encoding: Encoding de JavaScript usando solo estos 6 caracteres: ! ( ) + [ ]
http://jscrew.it/
%253Cscript%253Ealert(1)%253C%252Fscript%253E
http://www.asciitohex.com/
JS-FUCK Encoding del XSS payload alert(1)
Tamaño del payload
Ideal para inyectarlo usando POST, ya
que la mayoría de los webservers
limitan el tamaño de los GET
Desmitificación 3: El filtrado Anti-XSS es infalible
Técnicas para saltear protecciones (cont.)
 Bypassing de filtrados de caracteres
“lalala " onmouseover="alert(1);
' onmouseover='alert(1);
''onerror=alert(1)
 Ataque de URL Context
javascript:alert(1)
JaVaScRiPt:confirm%28location%29
 Regular expression Denial of Service (ReDoS)
https://www.checkmarx.com/wp-content/uploads/2015/03/ReDoS-Attacks.pdf
* Regex: ^([a-z0-9]+([-a-z0-9]*[a-z0-9]+)?.){0,}([a-z0-9]+([-a-z0-9]*[a-z0- 9]+)?){1,63}(.[a-
z0-9]{2,7})+$
* Payload: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!
 Bypass HTTPOnly
Apache <v2.2.1 divulga el contenido de la cookie en la página default de error código 400
http://www.securityfocus.com/bid/51706
Desmitificación 3: El filtrado Anti-XSS es infalible
Técnicas para saltear protecciones (cont.)
 mXSS
https://cure53.de/fp170.pdf
Inyectamos: <p style="font-family:'223bx:expression(alert(1))/*'">
Después del Anti XSS Filter se ejecutará: <P style="FONT-FAMILY: ; x:expression(alert(1))"></P>
 Bypassing de Filtros Anti XSS de Internet Explorer
https://www.whitehatsec.com/blog/internet-explorer-xss-filter/
 Bypassing de Filtros Anti XSS de Chrome
https://packetstormsecurity.com/files/132431/Google-Chrome-43.0.2357.124-XSS-Filter-Bypass.html
http://blog.elevenpaths.com/2014/01/how-to-bypass-antixss-filter-in-chrome.html
 Bypassing de Extensión “NoScript” (Firefox)
http://labs.detectify.com/2015/06/30/using-google-cloud-to-bypass-noscript/
El payload debe ser subido a un sitio que este en la “white list” de NoScript
 Recopilación de técnicas de evasión de OWASP
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet
Desmitificación 3: El filtrado Anti-XSS es infalible
Detección típica de XSS
Manual Auto
www.xss-payloads.com
http://pastebin.com/u6FY1xDA
OWASP Xenotix
Advanced XSS Detection & Explotation Framework
No tiene falsos-positivos en los resultados
Renderiza la respuesta del webserver usando 3 engines (Trident/Webkit/Gecko)
+4800 Payloads (bypassean WAF y Filtrado de caracteres)
Incluye varios módulos de explotación / post-explotación y encoders
3 tipos de Fuzzers
Ajin Abraham: https://www.owasp.org/index.php/OWASP_Xenotix_XSS_Exploit_Framework
Prevención de XSS
www.linkedin.com/in/juanmagarcia

Más contenido relacionado

La actualidad más candente

[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP
[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP
[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP7th_Sign
 
Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica
Mitigando Eventualidades de Seguridad en Web 2.0 + SemánticaMitigando Eventualidades de Seguridad en Web 2.0 + Semántica
Mitigando Eventualidades de Seguridad en Web 2.0 + SemánticaSoftware Guru
 
Asp seguridad
Asp seguridad Asp seguridad
Asp seguridad gerardd98
 
Vulnerabilidades en aplicaciones web
Vulnerabilidades en aplicaciones webVulnerabilidades en aplicaciones web
Vulnerabilidades en aplicaciones webRealTIC
 
Principales vulnerabilidades en Aplicaciones Web - Rediris 2008
Principales vulnerabilidades en Aplicaciones Web - Rediris 2008Principales vulnerabilidades en Aplicaciones Web - Rediris 2008
Principales vulnerabilidades en Aplicaciones Web - Rediris 2008Christian Martorella
 

La actualidad más candente (11)

Xss con javascript
Xss con javascriptXss con javascript
Xss con javascript
 
Xss attacks
Xss attacksXss attacks
Xss attacks
 
Resumen Servidor Proxy
Resumen Servidor ProxyResumen Servidor Proxy
Resumen Servidor Proxy
 
[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP
[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP
[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP
 
Charla java
Charla javaCharla java
Charla java
 
Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica
Mitigando Eventualidades de Seguridad en Web 2.0 + SemánticaMitigando Eventualidades de Seguridad en Web 2.0 + Semántica
Mitigando Eventualidades de Seguridad en Web 2.0 + Semántica
 
Asp seguridad
Asp seguridad Asp seguridad
Asp seguridad
 
Vulnerabilidades en aplicaciones web
Vulnerabilidades en aplicaciones webVulnerabilidades en aplicaciones web
Vulnerabilidades en aplicaciones web
 
Seguridad web
Seguridad webSeguridad web
Seguridad web
 
Principales vulnerabilidades en Aplicaciones Web - Rediris 2008
Principales vulnerabilidades en Aplicaciones Web - Rediris 2008Principales vulnerabilidades en Aplicaciones Web - Rediris 2008
Principales vulnerabilidades en Aplicaciones Web - Rediris 2008
 
Resumen squid
Resumen squidResumen squid
Resumen squid
 

Similar a XSS to the MAX - Juan Manuel Garcia (OWASP LATAM TOUR 2016)

Racciatti Html Scripting Attacks
Racciatti Html Scripting AttacksRacciatti Html Scripting Attacks
Racciatti Html Scripting AttacksCristian Borghello
 
Seguridad en aplicaciones web
Seguridad en aplicaciones webSeguridad en aplicaciones web
Seguridad en aplicaciones webJose Mato
 
Samurai Web Testing Framework 2.0
Samurai Web Testing Framework 2.0Samurai Web Testing Framework 2.0
Samurai Web Testing Framework 2.0Alonso Caballero
 
Exponiendo la verdad - C1b3rwall.pptx
Exponiendo la verdad - C1b3rwall.pptxExponiendo la verdad - C1b3rwall.pptx
Exponiendo la verdad - C1b3rwall.pptxDavidPadillaAlvarado
 
Javier Saez - Una panorámica sobre la seguridad en entornos web [rootedvlc2]
Javier Saez - Una panorámica sobre la seguridad en entornos web [rootedvlc2]Javier Saez - Una panorámica sobre la seguridad en entornos web [rootedvlc2]
Javier Saez - Una panorámica sobre la seguridad en entornos web [rootedvlc2]RootedCON
 
Xss completo
Xss completoXss completo
Xss completonoc_313
 
Los 7 pecados del Desarrollo Web
Los 7 pecados del Desarrollo WebLos 7 pecados del Desarrollo Web
Los 7 pecados del Desarrollo Webacksec
 
Seguridad en Aplicaciones Web
Seguridad en Aplicaciones WebSeguridad en Aplicaciones Web
Seguridad en Aplicaciones WebCarlos Fernandez
 
Webinar Gratuito: Cross-Site Scripting (XSS)
Webinar Gratuito: Cross-Site Scripting (XSS)Webinar Gratuito: Cross-Site Scripting (XSS)
Webinar Gratuito: Cross-Site Scripting (XSS)Alonso Caballero
 
Análisis de la vulnerabilidad en las paginas web
 Análisis de la vulnerabilidad en las paginas web Análisis de la vulnerabilidad en las paginas web
Análisis de la vulnerabilidad en las paginas webKevin Casaverde Roncal
 
Web App Security, Ethical hacking for CodeCamp SDQ 5
Web App Security, Ethical hacking for CodeCamp SDQ 5Web App Security, Ethical hacking for CodeCamp SDQ 5
Web App Security, Ethical hacking for CodeCamp SDQ 5Jose Gratereaux
 
Prevencion ante ataques XSS - Betabeers Córdoba (29/11/2012)
Prevencion ante ataques XSS - Betabeers Córdoba (29/11/2012)Prevencion ante ataques XSS - Betabeers Córdoba (29/11/2012)
Prevencion ante ataques XSS - Betabeers Córdoba (29/11/2012)betabeers
 
Curso basicoseguridadweb slideshare3
Curso basicoseguridadweb slideshare3Curso basicoseguridadweb slideshare3
Curso basicoseguridadweb slideshare3tantascosasquenose
 

Similar a XSS to the MAX - Juan Manuel Garcia (OWASP LATAM TOUR 2016) (20)

Racciatti Html Scripting Attacks
Racciatti Html Scripting AttacksRacciatti Html Scripting Attacks
Racciatti Html Scripting Attacks
 
Seguridad en los sistemas web
Seguridad en los sistemas webSeguridad en los sistemas web
Seguridad en los sistemas web
 
Web app attacks
Web app attacksWeb app attacks
Web app attacks
 
Que es xss
Que es xssQue es xss
Que es xss
 
WebAttack - Presentación
WebAttack - PresentaciónWebAttack - Presentación
WebAttack - Presentación
 
Seguridad en aplicaciones web
Seguridad en aplicaciones webSeguridad en aplicaciones web
Seguridad en aplicaciones web
 
Samurai Web Testing Framework 2.0
Samurai Web Testing Framework 2.0Samurai Web Testing Framework 2.0
Samurai Web Testing Framework 2.0
 
Exponiendo la verdad - C1b3rwall.pptx
Exponiendo la verdad - C1b3rwall.pptxExponiendo la verdad - C1b3rwall.pptx
Exponiendo la verdad - C1b3rwall.pptx
 
Javier Saez - Una panorámica sobre la seguridad en entornos web [rootedvlc2]
Javier Saez - Una panorámica sobre la seguridad en entornos web [rootedvlc2]Javier Saez - Una panorámica sobre la seguridad en entornos web [rootedvlc2]
Javier Saez - Una panorámica sobre la seguridad en entornos web [rootedvlc2]
 
Xss completo
Xss completoXss completo
Xss completo
 
Xss a fondo
Xss a fondoXss a fondo
Xss a fondo
 
Los 7 pecados del Desarrollo Web
Los 7 pecados del Desarrollo WebLos 7 pecados del Desarrollo Web
Los 7 pecados del Desarrollo Web
 
Seguridad en Aplicaciones Web
Seguridad en Aplicaciones WebSeguridad en Aplicaciones Web
Seguridad en Aplicaciones Web
 
Completo conferencia seguridad_web_software_libre_2015
Completo conferencia seguridad_web_software_libre_2015Completo conferencia seguridad_web_software_libre_2015
Completo conferencia seguridad_web_software_libre_2015
 
Webinar Gratuito: Cross-Site Scripting (XSS)
Webinar Gratuito: Cross-Site Scripting (XSS)Webinar Gratuito: Cross-Site Scripting (XSS)
Webinar Gratuito: Cross-Site Scripting (XSS)
 
Análisis de la vulnerabilidad en las paginas web
 Análisis de la vulnerabilidad en las paginas web Análisis de la vulnerabilidad en las paginas web
Análisis de la vulnerabilidad en las paginas web
 
Seguridad en php
Seguridad en phpSeguridad en php
Seguridad en php
 
Web App Security, Ethical hacking for CodeCamp SDQ 5
Web App Security, Ethical hacking for CodeCamp SDQ 5Web App Security, Ethical hacking for CodeCamp SDQ 5
Web App Security, Ethical hacking for CodeCamp SDQ 5
 
Prevencion ante ataques XSS - Betabeers Córdoba (29/11/2012)
Prevencion ante ataques XSS - Betabeers Córdoba (29/11/2012)Prevencion ante ataques XSS - Betabeers Córdoba (29/11/2012)
Prevencion ante ataques XSS - Betabeers Córdoba (29/11/2012)
 
Curso basicoseguridadweb slideshare3
Curso basicoseguridadweb slideshare3Curso basicoseguridadweb slideshare3
Curso basicoseguridadweb slideshare3
 

XSS to the MAX - Juan Manuel Garcia (OWASP LATAM TOUR 2016)

  • 1. XSSto the MAX Juan Manuel García CEH/GPEN/CHFI/CEI/CICP/SCSE/STS Cross Site Scripting
  • 2. $Whoami Juan Manuel García  Profesional de Seguridad  Ethical Hacker / Researcher  Instructor http://packetstormsecurity.org/files/author/8294/ www.linkedin.com/in/juanmagarcia
  • 3. Define:Cross Site Scripting (XSS) Vulnerabilidad que permite la inyección de scripts maliciosos (JavaScript, HTML, etc.) en aplicaciones web que no chequean correctamente las salidas provenientes de las peticiones del usuario (GET, POST, COOKIES, etc.). Atacante inyecta el payload <script>alert(document.cookie)</script> La aplicación no valida correctamente el input y devuelve el payload al browser de la víctima El browser de la vícitma no filtra correctamente la respuesta del server y ejecuta el payload
  • 4. Define:Cross Site Scripting (XSS) Vulnerabilidad que permite la inyección de scripts maliciosos (JavaScript, HTML, etc.) en aplicaciones web que no chequean correctamente las salidas provenientes de las peticiones del usuario (GET, POST, COOKIES, etc.). Atacante inyecta el payload <script>alert(document.cookie)</script> La aplicación no valida correctamente el input y devuelve el payload al browser de la víctima El browser de la vícitma no filtra correctamente la respuesta del server y ejecuta el payload
  • 5. Define:Cross Site Scripting (XSS) Vulnerabilidad que permite la inyección de scripts maliciosos (JavaScript, HTML, etc.) en aplicaciones web que no chequean correctamente las salidas provenientes de las peticiones del usuario (GET, POST, COOKIES, etc.). Atacante inyecta el payload <script>alert(document.cookie)</script> La aplicación no valida correctamente el input y devuelve el payload al browser de la víctima El browser de la vícitma no filtra correctamente la respuesta del server y ejecuta el payload Atacante toma control del Browser de la víctima: Contenido Cookie / Redirección a otro sitio / Iframe / CSRF/ Keylogging/ XSS Tunneling
  • 6. Tipos de XSS Reflected Persistent DOM Based Mutation (mXSS) XSS
  • 9. Define:DOM Es la estructura de objetos que genera el navegador cuando se carga un documento y se puede alterar mediante Javascript para cambiar dinámicamente los contenidos y aspecto de la página. Netscape 2.0 fue el primero en incorporarlo, se lo llama “DOM0” (nivel 0). La última especificación publicada es DOM4. Las implementación de DOM difiere de browser en browser…
  • 11. Algunos Inputs susceptibles DOM Based XSS:  document.referer  document.writte document.documentURI location.href location.search  location  location.hash location.*  document.url  window.name  window.location (element).innerHTML eval setTimout / setInterval execScript DOM Based XSShttps://www.owasp.org/index.php/Types_of_Cross-Site_Scripting#DOM_Based_XSS_.28AKA_Type-0.29
  • 12. Define:DOM's innerHTML property Setea o devuelve el contenido HTML de un elemento, es utilizado para crear “paginas interactivas” (generalmente con JavaScript). <script type="text/javascript"> function changeText2(){ var userInput = document.getElementById('userInput').value; document.getElementById('boldStuff2').innerHTML = userInput; } </script> <p>Welcome to the site <b id='boldStuff2'>dude</b> </p> <input type='text' id='userInput' value='Enter Text Here' /> <input type='button' onclick='changeText2()' value='Change Text'/> Qué pasa si se manipula el contenido ingresado por el usuario antes de ser procesado por el innerHTML?
  • 13. Mutation (mXSS) Mario Heiderich: https://cure53.de/fp170.pdf La webapp es vulnerable si inserta inputs del usuario a través de innertHTML - o propiedades relacionadas- (Ej: jQuery) en el DOM del browser
  • 14. 1. Ningún sitio conocido es vulnerable a XSS 2. Explotando XSS no se ownea nada realmente 3. El filtrado Anti-XSS es infalible Mitos sobre XSS
  • 15. Reflected XSS en sitios populares Desmitificación 1: Ningún sitio es vulnerable a XSS
  • 16. Persistent XSS en sitios populares Desmitificación 1: Ningún sitio es vulnerable a XSS
  • 17. Incidentes provocados por XSS… 2013: Apple Developer Website Hacked http://mytechblog.com/other/apple/apple-developer-website-hacked-what-happened/ 2013: Ubuntu Forums Hacked http://blog.canonical.com/2013/07/30/ubuntu-forums-are-back-up-and-a-post-mortem/ 2010: Servidor Apache Foundation Owneado https://blogs.apache.org/infra/entry/apache_org_04_09_2010 Desmitificación 1: Ningún sitio es vulnerable a XSS
  • 18. XSS en aplicaciones Desmitificación 1: Ningún sitio es vulnerable a XSS
  • 19. XSS en aplicaciones (cont.) Desmitificación 2: Explotando XSS no se ownea nada realmente
  • 20.
  • 21.
  • 22. XSS Tunneling Establecen un canal bidireccional entre el atacante y el browser un usuario víctima El atacante inyecta un link a un .js, logrando que cuando el usuario ingrese a la aplicación vulnerable, el browser ejecute el Javascript alojado en el servidor del atacante. Esto permite que el atacante obtenga control sobre el Navegador Web de la víctima ;) Desmitificación 2: Explotando XSS no se ownea nada realmente
  • 23. Cómo obtener acceso como Domain Admin 1 •Inyectar un payload (BeeF) en una aplicación vulnerable a XSS persistente 2 •El usuario víctima accede y el payload es ejecutado por su browser. •Explotamos alguna vulnerabilidad (Metasploit) e inyectamos meterpreter 3 •Impersonalizamos un token con privilegios de “domain admin” • Obtenemos IP del DC (post/windows/gather/enum_ad_computers) •Hacemos un “port fw” del puerto 3389 del equipo víctima a nuestro equipo 4 •Nos conectamos vía RDP al escritorio del servidor de Active Directory Desmitificación 2: Explotando XSS no se ownea nada realmente
  • 24.
  • 25. Anti-XSS: Server-Side (App) Escape (&, <, >, ", '): HTML / JavaScript … Ej: &lt;script&gt;alert(1)&lt;/script&gt;  Sanitize HTML Markup (remoción de “etiquetas inseguras” como <script>): HtmlSanitizer / OWASP AntiSamy / OWASP Java HTML Sanitizer… Ej: AntiSamy as = new AntiSamy(); CleanResults cr = as.scan(dirtyInput, new File(policyFilePath));  X-XSS-Protection: Fuerza la activación del filtro Anti-XSS del browser Ej: X-XSS-Protection: 1; mode=block X-Content-Type-Options: nosniff Previene ataques de MIME (contenido)  HTTPOnly: Flag opcional de la cookie que le indica al browser que la cookie no debe ser accedida por client-side scripts. Ej: Set-Cookie: path=/; Secure; HttpOnly Puede ser seteado en el código de la WebApp o agregado on the fly por un WAF
  • 26. Es una solución de seguridad (proxy) que analiza tráfico (entrante y saliente) a nivel de capa 7 con el fin de detectar y bloquear/alertar ataques web (SQLi, XSS, DDoS, …) Anti-XSS: Server-Side (WAF) Características típicas:  Detección de ataques basado en Firmas (texto o regex)  Uso de “listas negras” (IP, Browser, etc.)  Importación de salidas de DAST Scanners para aplicar“Virtual Patching”  Aplicación de protecciones en la respuestas HTTP (Ej: Httponly)
  • 27. Anti-XSS: Client-Side  Protecciones de XSS en Browsers  Browser Anti-XSS Filters: Son filtros integrados nativamente en los browsers. Si detectan una “condición peligrosa” reescriben el código para hacerlo inocuo  Compatibilidad con protecciones de XSS indicadas por el webserver: • Httponly • X-XSS-Protection • X-Content-Type-Options: nosniff  Content Security Policy: Crea “Listas blancas” de origen de recursos client- side. Más info en: http://content-security-policy.com/ Ej: Content-Security-Policy: default-src 'self'; Extensiones Anti XSS complementarias Filtran inyecciones de HTML o JavaScript basándose en la detección de “caracteres peligrosos” Soporte de “X-Content-Type-Options: nosniff” para Firefox
  • 28.
  • 29. Técnicas para saltear protecciones  Url Encoding: http://meyerweb.com/eric/tools/dencoder/ %3Cscript%3Ealert(1)%3C%2Fscript%3E  Double Encoding: [(ASCII -> Hexa) + Url Encoding]-> Hexa + Url Encoding  Mixed Encoding: Double URL Encoding + HTML Encoding + Unicode Encoding <img/src="x"/onerror="promt(‘XSS’);"> %3Cimg%2Fsrc%3D%22x%22%2Fonerror%3D%22prom%5Cu0070t%2526%2523x28%3B%2526%25 23x27%3B%2526%2523x58%3B%2526%2523x53%3B%2526%2523x53%3B%2526%2523x27%3B%25 26%2523x29%3B%22%3E  JS-FUCK Encoding: Encoding de JavaScript usando solo estos 6 caracteres: ! ( ) + [ ] http://jscrew.it/ %253Cscript%253Ealert(1)%253C%252Fscript%253E http://www.asciitohex.com/ Desmitificación 3: El filtrado Anti-XSS es infalible
  • 30. Técnicas para saltear protecciones  Url Encoding: http://meyerweb.com/eric/tools/dencoder/ %3Cscript%3Ealert(1)%3C%2Fscript%3E  Double Encoding: [(ASCII -> Hexa) + Url Encoding]-> Hexa + Url Encoding  Mixed Encoding: Double URL Encoding + HTML Encoding + Unicode Encoding <img/src="x"/onerror="promt(‘XSS’);"> %3Cimg%2Fsrc%3D%22x%22%2Fonerror%3D%22prom%5Cu0070t%2526%2523x28%3B%2526%25 23x27%3B%2526%2523x58%3B%2526%2523x53%3B%2526%2523x53%3B%2526%2523x27%3B%25 26%2523x29%3B%22%3E  JS-FUCK Encoding: Encoding de JavaScript usando solo estos 6 caracteres: ! ( ) + [ ] http://jscrew.it/ %253Cscript%253Ealert(1)%253C%252Fscript%253E http://www.asciitohex.com/ JS-FUCK Encoding del XSS payload alert(1) Desmitificación 3: El filtrado Anti-XSS es infalible
  • 31. Técnicas para saltear protecciones  Url Encoding: http://meyerweb.com/eric/tools/dencoder/ %3Cscript%3Ealert(1)%3C%2Fscript%3E  Double Encoding: [(ASCII -> Hexa) + Url Encoding]-> Hexa + Url Encoding  Mixed Encoding: Double URL Encoding + HTML Encoding + Unicode Encoding <img/src="x"/onerror="promt(‘XSS’);"> %3Cimg%2Fsrc%3D%22x%22%2Fonerror%3D%22prom%5Cu0070t%2526%2523x28%3B%2526%25 23x27%3B%2526%2523x58%3B%2526%2523x53%3B%2526%2523x53%3B%2526%2523x27%3B%25 26%2523x29%3B%22%3E  JS-FUCK Encoding: Encoding de JavaScript usando solo estos 6 caracteres: ! ( ) + [ ] http://jscrew.it/ %253Cscript%253Ealert(1)%253C%252Fscript%253E http://www.asciitohex.com/ JS-FUCK Encoding del XSS payload alert(1) Tamaño del payload Ideal para inyectarlo usando POST, ya que la mayoría de los webservers limitan el tamaño de los GET Desmitificación 3: El filtrado Anti-XSS es infalible
  • 32. Técnicas para saltear protecciones (cont.)  Bypassing de filtrados de caracteres “lalala " onmouseover="alert(1); ' onmouseover='alert(1); ''onerror=alert(1)  Ataque de URL Context javascript:alert(1) JaVaScRiPt:confirm%28location%29  Regular expression Denial of Service (ReDoS) https://www.checkmarx.com/wp-content/uploads/2015/03/ReDoS-Attacks.pdf * Regex: ^([a-z0-9]+([-a-z0-9]*[a-z0-9]+)?.){0,}([a-z0-9]+([-a-z0-9]*[a-z0- 9]+)?){1,63}(.[a- z0-9]{2,7})+$ * Payload: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!  Bypass HTTPOnly Apache <v2.2.1 divulga el contenido de la cookie en la página default de error código 400 http://www.securityfocus.com/bid/51706 Desmitificación 3: El filtrado Anti-XSS es infalible
  • 33. Técnicas para saltear protecciones (cont.)  mXSS https://cure53.de/fp170.pdf Inyectamos: <p style="font-family:'223bx:expression(alert(1))/*'"> Después del Anti XSS Filter se ejecutará: <P style="FONT-FAMILY: ; x:expression(alert(1))"></P>  Bypassing de Filtros Anti XSS de Internet Explorer https://www.whitehatsec.com/blog/internet-explorer-xss-filter/  Bypassing de Filtros Anti XSS de Chrome https://packetstormsecurity.com/files/132431/Google-Chrome-43.0.2357.124-XSS-Filter-Bypass.html http://blog.elevenpaths.com/2014/01/how-to-bypass-antixss-filter-in-chrome.html  Bypassing de Extensión “NoScript” (Firefox) http://labs.detectify.com/2015/06/30/using-google-cloud-to-bypass-noscript/ El payload debe ser subido a un sitio que este en la “white list” de NoScript  Recopilación de técnicas de evasión de OWASP https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet Desmitificación 3: El filtrado Anti-XSS es infalible
  • 34.
  • 35. Detección típica de XSS Manual Auto www.xss-payloads.com http://pastebin.com/u6FY1xDA
  • 36. OWASP Xenotix Advanced XSS Detection & Explotation Framework No tiene falsos-positivos en los resultados Renderiza la respuesta del webserver usando 3 engines (Trident/Webkit/Gecko) +4800 Payloads (bypassean WAF y Filtrado de caracteres) Incluye varios módulos de explotación / post-explotación y encoders 3 tipos de Fuzzers Ajin Abraham: https://www.owasp.org/index.php/OWASP_Xenotix_XSS_Exploit_Framework
  • 37.
  • 38.