SlideShare una empresa de Scribd logo
1 de 19
Pentesting en
aplicaciones node.js
AS ALWAYS: FOR FUN AND PROFIT
DANIEL ECHEVERRI M.
Nickname: Adastra (@jdaanial)
Blog: thehackerway.com
Autor de varios libros de la editorial 0xWORD
Information Security Researcher.
THW Academy (academy.thehackerway.com)
THW (thehackerway.es)
¿WHOAMI?
Principales características de node.js
OpenSource, independiente de plataforma.
Desarrollado sobre CJR v8 (Chrome JavaScript Runtime).
Diseñado para ser rápido y escalable.
1
2
3
4
Rápida introducción a node.js
Liviano y eficiente.5
Permite la ejecución de Javascript en el backend.
Principales características de node.js
Módelo asíncrono basado en eventos y en la ejecución de
funciones de "callback".
Pensado para ejecutar operaciones en un "event-loop".
Enfoque "single-thread" para mejorar el desempeño y
escalabilidad de aplicaciones web.
6
7
8
9
Rápida introducción a node.js
No más “one thread per requests”. Un modelo
completamente distinto, enfocado al desarrollo de
aplicaciones escalables.
Principales características de node.js
Rápida introducción a node.js
"Event-loop model" vs "thread per requests".
Un modelo “Event-Loop” es ideal para aplicaciones en donde
la velocidad de respuesta de las peticiones es más importante
que las operaciones I/O. p.e: Un proxy inverso/transparente.
Un modelo “thread per requests” es más adecuado para
procesamientos intensivos con con un número bajo de
procesos concurrentes. p.e. Aplicaciones cuyas funciones
realizan múltiples operaciones de negocio, conexiones a
bases de datos u otros sistemas remotos.
Principales características de node.js
Rápida introducción a node.js
Componentes a desarrollar con node.js
Es necesario desarrollar el componente “servidor”,
típicamente utilizando el modulo “express” y además, la lógica
propiamente dicha de la aplicación.
Dado que todo se ejecuta desde un único hilo de ejecución, la
gestión inadecuada de excepciones puede interrupir por
completo el normal funcionamiento del servidor. Es
recomendable tener rutinas de chequeo que se encarguen de
verificar en todo momento, el correcto funcionamiento del
servidor y la disponibilidad del proceso en el sistema.
Las vulnerabilidades descritas en el OWASP-Top10
también aplican a las aplicaciones desarrolladas en
node.js, pero además también se pueden producir otras
vulnerabilidades relacionadas con el funcionamiento de
node.js y que hay que tener en cuenta.
Rápida introducción a node.js
Vulnerabilidades
especificas en Node.js
Vulnerabilidades especificas en Node.js
[-]   Global Namespace Pollution.
[-]   HTTP Parameter Pollution (HPP).
[-]   Uso inseguro de “eval” y otras variantes. (Command
Execution).
[-]   Entradas de usuario inseguras. (parámetros y cabeceras
HTTP).
[-]   Regex DoS.
Entre otras...
Global Namespace Pollution
[-]  Las variables que se declaran en el componente servidor
(normalmente usando “express”) tienen alcance global.
[-] Cuando en dichas variables se almacena información
sensible y/o crítica para el correcto funcionamiento del
sistema, se puede producir un problema de Global
NameSpace Pollution.
[-] Un atacante podría alterar o acceder a los valores de
dichas variables y tener cierto control y/o modificar el
comportamiento de la aplicación con otros usuarios del
sistema.
HTTP Parameter Pollution
[-]  Se producen ante la gestión inadecuada de parámetros
duplicados en las peticiones HTTP.
[-] En NodeJS, la duplicidad de los parámetros no es
gestionada de forma automática, siendo una tarea que se
delega al programador. Si no se gestionan correctamente
dichos parámetros, se pueden producir excepciones que
pueden desencadenar una condición de DoS o producir
comportamientos inesperados.
OS Commanding
[-]   Los parámetros de entrada suministrados por los usuarios
deben ser correctamente validados cuando partiendo de
ellos, se deben ejecutar comandos contra el sistema o
cualquier tipo de operación sensible.
[-]   El módulo “child_process” en nodejs es el encargado
permitir la ejecución de comandos sobre el servidor.
Todos los comandos ejecutados lo hacen con los privilegios
que tenga el usuario que ha iniciado el componente servidor
de node.js.
Vulnerabilidades de inyección
[-]   Tal como se indica en la guía de OWASP Top 10, las
vulnerabilidades de inyección son las más habituales en las
aplicaciones web.
[-]   Existen varios tipos de vulnerabilidades de inyección, tales
como: SQL Injection, NoSQL Injection, HTML Injection y XSS
Injection.
[-]    Dichas vulnerabilidades pueden afectar también a
cualquier aplicación desarrollada con node.js si no se aplican los
filtros y validaciones adecuadas sobre la aplicación web.
Directory transversal
[-]   Los módulo “fs” y “path” en nodejs permiten operar con el
sistema de ficheros del sistema.
[-]    El uso inadecuado de dichas funciones, junto a una
incorrecta o inexistente validación de datos de entrada, puede
representar una brecha de seguridad que le permitirá a un
atacante acceder a información sensible del sistema.
DoS por medio de expresiones regulares.
Regex DoS (ReDoS)
[-]   Vulnerabilidad que afecta muy especialmente a rutinas en
node.js debido a su modo de funcionamiento (event loop).
[-]   Las expresiones regulares aplicadas a las entradas
suministradas por los usuarios pueden desencadenar un
bloqueo del hilo de ejecución de node.js e interrumpir por
completo la actividad del servidor.
[-] Validar, validar, validar.
Serialización y transporte inseguro de
datos sensibles.
[-]   Uso de canales de transporte inseguro para el envío de
información con datos sensibles.
[-]   Uso inadecuado del módulo "node-serialize" a la hora de
deserializar objetos provenientes de fuentes desconocidas y/o
poco fiables.
Ejecución remota de código (RCE)
[-]  En la medida de lo posible, no utilizar la función “eval” o
instrucciones similares.
        setInterval(código, 1)
        setTimeout(código, 1)
        new Function(código)
        eval(código) Donde “código” puede ser:
                  while(1); process.exit(); process.kill(process.pid);
[-] Validar absolutamente todos los parámetros
suministrados por parte del cliente y aplicar los filtros que
sean necesarios.
NodeGoat es una aplicación vulnerable por diseño,
desarrollada con node.js y disponible al público con el
fin de probar las principales vulnerabilidades que
afectan a las aplicaciones desarrolladas con node.js
NodeGoat by OWASP
NodeGoat by OWASP
Herramientas para la detección de
vulnerabilidades en node.js
[-]  Retire.js: es una librería enfocada al descubrimiento de
componentes desactualizados y con vulnerabilidades
conocidas en aplicaciones con NodeJS, BackboneJS, Dojo,
AngularJS, entre otros.
[-]   NPM: Herramienta que permite detectar el uso de
módulos desactualizados y con vulnerabilidades conocidas.
Utiliza Node Security Platform para realizar todas las
comprobaciones.   npm --check
[-] NodeJSScan: Herramienta para el análisis estático de
código, búsqueda y descubrimiento de vulnerabilidades.
CONTACTO.
TWITTER.
SITIO WEB.
@ThwAcademy
@jdaanial
thehackerway.es
thehackerway.com
academy.thehackerway.com
EMAIL
adastra@thehackerway.com

Más contenido relacionado

La actualidad más candente

Introducción a NodeJS
Introducción a NodeJSIntroducción a NodeJS
Introducción a NodeJSBEEVA_es
 
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
 
Microservicios sobre MEAN Stack
Microservicios sobre MEAN StackMicroservicios sobre MEAN Stack
Microservicios sobre MEAN StackPedro J. Molina
 
Node JS (Francisco Cerdas)
Node JS (Francisco Cerdas)Node JS (Francisco Cerdas)
Node JS (Francisco Cerdas)PiXeL16
 
Nodejs.introduccion
Nodejs.introduccionNodejs.introduccion
Nodejs.introduccionkillfill
 
¡Introducción a Cypress! - Globant Tech Insiders: Automatización de Pruebas
¡Introducción a Cypress! - Globant Tech Insiders: Automatización de Pruebas¡Introducción a Cypress! - Globant Tech Insiders: Automatización de Pruebas
¡Introducción a Cypress! - Globant Tech Insiders: Automatización de PruebasGlobant
 

La actualidad más candente (12)

Introducción a NodeJS
Introducción a NodeJSIntroducción a NodeJS
Introducción a NodeJS
 
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
 
ESAPI
ESAPIESAPI
ESAPI
 
Spring framework
Spring frameworkSpring framework
Spring framework
 
Microservicios sobre MEAN Stack
Microservicios sobre MEAN StackMicroservicios sobre MEAN Stack
Microservicios sobre MEAN Stack
 
Spring Mvc Final
Spring Mvc FinalSpring Mvc Final
Spring Mvc Final
 
Node JS (Francisco Cerdas)
Node JS (Francisco Cerdas)Node JS (Francisco Cerdas)
Node JS (Francisco Cerdas)
 
Nodejs.introduccion
Nodejs.introduccionNodejs.introduccion
Nodejs.introduccion
 
Instalación de Roller sobre Glassfish3
Instalación de Roller sobre Glassfish3Instalación de Roller sobre Glassfish3
Instalación de Roller sobre Glassfish3
 
¡Introducción a Cypress! - Globant Tech Insiders: Automatización de Pruebas
¡Introducción a Cypress! - Globant Tech Insiders: Automatización de Pruebas¡Introducción a Cypress! - Globant Tech Insiders: Automatización de Pruebas
¡Introducción a Cypress! - Globant Tech Insiders: Automatización de Pruebas
 
CodeCamp 2010 | Hyper-V en Windows Server 2008 R2 e interoperabilidad con Linux
CodeCamp 2010 | Hyper-V en Windows  Server 2008 R2 e interoperabilidad con LinuxCodeCamp 2010 | Hyper-V en Windows  Server 2008 R2 e interoperabilidad con Linux
CodeCamp 2010 | Hyper-V en Windows Server 2008 R2 e interoperabilidad con Linux
 
Spring Security
Spring SecuritySpring Security
Spring Security
 

Similar a Codemotion 2017: Pentesting en aplicaciones node.js AS ALWAYS: FOR FUN AND PROFIT

Guia de estudio para Oracle Certified Java EE 6 Web Component Developer
Guia de estudio para Oracle Certified Java EE 6 Web Component DeveloperGuia de estudio para Oracle Certified Java EE 6 Web Component Developer
Guia de estudio para Oracle Certified Java EE 6 Web Component DeveloperOscar V
 
Remote System Controller with Android technologies
Remote System Controller with Android technologiesRemote System Controller with Android technologies
Remote System Controller with Android technologiesMiguel Garcia Ponce
 
Seminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring InsightSeminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring InsightParadigma Digital
 
Node.js - un poco de informacion.
Node.js - un poco de informacion.Node.js - un poco de informacion.
Node.js - un poco de informacion.Luis Toscano
 
Desarrollo de aplicaciones multiplataforma 2/2
Desarrollo de aplicaciones multiplataforma 2/2Desarrollo de aplicaciones multiplataforma 2/2
Desarrollo de aplicaciones multiplataforma 2/2Ignacio Muñoz Vicente
 
Bases de Datos Distribuidas con Sql Server 2012
Bases de Datos Distribuidas con Sql Server 2012Bases de Datos Distribuidas con Sql Server 2012
Bases de Datos Distribuidas con Sql Server 2012Antonio Ortiz
 
Plataforma de programación Java
Plataforma de programación JavaPlataforma de programación Java
Plataforma de programación JavaAntonio Contreras
 
24. Introducción a Node JS.pdf
24. Introducción a Node JS.pdf24. Introducción a Node JS.pdf
24. Introducción a Node JS.pdfmabytax
 
Meetup Integración Continua y Jenkins
Meetup Integración Continua y Jenkins Meetup Integración Continua y Jenkins
Meetup Integración Continua y Jenkins armolinamilla
 
Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Facescok12v
 
Arquitectura y diseño de aplicaciones Java EE
Arquitectura y diseño de aplicaciones Java EEArquitectura y diseño de aplicaciones Java EE
Arquitectura y diseño de aplicaciones Java EECarlos Gavidia-Calderon
 
003-Introduccion-Angular.pdf
003-Introduccion-Angular.pdf003-Introduccion-Angular.pdf
003-Introduccion-Angular.pdfDubiWeb.TK
 

Similar a Codemotion 2017: Pentesting en aplicaciones node.js AS ALWAYS: FOR FUN AND PROFIT (20)

Sercicios web
Sercicios webSercicios web
Sercicios web
 
Aspectos nodejs
Aspectos nodejsAspectos nodejs
Aspectos nodejs
 
Guia de estudio para Oracle Certified Java EE 6 Web Component Developer
Guia de estudio para Oracle Certified Java EE 6 Web Component DeveloperGuia de estudio para Oracle Certified Java EE 6 Web Component Developer
Guia de estudio para Oracle Certified Java EE 6 Web Component Developer
 
Presentacion node
Presentacion nodePresentacion node
Presentacion node
 
Remote System Controller with Android technologies
Remote System Controller with Android technologiesRemote System Controller with Android technologies
Remote System Controller with Android technologies
 
20001215 Programación de Servlets y WML
20001215   Programación de Servlets y WML20001215   Programación de Servlets y WML
20001215 Programación de Servlets y WML
 
spring
springspring
spring
 
Seminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring InsightSeminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring Insight
 
Node.js - un poco de informacion.
Node.js - un poco de informacion.Node.js - un poco de informacion.
Node.js - un poco de informacion.
 
Desarrollo de aplicaciones multiplataforma 2/2
Desarrollo de aplicaciones multiplataforma 2/2Desarrollo de aplicaciones multiplataforma 2/2
Desarrollo de aplicaciones multiplataforma 2/2
 
Dprn3 u3 a1_guph
Dprn3 u3 a1_guphDprn3 u3 a1_guph
Dprn3 u3 a1_guph
 
El Universo Java (2007)
El Universo Java (2007)El Universo Java (2007)
El Universo Java (2007)
 
Curso introductorio a Raptor.js con Node.js
Curso introductorio a Raptor.js con Node.jsCurso introductorio a Raptor.js con Node.js
Curso introductorio a Raptor.js con Node.js
 
Bases de Datos Distribuidas con Sql Server 2012
Bases de Datos Distribuidas con Sql Server 2012Bases de Datos Distribuidas con Sql Server 2012
Bases de Datos Distribuidas con Sql Server 2012
 
Plataforma de programación Java
Plataforma de programación JavaPlataforma de programación Java
Plataforma de programación Java
 
24. Introducción a Node JS.pdf
24. Introducción a Node JS.pdf24. Introducción a Node JS.pdf
24. Introducción a Node JS.pdf
 
Meetup Integración Continua y Jenkins
Meetup Integración Continua y Jenkins Meetup Integración Continua y Jenkins
Meetup Integración Continua y Jenkins
 
Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Faces
 
Arquitectura y diseño de aplicaciones Java EE
Arquitectura y diseño de aplicaciones Java EEArquitectura y diseño de aplicaciones Java EE
Arquitectura y diseño de aplicaciones Java EE
 
003-Introduccion-Angular.pdf
003-Introduccion-Angular.pdf003-Introduccion-Angular.pdf
003-Introduccion-Angular.pdf
 

Más de Dani Adastra

IntelCon 2020: Uso avanzado de ZAP para hacking en aplicaciones web
IntelCon 2020: Uso avanzado de ZAP para hacking en aplicaciones webIntelCon 2020: Uso avanzado de ZAP para hacking en aplicaciones web
IntelCon 2020: Uso avanzado de ZAP para hacking en aplicaciones webDani Adastra
 
ShellCon 2018: Hacking con Python
ShellCon 2018: Hacking con PythonShellCon 2018: Hacking con Python
ShellCon 2018: Hacking con PythonDani Adastra
 
Malt 2020: Ciberseguridad en la empresa
Malt 2020: Ciberseguridad en la empresaMalt 2020: Ciberseguridad en la empresa
Malt 2020: Ciberseguridad en la empresaDani Adastra
 
IntelCon 2020: OSINT en la Deep web de TOR
IntelCon 2020: OSINT en la Deep web de TORIntelCon 2020: OSINT en la Deep web de TOR
IntelCon 2020: OSINT en la Deep web de TORDani Adastra
 
HoneyCon 2020: Hacking con ZAP
HoneyCon 2020: Hacking con ZAPHoneyCon 2020: Hacking con ZAP
HoneyCon 2020: Hacking con ZAPDani Adastra
 
HackMadrid 2020: Introducción práctica al RedTeam
HackMadrid 2020: Introducción práctica al RedTeamHackMadrid 2020: Introducción práctica al RedTeam
HackMadrid 2020: Introducción práctica al RedTeamDani Adastra
 
XIV Jornadas CCN Cert: Covert Channels en operaciones de Red Team
XIV Jornadas CCN Cert: Covert Channels en operaciones de Red TeamXIV Jornadas CCN Cert: Covert Channels en operaciones de Red Team
XIV Jornadas CCN Cert: Covert Channels en operaciones de Red TeamDani Adastra
 
8dot8 SUR 2020: Introducción práctica al RedTeam
8dot8 SUR 2020: Introducción práctica al RedTeam8dot8 SUR 2020: Introducción práctica al RedTeam
8dot8 SUR 2020: Introducción práctica al RedTeamDani Adastra
 
SecAdmin 2019: ZAP Proxy: Mucho más que una herramienta de "one-click hack"
SecAdmin 2019: ZAP Proxy: Mucho más que una herramienta de "one-click hack"SecAdmin 2019: ZAP Proxy: Mucho más que una herramienta de "one-click hack"
SecAdmin 2019: ZAP Proxy: Mucho más que una herramienta de "one-click hack"Dani Adastra
 
Morteruelo 2019: Seguridad informática en 50 días YOUR hacker way..
Morteruelo 2019: Seguridad informática en 50 días YOUR hacker way..Morteruelo 2019: Seguridad informática en 50 días YOUR hacker way..
Morteruelo 2019: Seguridad informática en 50 días YOUR hacker way..Dani Adastra
 
HackRon 2019: Python + TOR: Descubrir, analizar y extraer información de serv...
HackRon 2019: Python + TOR: Descubrir, analizar y extraer información de serv...HackRon 2019: Python + TOR: Descubrir, analizar y extraer información de serv...
HackRon 2019: Python + TOR: Descubrir, analizar y extraer información de serv...Dani Adastra
 
H-Con 2018: Hacking con Python
H-Con 2018: Hacking con PythonH-Con 2018: Hacking con Python
H-Con 2018: Hacking con PythonDani Adastra
 
UAH 2018: Hacking en la deep web de TOR (for fun and profit)
UAH 2018: Hacking en la deep web de TOR (for fun and profit)UAH 2018: Hacking en la deep web de TOR (for fun and profit)
UAH 2018: Hacking en la deep web de TOR (for fun and profit)Dani Adastra
 
SecAdmin 2017: Hacking con Python
SecAdmin 2017: Hacking con PythonSecAdmin 2017: Hacking con Python
SecAdmin 2017: Hacking con PythonDani Adastra
 
DragonJar 2015: Desmitificando la deep web de tor pentesting sobre instancias...
DragonJar 2015: Desmitificando la deep web de tor pentesting sobre instancias...DragonJar 2015: Desmitificando la deep web de tor pentesting sobre instancias...
DragonJar 2015: Desmitificando la deep web de tor pentesting sobre instancias...Dani Adastra
 
Cybercamp 2014: Tortazo: Desarrollo de un framework de auditoría para la red ...
Cybercamp 2014: Tortazo: Desarrollo de un framework de auditoría para la red ...Cybercamp 2014: Tortazo: Desarrollo de un framework de auditoría para la red ...
Cybercamp 2014: Tortazo: Desarrollo de un framework de auditoría para la red ...Dani Adastra
 
HoneyCon 2017: Pentesting sobre instancias de TOR con Tortazo y TortazoWeb.
HoneyCon 2017: Pentesting sobre instancias de TOR con Tortazo y TortazoWeb.HoneyCon 2017: Pentesting sobre instancias de TOR con Tortazo y TortazoWeb.
HoneyCon 2017: Pentesting sobre instancias de TOR con Tortazo y TortazoWeb.Dani Adastra
 
8dot8 2015: Desmitificando la deep web de TOR - pentesting sobre instancias d...
8dot8 2015: Desmitificando la deep web de TOR - pentesting sobre instancias d...8dot8 2015: Desmitificando la deep web de TOR - pentesting sobre instancias d...
8dot8 2015: Desmitificando la deep web de TOR - pentesting sobre instancias d...Dani Adastra
 
Cybercamp 2017: Hacking TOR & Freenet for fun, profit and stop the evil.
Cybercamp 2017: Hacking TOR & Freenet for fun, profit and stop the evil.Cybercamp 2017: Hacking TOR & Freenet for fun, profit and stop the evil.
Cybercamp 2017: Hacking TOR & Freenet for fun, profit and stop the evil.Dani Adastra
 

Más de Dani Adastra (19)

IntelCon 2020: Uso avanzado de ZAP para hacking en aplicaciones web
IntelCon 2020: Uso avanzado de ZAP para hacking en aplicaciones webIntelCon 2020: Uso avanzado de ZAP para hacking en aplicaciones web
IntelCon 2020: Uso avanzado de ZAP para hacking en aplicaciones web
 
ShellCon 2018: Hacking con Python
ShellCon 2018: Hacking con PythonShellCon 2018: Hacking con Python
ShellCon 2018: Hacking con Python
 
Malt 2020: Ciberseguridad en la empresa
Malt 2020: Ciberseguridad en la empresaMalt 2020: Ciberseguridad en la empresa
Malt 2020: Ciberseguridad en la empresa
 
IntelCon 2020: OSINT en la Deep web de TOR
IntelCon 2020: OSINT en la Deep web de TORIntelCon 2020: OSINT en la Deep web de TOR
IntelCon 2020: OSINT en la Deep web de TOR
 
HoneyCon 2020: Hacking con ZAP
HoneyCon 2020: Hacking con ZAPHoneyCon 2020: Hacking con ZAP
HoneyCon 2020: Hacking con ZAP
 
HackMadrid 2020: Introducción práctica al RedTeam
HackMadrid 2020: Introducción práctica al RedTeamHackMadrid 2020: Introducción práctica al RedTeam
HackMadrid 2020: Introducción práctica al RedTeam
 
XIV Jornadas CCN Cert: Covert Channels en operaciones de Red Team
XIV Jornadas CCN Cert: Covert Channels en operaciones de Red TeamXIV Jornadas CCN Cert: Covert Channels en operaciones de Red Team
XIV Jornadas CCN Cert: Covert Channels en operaciones de Red Team
 
8dot8 SUR 2020: Introducción práctica al RedTeam
8dot8 SUR 2020: Introducción práctica al RedTeam8dot8 SUR 2020: Introducción práctica al RedTeam
8dot8 SUR 2020: Introducción práctica al RedTeam
 
SecAdmin 2019: ZAP Proxy: Mucho más que una herramienta de "one-click hack"
SecAdmin 2019: ZAP Proxy: Mucho más que una herramienta de "one-click hack"SecAdmin 2019: ZAP Proxy: Mucho más que una herramienta de "one-click hack"
SecAdmin 2019: ZAP Proxy: Mucho más que una herramienta de "one-click hack"
 
Morteruelo 2019: Seguridad informática en 50 días YOUR hacker way..
Morteruelo 2019: Seguridad informática en 50 días YOUR hacker way..Morteruelo 2019: Seguridad informática en 50 días YOUR hacker way..
Morteruelo 2019: Seguridad informática en 50 días YOUR hacker way..
 
HackRon 2019: Python + TOR: Descubrir, analizar y extraer información de serv...
HackRon 2019: Python + TOR: Descubrir, analizar y extraer información de serv...HackRon 2019: Python + TOR: Descubrir, analizar y extraer información de serv...
HackRon 2019: Python + TOR: Descubrir, analizar y extraer información de serv...
 
H-Con 2018: Hacking con Python
H-Con 2018: Hacking con PythonH-Con 2018: Hacking con Python
H-Con 2018: Hacking con Python
 
UAH 2018: Hacking en la deep web de TOR (for fun and profit)
UAH 2018: Hacking en la deep web de TOR (for fun and profit)UAH 2018: Hacking en la deep web de TOR (for fun and profit)
UAH 2018: Hacking en la deep web de TOR (for fun and profit)
 
SecAdmin 2017: Hacking con Python
SecAdmin 2017: Hacking con PythonSecAdmin 2017: Hacking con Python
SecAdmin 2017: Hacking con Python
 
DragonJar 2015: Desmitificando la deep web de tor pentesting sobre instancias...
DragonJar 2015: Desmitificando la deep web de tor pentesting sobre instancias...DragonJar 2015: Desmitificando la deep web de tor pentesting sobre instancias...
DragonJar 2015: Desmitificando la deep web de tor pentesting sobre instancias...
 
Cybercamp 2014: Tortazo: Desarrollo de un framework de auditoría para la red ...
Cybercamp 2014: Tortazo: Desarrollo de un framework de auditoría para la red ...Cybercamp 2014: Tortazo: Desarrollo de un framework de auditoría para la red ...
Cybercamp 2014: Tortazo: Desarrollo de un framework de auditoría para la red ...
 
HoneyCon 2017: Pentesting sobre instancias de TOR con Tortazo y TortazoWeb.
HoneyCon 2017: Pentesting sobre instancias de TOR con Tortazo y TortazoWeb.HoneyCon 2017: Pentesting sobre instancias de TOR con Tortazo y TortazoWeb.
HoneyCon 2017: Pentesting sobre instancias de TOR con Tortazo y TortazoWeb.
 
8dot8 2015: Desmitificando la deep web de TOR - pentesting sobre instancias d...
8dot8 2015: Desmitificando la deep web de TOR - pentesting sobre instancias d...8dot8 2015: Desmitificando la deep web de TOR - pentesting sobre instancias d...
8dot8 2015: Desmitificando la deep web de TOR - pentesting sobre instancias d...
 
Cybercamp 2017: Hacking TOR & Freenet for fun, profit and stop the evil.
Cybercamp 2017: Hacking TOR & Freenet for fun, profit and stop the evil.Cybercamp 2017: Hacking TOR & Freenet for fun, profit and stop the evil.
Cybercamp 2017: Hacking TOR & Freenet for fun, profit and stop the evil.
 

Último

La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramDIDIERFERNANDOGUERRE
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 

Último (20)

La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ram
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 

Codemotion 2017: Pentesting en aplicaciones node.js AS ALWAYS: FOR FUN AND PROFIT

  • 1. Pentesting en aplicaciones node.js AS ALWAYS: FOR FUN AND PROFIT
  • 2. DANIEL ECHEVERRI M. Nickname: Adastra (@jdaanial) Blog: thehackerway.com Autor de varios libros de la editorial 0xWORD Information Security Researcher. THW Academy (academy.thehackerway.com) THW (thehackerway.es) ¿WHOAMI?
  • 3. Principales características de node.js OpenSource, independiente de plataforma. Desarrollado sobre CJR v8 (Chrome JavaScript Runtime). Diseñado para ser rápido y escalable. 1 2 3 4 Rápida introducción a node.js Liviano y eficiente.5 Permite la ejecución de Javascript en el backend.
  • 4. Principales características de node.js Módelo asíncrono basado en eventos y en la ejecución de funciones de "callback". Pensado para ejecutar operaciones en un "event-loop". Enfoque "single-thread" para mejorar el desempeño y escalabilidad de aplicaciones web. 6 7 8 9 Rápida introducción a node.js No más “one thread per requests”. Un modelo completamente distinto, enfocado al desarrollo de aplicaciones escalables.
  • 5. Principales características de node.js Rápida introducción a node.js "Event-loop model" vs "thread per requests". Un modelo “Event-Loop” es ideal para aplicaciones en donde la velocidad de respuesta de las peticiones es más importante que las operaciones I/O. p.e: Un proxy inverso/transparente. Un modelo “thread per requests” es más adecuado para procesamientos intensivos con con un número bajo de procesos concurrentes. p.e. Aplicaciones cuyas funciones realizan múltiples operaciones de negocio, conexiones a bases de datos u otros sistemas remotos.
  • 6. Principales características de node.js Rápida introducción a node.js Componentes a desarrollar con node.js Es necesario desarrollar el componente “servidor”, típicamente utilizando el modulo “express” y además, la lógica propiamente dicha de la aplicación. Dado que todo se ejecuta desde un único hilo de ejecución, la gestión inadecuada de excepciones puede interrupir por completo el normal funcionamiento del servidor. Es recomendable tener rutinas de chequeo que se encarguen de verificar en todo momento, el correcto funcionamiento del servidor y la disponibilidad del proceso en el sistema.
  • 7. Las vulnerabilidades descritas en el OWASP-Top10 también aplican a las aplicaciones desarrolladas en node.js, pero además también se pueden producir otras vulnerabilidades relacionadas con el funcionamiento de node.js y que hay que tener en cuenta. Rápida introducción a node.js
  • 8. Vulnerabilidades especificas en Node.js Vulnerabilidades especificas en Node.js [-]   Global Namespace Pollution. [-]   HTTP Parameter Pollution (HPP). [-]   Uso inseguro de “eval” y otras variantes. (Command Execution). [-]   Entradas de usuario inseguras. (parámetros y cabeceras HTTP). [-]   Regex DoS. Entre otras...
  • 9. Global Namespace Pollution [-]  Las variables que se declaran en el componente servidor (normalmente usando “express”) tienen alcance global. [-] Cuando en dichas variables se almacena información sensible y/o crítica para el correcto funcionamiento del sistema, se puede producir un problema de Global NameSpace Pollution. [-] Un atacante podría alterar o acceder a los valores de dichas variables y tener cierto control y/o modificar el comportamiento de la aplicación con otros usuarios del sistema.
  • 10. HTTP Parameter Pollution [-]  Se producen ante la gestión inadecuada de parámetros duplicados en las peticiones HTTP. [-] En NodeJS, la duplicidad de los parámetros no es gestionada de forma automática, siendo una tarea que se delega al programador. Si no se gestionan correctamente dichos parámetros, se pueden producir excepciones que pueden desencadenar una condición de DoS o producir comportamientos inesperados.
  • 11. OS Commanding [-]   Los parámetros de entrada suministrados por los usuarios deben ser correctamente validados cuando partiendo de ellos, se deben ejecutar comandos contra el sistema o cualquier tipo de operación sensible. [-]   El módulo “child_process” en nodejs es el encargado permitir la ejecución de comandos sobre el servidor. Todos los comandos ejecutados lo hacen con los privilegios que tenga el usuario que ha iniciado el componente servidor de node.js.
  • 12. Vulnerabilidades de inyección [-]   Tal como se indica en la guía de OWASP Top 10, las vulnerabilidades de inyección son las más habituales en las aplicaciones web. [-]   Existen varios tipos de vulnerabilidades de inyección, tales como: SQL Injection, NoSQL Injection, HTML Injection y XSS Injection. [-]    Dichas vulnerabilidades pueden afectar también a cualquier aplicación desarrollada con node.js si no se aplican los filtros y validaciones adecuadas sobre la aplicación web.
  • 13. Directory transversal [-]   Los módulo “fs” y “path” en nodejs permiten operar con el sistema de ficheros del sistema. [-]    El uso inadecuado de dichas funciones, junto a una incorrecta o inexistente validación de datos de entrada, puede representar una brecha de seguridad que le permitirá a un atacante acceder a información sensible del sistema.
  • 14. DoS por medio de expresiones regulares. Regex DoS (ReDoS) [-]   Vulnerabilidad que afecta muy especialmente a rutinas en node.js debido a su modo de funcionamiento (event loop). [-]   Las expresiones regulares aplicadas a las entradas suministradas por los usuarios pueden desencadenar un bloqueo del hilo de ejecución de node.js e interrumpir por completo la actividad del servidor. [-] Validar, validar, validar.
  • 15. Serialización y transporte inseguro de datos sensibles. [-]   Uso de canales de transporte inseguro para el envío de información con datos sensibles. [-]   Uso inadecuado del módulo "node-serialize" a la hora de deserializar objetos provenientes de fuentes desconocidas y/o poco fiables.
  • 16. Ejecución remota de código (RCE) [-]  En la medida de lo posible, no utilizar la función “eval” o instrucciones similares.         setInterval(código, 1)         setTimeout(código, 1)         new Function(código)         eval(código) Donde “código” puede ser:                   while(1); process.exit(); process.kill(process.pid); [-] Validar absolutamente todos los parámetros suministrados por parte del cliente y aplicar los filtros que sean necesarios.
  • 17. NodeGoat es una aplicación vulnerable por diseño, desarrollada con node.js y disponible al público con el fin de probar las principales vulnerabilidades que afectan a las aplicaciones desarrolladas con node.js NodeGoat by OWASP NodeGoat by OWASP
  • 18. Herramientas para la detección de vulnerabilidades en node.js [-]  Retire.js: es una librería enfocada al descubrimiento de componentes desactualizados y con vulnerabilidades conocidas en aplicaciones con NodeJS, BackboneJS, Dojo, AngularJS, entre otros. [-]   NPM: Herramienta que permite detectar el uso de módulos desactualizados y con vulnerabilidades conocidas. Utiliza Node Security Platform para realizar todas las comprobaciones.   npm --check [-] NodeJSScan: Herramienta para el análisis estático de código, búsqueda y descubrimiento de vulnerabilidades.