SlideShare una empresa de Scribd logo
1 de 33
Descargar para leer sin conexión
Los 10 principales
riesgos en aplicaciones
web
(OWASP Top 10 2013)
@SuperSerch
OWASP Top Ten 2013 Edition
A1: Inyección
A2: Fallos de
Autenticación y
manejo de
sessiones
A3: Cross-Site
Scripting (XSS)
A4: Referencias
inseguras a
objetos directos
A5: Mala
configuración
de la seguridad
A6: Exposición
de datos
sensibles
A7:  Falta de
controles de
acceso por
función
A8: Cross Site
Request
Forgery (CSRF)
A9: Usar
componentes
con
vulnerabilidades
conocidas
A10:
Redirecciones
sin validación
OWASP Top Ten 2013 Edition
A1: Inyección
A2: Fallos de
Autenticación y
manejo de
sessiones
A3: Cross-Site
Scripting (XSS)
A4: Referencias
inseguras a
objetos directos
A5: Mala
configuración
de la seguridad
A6: Exposición
de datos
sensibles
A7:  Falta de
controles de
acceso por
función
A8: Cross Site
Request
Forgery
(CSRF)
A9: Usar
componentes
con
vulnerabilidades
conocidas
A10:
Redirecciones
sin validación
A1: Inyección
• Una falla de inyección ocurre cuando se envían
datos no confiables a un interprete como parte
de una instrucción o una consulta.
• Los datos no confiables del atacante pueden
engañar al interprete para ejecutar instrucciones
no esperadas o entregar información no
autorizada.
A1: Inyección
query="SELECT * FROM users WHERE username = '"
+ req.query.username + "' AND password = '"
+ req.query.password + "'"
//…
connection.query(query, function (error,
results, fields) {
//…
}
A1: Inyección
query="SELECT * FROM users WHERE username = '"
+ req.query.username + "' AND password = '"
+ req.query.password + "'"
//…
connection.query(query, function (error,
results, fields) {
//…
}
A1: Inyección
query="SELECT * FROM users WHERE username = '"
+ req.query.username + "' AND password = '"
+ req.query.password + "'"
//…
connection.query(query, function (error,
results, fields) {
//…
}
admin' or 1=1--
A1: Inyección
query="SELECT * FROM users WHERE username = '"
+ req.query.username + "' AND password = '"
+ req.query.password + "'"
//…
connection.query(query, function (error,
results, fields) {
//…
}
A1: Inyección
Mitigación en SQL
• No mezclar datos provenientes del usuario en la
construcción de queries
• Utilizar queries parametrizados
• Sanitizar y parsear los datos antes de
mezclarlos
A1: Inyección
query="SELECT * FROM users WHERE username = ?
AND password = ?"
//…
connection.query(query,
[req.query.username, req.query.password],
function (error, results, fields) {
//…
}
A1: Inyección
app.post('/login', function (req, res) {
db.users.find({username: req.body.username,
password: req.body.password},
function (err, users) {
//…
})
})
A1: Inyección
app.post('/login', function (req, res) {
db.users.find({username: req.body.username,
password: req.body.password},
function (err, users) {
//…
})
})
A1: Inyección
app.post('/login', function (req, res) {
db.users.find({username: req.body.username,
password: req.body.password},
function (err, users) {
//…
})
})
{
"username": {"$gt": ""},
"password": {"$gt": ""}
}
A1: Inyección
Mitigación en MongoDB
• No mezclar datos provenientes del usuario en la
construcción de queries
• Sanitizar y parsear los datos antes de mezclarlos
• Validar los datos contra valores esperados
• Usar cuentas con mínimos privilegios según la
acción a realizar
A1: Inyección
• eval()
• setTimeout()
• setInterval()
• new Function()
A1: Inyección
• eval("…….")
• setTimeout("…….", x)
• setInterval("…….", x)
• new Function("…….")
A1: Inyección
• while(1){}
• process.exit()
• process.kill(process.pid)
A1: Inyección
• res.end(require('fs').

readdirSync('.').toString())
• res.end(require('fs').

readdirSync('..').toString())
• res.end(require('fs').

readFileSync(filename))
A1: Inyección
Mitigación en javascript
• Validar los datos antes de procesarlos en el servidor
• No usar eval() para parsear los datos
• Evitar usar las eval, setTimeout, setInterval y Function
• Para parsear usar JSON.parse()
• Usar "use strict" al inicio de la función para limitar lo
que puede hacer
A3: Cross-Site Scripting
(XSS)
• Ocurre cuando una aplicación toma datos de un
usuario y los manda a un navegador sin una
adecuada validación o escape.
• Permite que un atacante utilice nuestro sitio
para ejecutar código en el navegador de la
víctima.
• Existe en dos modalidades: Reflejado y
Almacenado
A3: Cross-Site Scripting
(XSS)
app.post('/', function( req, res) {
res.end("hola " + req.body.nombre)
})
A3: Cross-Site Scripting
(XSS)
app.post('/', function( req, res) {
res.end("hola " + req.body.nombre)
})
<script>alert('Hola')</script>
A3: Cross-Site Scripting (XSS)

áreas a vigilar
Código HTML <span>DATOS<span>
Atributos HTML
<input type="text" name="pnombre"
value="DATOS">
URIs
<a href="/site/search?value="DATOS" 

>Más Info</a>
JavaScript
<script> var currentValue='DATOS' </script>
<script> algunaFuncion('DATOS')</script>
CSS <div style="width:DATOS;">encabezado</div>
A3: Cross-Site Scripting (XSS)

Mitigación
• Sanitizar y Validar los datos
• Codificar la salida de forma adecuada
• Usar la opción HTTPOnly para las cookies
• Aplicar estas reglas tanto en el cliente como en
el server
A3: Cross-Site Scripting (XSS)

Mitigación
Código HTML
convertir & en &amp; < en &lt; > en &gt; " en
&quot; ' en &#27; y / en &#x2F;
Atributos HTML
Excepto para caracteres alfanuméricos convertir
todo a entidades HTML &#xHH; (HH valor hexadecimal)
URIs
Excepto para caracteres alfanuméricos convertir
todo a entidades HTML &#xHH; (HH valor hexadecimal)
JavaScript
Asegurar que todas las variables tienen " y todo
caracter ASCII abajo de 256 codificarlo como
unicode uXXXX (X -> entero) ó uxHH
CSS
Excepto para caracteres alfanuméricos convertir
todo caracter ASCII abajo de 256 en HH
A3: Cross-Site Scripting (XSS)

Mitigación en NodeJS
swig.init({
root: __dirname + "/app/views",
autoescape: true //valor por defecto
})
app.use(express.session({

secret: "s3creT0",
cookie: {
httpOnly: true,
secure: true
}
}))
A8: Cross Site Request
Forgery (CSRF)
• Consiste en forzar al navegador, autenticado, de
la víctima a enviar una petición HTTP falsificada,
dado que los valores de autenticación se
incluyen automáticamente a cada petición, la
aplicación atacada ve la petición como una
solicitud autentica
A8: Cross Site Request
Forgery (CSRF)
Sitio vulnerable a
CSRF
1. El usuario se firma a su aplicación
Sitio usado para
distribuir el
ataque
2. El usuario entra a un sitio trampa
3. En el código del sitio trampa
existe una llamada al sitio
vulnerable
4. El sitio vulnerable
recibe la petición y la
procesa como una
petición normal
A8: Cross Site Request
Forgery (CSRF)
Sitio vulnerable a
CSRF
1. El usuario se firma a su aplicación
Sitio usado para
distribuir el
ataque
2. El usuario entra a un sitio trampa
3. En el código del sitio trampa
existe una llamada al sitio
vulnerable
4. El sitio vulnerable
recibe la petición y la
procesa como una
petición normal
<img src=”https://
www.bancoenlinea/usuario/
transfiere?
ctaDestino=A113&cantidad=1000"
/>
A8: Cross Site Request Forgery (CSRF)

Mitigación
• Agregar un “secreto” (token) que no se envíe
automáticamente a todas las peticiones sensibles
• Los Tokens deben ser criptográficamente fuertes
o completamente aleatorios
• No permitas que los atacantes coloquen ataques
en tus sitios
• Codifica adecuadamente todo dato que recibas
de los usuarios
A8: Cross Site Request Forgery (CSRF)

Mitigación
app.use(express.csrf())
app.use(function(req, res.next) {
res.locals.csrftoken = res.csrfToken()
next()
})
<input type="hidden" name="_csrf" value="{{ csrftoken }}">
Referencias
• OWASP Top Ten

https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project
• OWASP NodeGoat

https://github.com/OWASP/NodeGoat
• Server-Side JavaScript Injection

https://media.blackhat.com/bh-us-11/Sullivan/BH_US_11_Sullivan_Server_Side_WP.pdf
• Node.js Security

https://www.owasp.org/images/3/31/Node.js_Security_Old_vulnerabilities_in_new_bottles_-
_Sven_Vetsch.pdf

Gracias!

Más contenido relacionado

Destacado

Sistemas de tipos: Lo bueno, lo malo y lo feo
Sistemas de tipos: Lo bueno, lo malo y lo feoSistemas de tipos: Lo bueno, lo malo y lo feo
Sistemas de tipos: Lo bueno, lo malo y lo feoEnrique Zamudio López
 
Diseño de compiladores: Un vistazo a Ceylon-JS
Diseño de compiladores: Un vistazo a Ceylon-JSDiseño de compiladores: Un vistazo a Ceylon-JS
Diseño de compiladores: Un vistazo a Ceylon-JSEnrique Zamudio López
 
Walking the Tightrope: Balancing Bias to Action and Planning
Walking the Tightrope: Balancing Bias to Action and PlanningWalking the Tightrope: Balancing Bias to Action and Planning
Walking the Tightrope: Balancing Bias to Action and PlanningDianne Marsh
 
How Netflix thinks of DevOps. Spoiler: we don’t.
How Netflix thinks of DevOps. Spoiler: we don’t.How Netflix thinks of DevOps. Spoiler: we don’t.
How Netflix thinks of DevOps. Spoiler: we don’t.Dianne Marsh
 
10 SQL Tricks that You Didn't Think Were Possible
10 SQL Tricks that You Didn't Think Were Possible10 SQL Tricks that You Didn't Think Were Possible
10 SQL Tricks that You Didn't Think Were PossibleLukas Eder
 
Social media for small NGOs
Social media for small NGOsSocial media for small NGOs
Social media for small NGOsAmy Coulterman
 
CCS - SANS 20 Critical Security Controls Asegure su empresa en 20 controles...
CCS - SANS 20 Critical Security Controls   Asegure su empresa en 20 controles...CCS - SANS 20 Critical Security Controls   Asegure su empresa en 20 controles...
CCS - SANS 20 Critical Security Controls Asegure su empresa en 20 controles...Javier Antunez / CISSP / LA27001 / IA9001
 
Trendspotting: How to Predict and Position Your AMC and Your Clients for Success
Trendspotting: How to Predict and Position Your AMC and Your Clients for SuccessTrendspotting: How to Predict and Position Your AMC and Your Clients for Success
Trendspotting: How to Predict and Position Your AMC and Your Clients for SuccessEpic | A Brand Voice Agency
 
CEHRS Exam Score.PDF
CEHRS Exam Score.PDFCEHRS Exam Score.PDF
CEHRS Exam Score.PDFBarbara Walt
 

Destacado (19)

PCJ Sesión 9: Threads
PCJ Sesión 9: ThreadsPCJ Sesión 9: Threads
PCJ Sesión 9: Threads
 
Introducción a jAlarms
Introducción a jAlarmsIntroducción a jAlarms
Introducción a jAlarms
 
Introducción a Ceylon
Introducción a CeylonIntroducción a Ceylon
Introducción a Ceylon
 
Sistemas de tipos: Lo bueno, lo malo y lo feo
Sistemas de tipos: Lo bueno, lo malo y lo feoSistemas de tipos: Lo bueno, lo malo y lo feo
Sistemas de tipos: Lo bueno, lo malo y lo feo
 
Diseño de compiladores: Un vistazo a Ceylon-JS
Diseño de compiladores: Un vistazo a Ceylon-JSDiseño de compiladores: Un vistazo a Ceylon-JS
Diseño de compiladores: Un vistazo a Ceylon-JS
 
Criptografía para simples mortales
Criptografía para simples mortalesCriptografía para simples mortales
Criptografía para simples mortales
 
Walking the Tightrope: Balancing Bias to Action and Planning
Walking the Tightrope: Balancing Bias to Action and PlanningWalking the Tightrope: Balancing Bias to Action and Planning
Walking the Tightrope: Balancing Bias to Action and Planning
 
How Netflix thinks of DevOps. Spoiler: we don’t.
How Netflix thinks of DevOps. Spoiler: we don’t.How Netflix thinks of DevOps. Spoiler: we don’t.
How Netflix thinks of DevOps. Spoiler: we don’t.
 
10 SQL Tricks that You Didn't Think Were Possible
10 SQL Tricks that You Didn't Think Were Possible10 SQL Tricks that You Didn't Think Were Possible
10 SQL Tricks that You Didn't Think Were Possible
 
Special Issue: Eco Sustainable Future From Now
Special Issue: Eco Sustainable Future From NowSpecial Issue: Eco Sustainable Future From Now
Special Issue: Eco Sustainable Future From Now
 
Social media: marketing is in dialogue
Social media: marketing is in dialogueSocial media: marketing is in dialogue
Social media: marketing is in dialogue
 
Social media for small NGOs
Social media for small NGOsSocial media for small NGOs
Social media for small NGOs
 
CCS - SANS 20 Critical Security Controls Asegure su empresa en 20 controles...
CCS - SANS 20 Critical Security Controls   Asegure su empresa en 20 controles...CCS - SANS 20 Critical Security Controls   Asegure su empresa en 20 controles...
CCS - SANS 20 Critical Security Controls Asegure su empresa en 20 controles...
 
9 Surprising Tips to Make Your AMC Stand Out
9 Surprising Tips to Make Your AMC Stand Out9 Surprising Tips to Make Your AMC Stand Out
9 Surprising Tips to Make Your AMC Stand Out
 
Trendspotting: How to Predict and Position Your AMC and Your Clients for Success
Trendspotting: How to Predict and Position Your AMC and Your Clients for SuccessTrendspotting: How to Predict and Position Your AMC and Your Clients for Success
Trendspotting: How to Predict and Position Your AMC and Your Clients for Success
 
CBCS Exam Score
CBCS Exam ScoreCBCS Exam Score
CBCS Exam Score
 
What’s Your Endgame?
What’s Your Endgame?What’s Your Endgame?
What’s Your Endgame?
 
CEHRS Exam Score.PDF
CEHRS Exam Score.PDFCEHRS Exam Score.PDF
CEHRS Exam Score.PDF
 
عباس 88
عباس 88عباس 88
عباس 88
 

Similar a Inyección, XSS, CSRF en ChelaJS

Informe De Laboratorio.pdf
Informe De Laboratorio.pdfInforme De Laboratorio.pdf
Informe De Laboratorio.pdfGerardoGil15
 
Taller cybersecurity 2016
Taller cybersecurity 2016Taller cybersecurity 2016
Taller cybersecurity 2016Gonzalo Vigo
 
I Meetup OWASP - Seguridad en NodeJS
I  Meetup OWASP - Seguridad en NodeJSI  Meetup OWASP - Seguridad en NodeJS
I Meetup OWASP - Seguridad en NodeJSRaúl Requero García
 
Atacando servicios web
Atacando servicios webAtacando servicios web
Atacando servicios weblimahack
 
Owasp top 10 2017
Owasp top 10 2017Owasp top 10 2017
Owasp top 10 2017yopablo
 
Seguridad en servidores WEB. Modulo mod_security
Seguridad en servidores WEB. Modulo mod_securitySeguridad en servidores WEB. Modulo mod_security
Seguridad en servidores WEB. Modulo mod_securityseguridadelinux
 
La Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidades
La Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidadesLa Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidades
La Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidadesNextel S.A.
 
La Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidades
La Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidadesLa Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidades
La Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidadesPablo Garaizar
 
IT Camps Apps Office 365 Valencia 2014
IT Camps Apps Office 365 Valencia 2014IT Camps Apps Office 365 Valencia 2014
IT Camps Apps Office 365 Valencia 2014Adrian Diaz Cervera
 
Seguridad en arquitecturas serverless y entornos cloud
Seguridad en arquitecturas serverless y entornos cloudSeguridad en arquitecturas serverless y entornos cloud
Seguridad en arquitecturas serverless y entornos cloudJose Manuel Ortega Candel
 
XSS to the MAX - Juan Manuel Garcia (OWASP LATAM TOUR 2016)
XSS to the MAX - Juan Manuel Garcia (OWASP LATAM TOUR 2016)XSS to the MAX - Juan Manuel Garcia (OWASP LATAM TOUR 2016)
XSS to the MAX - Juan Manuel Garcia (OWASP LATAM TOUR 2016)kernelinux
 
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
 

Similar a Inyección, XSS, CSRF en ChelaJS (20)

Informe De Laboratorio.pdf
Informe De Laboratorio.pdfInforme De Laboratorio.pdf
Informe De Laboratorio.pdf
 
Taller cybersecurity 2016
Taller cybersecurity 2016Taller cybersecurity 2016
Taller cybersecurity 2016
 
Web app attacks
Web app attacksWeb app attacks
Web app attacks
 
Hacking Web: Attacks & Tips
Hacking Web: Attacks & TipsHacking Web: Attacks & Tips
Hacking Web: Attacks & Tips
 
Construyendo APIs Seguras y Escalables
Construyendo APIs Seguras y Escalables Construyendo APIs Seguras y Escalables
Construyendo APIs Seguras y Escalables
 
I Meetup OWASP - Seguridad en NodeJS
I  Meetup OWASP - Seguridad en NodeJSI  Meetup OWASP - Seguridad en NodeJS
I Meetup OWASP - Seguridad en NodeJS
 
Atacando servicios web
Atacando servicios webAtacando servicios web
Atacando servicios web
 
Owasp top 10 2017
Owasp top 10 2017Owasp top 10 2017
Owasp top 10 2017
 
WebAttack - Presentación
WebAttack - PresentaciónWebAttack - Presentación
WebAttack - Presentación
 
Seguridad WEB - Principios básicos.
Seguridad WEB - Principios básicos.Seguridad WEB - Principios básicos.
Seguridad WEB - Principios básicos.
 
Seguridad Web XSS y BeEF
Seguridad Web XSS y BeEFSeguridad Web XSS y BeEF
Seguridad Web XSS y BeEF
 
Seguridad en servidores WEB. Modulo mod_security
Seguridad en servidores WEB. Modulo mod_securitySeguridad en servidores WEB. Modulo mod_security
Seguridad en servidores WEB. Modulo mod_security
 
La Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidades
La Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidadesLa Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidades
La Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidades
 
La Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidades
La Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidadesLa Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidades
La Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidades
 
IT Camps Apps Office 365 Valencia 2014
IT Camps Apps Office 365 Valencia 2014IT Camps Apps Office 365 Valencia 2014
IT Camps Apps Office 365 Valencia 2014
 
Seguridad en arquitecturas serverless y entornos cloud
Seguridad en arquitecturas serverless y entornos cloudSeguridad en arquitecturas serverless y entornos cloud
Seguridad en arquitecturas serverless y entornos cloud
 
Owasp Top10 Spanish
Owasp Top10 SpanishOwasp Top10 Spanish
Owasp Top10 Spanish
 
Sql Injection
Sql InjectionSql Injection
Sql Injection
 
XSS to the MAX - Juan Manuel Garcia (OWASP LATAM TOUR 2016)
XSS to the MAX - Juan Manuel Garcia (OWASP LATAM TOUR 2016)XSS to the MAX - Juan Manuel Garcia (OWASP LATAM TOUR 2016)
XSS to the MAX - Juan Manuel Garcia (OWASP LATAM TOUR 2016)
 
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
 

Último

Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 

Último (11)

Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 

Inyección, XSS, CSRF en ChelaJS

  • 1. Los 10 principales riesgos en aplicaciones web (OWASP Top 10 2013) @SuperSerch
  • 2. OWASP Top Ten 2013 Edition A1: Inyección A2: Fallos de Autenticación y manejo de sessiones A3: Cross-Site Scripting (XSS) A4: Referencias inseguras a objetos directos A5: Mala configuración de la seguridad A6: Exposición de datos sensibles A7:  Falta de controles de acceso por función A8: Cross Site Request Forgery (CSRF) A9: Usar componentes con vulnerabilidades conocidas A10: Redirecciones sin validación
  • 3. OWASP Top Ten 2013 Edition A1: Inyección A2: Fallos de Autenticación y manejo de sessiones A3: Cross-Site Scripting (XSS) A4: Referencias inseguras a objetos directos A5: Mala configuración de la seguridad A6: Exposición de datos sensibles A7:  Falta de controles de acceso por función A8: Cross Site Request Forgery (CSRF) A9: Usar componentes con vulnerabilidades conocidas A10: Redirecciones sin validación
  • 4. A1: Inyección • Una falla de inyección ocurre cuando se envían datos no confiables a un interprete como parte de una instrucción o una consulta. • Los datos no confiables del atacante pueden engañar al interprete para ejecutar instrucciones no esperadas o entregar información no autorizada.
  • 5. A1: Inyección query="SELECT * FROM users WHERE username = '" + req.query.username + "' AND password = '" + req.query.password + "'" //… connection.query(query, function (error, results, fields) { //… }
  • 6. A1: Inyección query="SELECT * FROM users WHERE username = '" + req.query.username + "' AND password = '" + req.query.password + "'" //… connection.query(query, function (error, results, fields) { //… }
  • 7. A1: Inyección query="SELECT * FROM users WHERE username = '" + req.query.username + "' AND password = '" + req.query.password + "'" //… connection.query(query, function (error, results, fields) { //… } admin' or 1=1--
  • 8. A1: Inyección query="SELECT * FROM users WHERE username = '" + req.query.username + "' AND password = '" + req.query.password + "'" //… connection.query(query, function (error, results, fields) { //… }
  • 9. A1: Inyección Mitigación en SQL • No mezclar datos provenientes del usuario en la construcción de queries • Utilizar queries parametrizados • Sanitizar y parsear los datos antes de mezclarlos
  • 10. A1: Inyección query="SELECT * FROM users WHERE username = ? AND password = ?" //… connection.query(query, [req.query.username, req.query.password], function (error, results, fields) { //… }
  • 11. A1: Inyección app.post('/login', function (req, res) { db.users.find({username: req.body.username, password: req.body.password}, function (err, users) { //… }) })
  • 12. A1: Inyección app.post('/login', function (req, res) { db.users.find({username: req.body.username, password: req.body.password}, function (err, users) { //… }) })
  • 13. A1: Inyección app.post('/login', function (req, res) { db.users.find({username: req.body.username, password: req.body.password}, function (err, users) { //… }) }) { "username": {"$gt": ""}, "password": {"$gt": ""} }
  • 14. A1: Inyección Mitigación en MongoDB • No mezclar datos provenientes del usuario en la construcción de queries • Sanitizar y parsear los datos antes de mezclarlos • Validar los datos contra valores esperados • Usar cuentas con mínimos privilegios según la acción a realizar
  • 15. A1: Inyección • eval() • setTimeout() • setInterval() • new Function()
  • 16. A1: Inyección • eval("…….") • setTimeout("…….", x) • setInterval("…….", x) • new Function("…….")
  • 17. A1: Inyección • while(1){} • process.exit() • process.kill(process.pid)
  • 18. A1: Inyección • res.end(require('fs').
 readdirSync('.').toString()) • res.end(require('fs').
 readdirSync('..').toString()) • res.end(require('fs').
 readFileSync(filename))
  • 19. A1: Inyección Mitigación en javascript • Validar los datos antes de procesarlos en el servidor • No usar eval() para parsear los datos • Evitar usar las eval, setTimeout, setInterval y Function • Para parsear usar JSON.parse() • Usar "use strict" al inicio de la función para limitar lo que puede hacer
  • 20. A3: Cross-Site Scripting (XSS) • Ocurre cuando una aplicación toma datos de un usuario y los manda a un navegador sin una adecuada validación o escape. • Permite que un atacante utilice nuestro sitio para ejecutar código en el navegador de la víctima. • Existe en dos modalidades: Reflejado y Almacenado
  • 21. A3: Cross-Site Scripting (XSS) app.post('/', function( req, res) { res.end("hola " + req.body.nombre) })
  • 22. A3: Cross-Site Scripting (XSS) app.post('/', function( req, res) { res.end("hola " + req.body.nombre) }) <script>alert('Hola')</script>
  • 23. A3: Cross-Site Scripting (XSS)
 áreas a vigilar Código HTML <span>DATOS<span> Atributos HTML <input type="text" name="pnombre" value="DATOS"> URIs <a href="/site/search?value="DATOS" 
 >Más Info</a> JavaScript <script> var currentValue='DATOS' </script> <script> algunaFuncion('DATOS')</script> CSS <div style="width:DATOS;">encabezado</div>
  • 24. A3: Cross-Site Scripting (XSS)
 Mitigación • Sanitizar y Validar los datos • Codificar la salida de forma adecuada • Usar la opción HTTPOnly para las cookies • Aplicar estas reglas tanto en el cliente como en el server
  • 25. A3: Cross-Site Scripting (XSS)
 Mitigación Código HTML convertir & en &amp; < en &lt; > en &gt; " en &quot; ' en &#27; y / en &#x2F; Atributos HTML Excepto para caracteres alfanuméricos convertir todo a entidades HTML &#xHH; (HH valor hexadecimal) URIs Excepto para caracteres alfanuméricos convertir todo a entidades HTML &#xHH; (HH valor hexadecimal) JavaScript Asegurar que todas las variables tienen " y todo caracter ASCII abajo de 256 codificarlo como unicode uXXXX (X -> entero) ó uxHH CSS Excepto para caracteres alfanuméricos convertir todo caracter ASCII abajo de 256 en HH
  • 26. A3: Cross-Site Scripting (XSS)
 Mitigación en NodeJS swig.init({ root: __dirname + "/app/views", autoescape: true //valor por defecto }) app.use(express.session({
 secret: "s3creT0", cookie: { httpOnly: true, secure: true } }))
  • 27. A8: Cross Site Request Forgery (CSRF) • Consiste en forzar al navegador, autenticado, de la víctima a enviar una petición HTTP falsificada, dado que los valores de autenticación se incluyen automáticamente a cada petición, la aplicación atacada ve la petición como una solicitud autentica
  • 28. A8: Cross Site Request Forgery (CSRF) Sitio vulnerable a CSRF 1. El usuario se firma a su aplicación Sitio usado para distribuir el ataque 2. El usuario entra a un sitio trampa 3. En el código del sitio trampa existe una llamada al sitio vulnerable 4. El sitio vulnerable recibe la petición y la procesa como una petición normal
  • 29. A8: Cross Site Request Forgery (CSRF) Sitio vulnerable a CSRF 1. El usuario se firma a su aplicación Sitio usado para distribuir el ataque 2. El usuario entra a un sitio trampa 3. En el código del sitio trampa existe una llamada al sitio vulnerable 4. El sitio vulnerable recibe la petición y la procesa como una petición normal <img src=”https:// www.bancoenlinea/usuario/ transfiere? ctaDestino=A113&cantidad=1000" />
  • 30. A8: Cross Site Request Forgery (CSRF)
 Mitigación • Agregar un “secreto” (token) que no se envíe automáticamente a todas las peticiones sensibles • Los Tokens deben ser criptográficamente fuertes o completamente aleatorios • No permitas que los atacantes coloquen ataques en tus sitios • Codifica adecuadamente todo dato que recibas de los usuarios
  • 31. A8: Cross Site Request Forgery (CSRF)
 Mitigación app.use(express.csrf()) app.use(function(req, res.next) { res.locals.csrftoken = res.csrfToken() next() }) <input type="hidden" name="_csrf" value="{{ csrftoken }}">
  • 32. Referencias • OWASP Top Ten
 https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project • OWASP NodeGoat
 https://github.com/OWASP/NodeGoat • Server-Side JavaScript Injection
 https://media.blackhat.com/bh-us-11/Sullivan/BH_US_11_Sullivan_Server_Side_WP.pdf • Node.js Security
 https://www.owasp.org/images/3/31/Node.js_Security_Old_vulnerabilities_in_new_bottles_- _Sven_Vetsch.pdf