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

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
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
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
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
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxRogerPrieto3
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 

Último (15)

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
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
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
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
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptx
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 

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