Este curso ofrece al alumnado una base técnica sólida y un recorrido profundo por las principales áreas del hacking web moderno. A lo largo de 51 horas de contenido, se abordan en profundidad un total de 31 vulnerabilidades, combinando teoría y práctica con 269 laboratorios reales y cuidadosamente seleccionados.
Gracias a este enfoque, los estudiantes adquirirán una comprensión estratégica y aplicada de la seguridad en aplicaciones web, desarrollando las habilidades necesarias para enfrentarse a escenarios reales y complejos.
No es un curso superficial: se abordan vulnerabilidades reales, técnicas de evasión, explotación avanzada y desarrollo de un pensamiento crítico en seguridad ofensiva.
🎯 ¿Qué conseguirás?
En este curso conseguirás:
Conocimientos aplicables a entornos reales, más allá del típico CTF.
Dominio de metodologías de pentesting web desde el reconocimiento hasta la explotación y la post-explotación.
Capacidad para entender y replicar vulnerabilidades modernas como SSRF, deserialización insegura, prototype pollution, race conditions, explotación en APIs, WAF bypass, así como técnicas avanzadas para vulnerar modelos de lenguaje (LLMs) y explotar sistemas basados en inteligencia artificial.
🏅 Preparación para certificaciones profesionales
Este curso sienta las bases necesarias y ofrece el conocimiento avanzado que te permitirá enfrentarte con confianza a certificaciones web reconocidas internacionalmente:
eWPT (Web Application Penetration Tester) – INE Security [Ver Certificación]
eWPTX (Extreme Web Application Penetration Tester) – INE Security [Ver Certificación]
BSCP (Burp Suite Certified Practitioner) – PortSwigger [Ver Certificación]
CWES (HTB Certified Web Exploitation Specialist) – HackTheBox [Ver Certificación]
Cada una de ellas requiere no solo técnica, sino comprensión profunda de vectores reales, algo que este curso entrena desde el primer módulo.
🚀 ¿Qué serás capaz de hacer al terminar el curso?
Al terminar serás capaz de:
Analizar en profundidad el funcionamiento de una amplia variedad de vulnerabilidades web.
Explotar fallos de seguridad utilizando técnicas modernas y herramientas profesionales.
Encadenar vulnerabilidades de forma lógica para maximizar su impacto.
Prepararte con confianza para certificaciones clave de hacking web como: eWPT, eWPTX, CBBH y BSCP.
✨ ¿A quién va dirigido?
A cualquier persona con conocimientos básicos en seguridad o desarrollo web que quiera llevar su nivel al siguiente escalón, con una mirada profesional y orientada a resultados. Tanto si tu objetivo es trabajar en pentesting como si aspiras a certificarte formalmente, este curso es el camino ideal.
🧠 ¿Necesito conocimientos previos?
Este curso está diseñado para llevarte a un nivel técnico alto, por lo que se recomienda haber completado previamente los siguientes cursos disponibles en esta misma academia:
Si ya has trabajado con estos contenidos, el aprovechamiento del curso será mucho más fluido y podrás centrarte de lleno en los aspectos avanzados del hacking web.
Aun así, cada concepto será explicado paso a paso, de forma clara y guiada, para que puedas avanzar aunque no recuerdes todos los detalles. Lo ideal es contar con una base previa, pero si tienes ganas y compromiso, este curso también te acompañará desde lo esencial hasta lo avanzado.
Contenido del curso
34 secciones · 339 clases · 51 horas duración total
¿Quieres comprobar si alguna temática en concreto se aborda en este curso?Busca por contenido en base a palabras clave.
Introducción al curso
1 clases
1Bienvenido/a al curso
8:21
Te damos la bienvenida al curso. Aquí descubrirás qué aprenderás, cómo está estructurado el contenido y cómo sacarle el máximo partido.
SQL Injection (SQLI)
24 clases
2Introducción a la Inyección SQL en cláusulas WHERE [1/2]
14:59
Aprende a explotar una inyección SQL básica manipulando un filtro de categoría para obtener productos no publicados. Primera toma de contacto con consultas en cláusulas WHERE.
3Introducción a la Inyección SQL en cláusulas WHERE [2/2]
10:01
Aprende a explotar una inyección SQL básica manipulando un filtro de categoría para obtener productos no publicados. Primera toma de contacto con consultas en cláusulas WHERE.
4Bypass de login mediante Inyección SQL
6:50
Aprende a acceder como administrador explotando una vulnerabilidad de inyección SQL en el login. Una técnica clásica para saltarse la autenticación.
5Identificación de versión y motor de base de datos (Oracle)
14:29
Aprende a identificar el motor de base de datos Oracle mediante una inyección SQL con UNION. Descubre cómo extraer información del sistema desde la consulta.
6Identificación de versión y motor de base de datos (MySQL y MSSQL)
14:41
Aprende a obtener la versión del motor de base de datos mediante un ataque SQL UNION sobre sistemas MySQL y Microsoft SQL Server.
7Enumeración de bases de datos en motores no Oracle
5:48
Aprende a enumerar el contenido de una base de datos mediante un ataque SQL UNION. Accede a tablas internas y extrae credenciales de usuarios.
8Enumeración de bases de datos en Oracle
4:53
Aprende a enumerar tablas y columnas en Oracle mediante SQL injection. Extrae credenciales de usuarios y accede como administrador
9Ataque UNION: descubriendo número de columnas
3:13
Aprende a identificar cuántas columnas devuelve una consulta para preparar un ataque UNION. Paso clave antes de extraer datos de otras tablas.
10Ataque UNION: encontrando columnas con texto
2:03
Descubre qué columnas aceptan texto al realizar un ataque UNION. Paso previo a mostrar información útil en pantalla durante una inyección SQL.
11Ataque UNION: extrayendo datos de otras tablas
3:23
Usa un ataque UNION completo para extraer datos reales desde otra tabla. Accede como administrador recuperando usuarios y contraseñas.
12Ataque UNION: múltiples valores en una sola columna
3:21
Aprende a extraer múltiples valores combinados dentro de una sola columna. Una técnica útil cuando solo una columna acepta texto.
13Inyección SQL ciega con respuestas condicionales [1/3]
14:52
Aprende a extraer información sin respuestas visibles, utilizando inyecciones SQL ciegas basadas en condiciones booleanas y análisis del comportamiento.
14Inyección SQL ciega con respuestas condicionales [2/3]
10:04
Seguimos con la inyección ciega, esta vez para descubrir la longitud exacta de la contraseña del administrador. Técnica fundamental para preparar la extracción carácter por carácter.
15Inyección SQL ciega con respuestas condicionales [3/3]Preview gratuito
8:25
Cerramos la explotación de la inyección ciega extrayendo el valor completo de la contraseña del administrador, carácter por carácter.
16Inyección SQL ciega con errores condicionales [1/2]
9:18
Explota una inyección SQL ciega que se basa en errores. Aprende a forzar fallos condicionales para extraer datos ocultos paso a paso.
17Inyección SQL ciega con errores condicionales [2/2]
8:35
Seguimos explotando la inyección SQL ciega basada en errores. Continuamos extrayendo paso a paso la contraseña del administrador.
18Inyección SQL basada en errores visibles
7:55
Exploramos cómo aprovechar errores visibles en consultas SQL para filtrar información sensible de la base de datos y obtener acceso a cuentas privilegiadas.
19Inyección SQL ciega mediante retrasos temporales
6:06
Aprendemos a explotar una inyección SQL ciega mediante retardos temporales para inferir la ejecución de consultas, sin necesidad de respuestas visibles por parte del servidor.
20Inyección SQL ciega con retrasos y exfiltración de datos [1/2]
10:14
Aprendemos a extraer información sensible mediante inyecciones SQL ciegas con retardos temporales, utilizando funciones condicionales y técnicas automatizadas para reconstruir contraseñas carácter por carácter.
21Inyección SQL ciega con retrasos y exfiltración de datos [2/2]
9:56
Continuamos con la extracción de datos mediante inyecciones SQL ciegas basadas en tiempo, enfocándonos en automatizar completamente el proceso de exfiltración carácter por carácter.
22Inyección SQL ciega con interacción out-of-band (OOB)
6:43
Utilizamos una inyección SQL ciega para generar interacciones fuera de banda (OAST), provocando una consulta DNS a través de un payload insertado en una cookie vulnerable.
23Exfiltración de datos por canal OOB en Inyección SQL
4:25
Aprendemos a exfiltrar información sensible mediante inyecciones SQL ciegas fuera de banda, utilizando resoluciones DNS personalizadas para filtrar datos directamente al servidor de Burp Collaborator.
24Bypass de filtros con codificación XML en Inyección SQL
8:49
Explotamos una inyección SQL dentro de un cuerpo XML, evadiendo filtros mediante codificación de entidades para extraer credenciales de la base de datos.
25Cuestionario de SQL Injection
Cross-site Scripting (XSS)
35 clases
26XSS reflejado en HTML sin codificación
5:48
Introducción al XSS reflejado aprovechando la falta total de filtrado o codificación en una funcionalidad de búsqueda vulnerable.
27XSS almacenado en HTML sin codificación
3:08
Exploramos una vulnerabilidad de XSS almacenado donde es posible inyectar código persistente a través del sistema de comentarios de un blog.
28XSS DOM con 'document.write' y 'location.search'
7:30
Aprendemos a explotar un XSS basado en el DOM manipulando la URL para inyectar código a través de una función vulnerable que genera contenido directamente desde la barra de direcciones.
29XSS DOM con 'innerHTML' y 'location.search'
4:57
Explotamos un XSS basado en DOM a través de la manipulación del contenido HTML de un elemento, aprovechando el uso directo de datos de la URL sin validación.
30XSS DOM en 'href' con jQuery y 'location.search'
6:48
Explotamos un XSS basado en DOM modificando dinámicamente el destino de un enlace mediante jQuery, usando datos no validados provenientes de la URL.
31XSS DOM con jQuery y evento 'hashchange'
16:03
Exploramos un XSS basado en DOM desencadenado por cambios en la parte del hash de la URL, aprovechando un uso inseguro de jQuery para seleccionar contenido dinámicamente.
32XSS reflejado en atributo con corchetes codificados
6:01
Ejecutamos un XSS reflejado inyectando atributos maliciosos, aprovechando que solo se codifican los signos de apertura y cierre de etiquetas.
33XSS almacenado en 'href' con comillas codificadas
3:46
Realizamos un XSS almacenado inyectando un enlace malicioso en el campo de sitio web, que se ejecuta al hacer clic sobre el nombre del autor del comentario.
34XSS reflejado en string JS con corchetes codificados
5:34
Ejecutamos un XSS reflejado escapando de una cadena de texto dentro de un bloque de JavaScript, aprovechando que solo se codifican los signos angulares.
35XSS DOM con 'document.write' dentro de 'select'
7:49
Explotamos un XSS basado en DOM escapando de un menú desplegable generado dinámicamente, manipulando el contenido desde la URL.
36XSS DOM en AngularJS con comillas codificadas
6:05
Explotamos un XSS basado en DOM a través de una expresión AngularJS, utilizando doble llave para ejecutar código dentro de una directiva del framework.
37XSS DOM reflejado
11:43
Explotamos un XSS reflejado basado en DOM al manipular datos JSON procesados con una función insegura del lado cliente.
38XSS DOM almacenado
8:25
Ejecutamos un XSS almacenado basado en DOM, burlando un filtrado parcial que intenta bloquear etiquetas HTML mediante una función de reemplazo mal implementada.
39XSS reflejado en HTML con etiquetas bloqueadas
11:29
Superamos un sistema de protección web descubriendo etiquetas y atributos permitidos, y construyendo un vector de XSS reflejado que se ejecuta sin interacción del usuario.
40XSS reflejado con solo etiquetas personalizadas
9:18
Aprovechamos etiquetas personalizadas permitidas por la aplicación para ejecutar un XSS reflejado que se activa automáticamente al cargar la página.
41XSS reflejado con etiquetas SVG permitidas
6:46
Ejecutamos un XSS reflejado utilizando etiquetas SVG permitidas por el filtro, combinadas con eventos específicos que no han sido bloqueados.
42XSS reflejado en etiqueta canonical
6:15
Explotamos un XSS reflejado inyectando atributos maliciosos dentro de una etiqueta de enlace, activados mediante combinaciones de teclas en el navegador.
43XSS en string JS con comilla y backslash escapados
7:00
Ejecutamos un XSS reflejado escapando de una cadena JavaScript protegida parcialmente con comillas simples y barras invertidas, insertando un nuevo bloque de código.
44XSS en JS con comillas, corchetes y comilla escapada
7:54
Ejecutamos un XSS reflejado escapando de una cadena en JavaScript parcialmente protegida, aprovechando un fallo en el tratamiento de barras invertidas.
45XSS almacenado en 'onclick' con codificación completa
9:36
Ejecutamos un XSS almacenado inyectando un valor malicioso en un atributo onclick, sorteando un filtrado mixto mediante codificación precisa.
46XSS en template literal con caracteres unicode escapados
7:10
Explotamos un XSS reflejado dentro de una cadena de plantilla en JavaScript, aprovechando que las expresiones entre llaves no son filtradas.
47Robo de cookies mediante XSS
8:40
Ejecutamos un XSS almacenado para robar la cookie de sesión de otro usuario, enviándola a un servidor externo controlado mediante Burp Collaborator.
48Captura de contraseñas mediante XSS
6:33
Ejecutamos un XSS almacenado para capturar credenciales de otro usuario y las usamos para iniciar sesión en su cuenta.
49Evasión de CSRF usando XSS [1/2]
12:32
Aprovechamos un XSS almacenado para capturar un token CSRF y utilizarlo en una petición que modifica información sensible de otro usuario.
50Evasión de CSRF usando XSS [2/2]
8:07
Seguimos aprovechando el XSS almacenado para automatizar la captura y reutilización de un token CSRF, completando la explotación con una modificación remota del perfil del usuario afectado.
51Escape de sandbox AngularJS sin cadenas [1/2]
13:43
Escapamos del sandbox de AngularJS sin usar cadenas ni $eval, manipulando prototipos para ejecutar código en un contexto altamente restringido.
52Escape de sandbox AngularJS sin cadenas [2/2]
11:41
Continuamos el bypass del sandbox de AngularJS sin cadenas, utilizando técnicas avanzadas para ejecutar código en un entorno altamente restringido.
53Escape de sandbox AngularJS con CSP
13:21
Ejecutamos un XSS reflejado que logra evadir tanto el sandbox de AngularJS como las restricciones impuestas por una política CSP.
54XSS con eventos y atributos bloqueados
9:39
Ejecutamos un XSS reflejado en un entorno donde se bloquean eventos y enlaces, utilizando SVG para inducir a la víctima a hacer clic y activar el código.
55XSS en javascript: con caracteres limitados [1/2]
15:03
Evadimos filtros de caracteres ejecutando un XSS reflejado dentro de una URL JavaScript, utilizando manejo de errores y funciones flecha para disparar una alerta con el valor 1337.
56XSS en javascript: con caracteres limitados [2/2]
12:37
Seguimos explotando una URL JavaScript con restricciones, afinando el uso de funciones flecha y conversión de objetos para ejecutar código de forma indirecta.
57XSS con CSP estricto y marcado colgante [1/2]
12:29
Realizamos un XSS reflejado para evadir CSP y robar un token CSRF, que luego reutilizamos en una petición forzada para modificar datos del usuario víctima.
58XSS con CSP estricto y marcado colgante [2/2]
11:06
Continuamos la explotación del XSS reflejado con CSP, completando el robo de token y la ejecución del ataque CSRF para modificar datos del usuario víctima.
59XSS con CSP y técnica de bypass
9:18
Ejecutamos un XSS reflejado burlando una política CSP mediante la manipulación de un parámetro vulnerable que altera las directivas de seguridad.
60Cuestionario de XSS
Cross-site Request Forgery (CSRF)
15 clases
61CSRF sin ningún tipo de defensa
8:59
Explotamos una funcionalidad sin protección contra CSRF enviando un formulario malicioso que modifica la dirección de correo de un usuario autenticado.
62CSRF con token validado según el método HTTP
5:41
Ejecutamos un ataque CSRF modificando el método HTTP para evadir una validación de token que solo se aplica a peticiones POST.
63CSRF con validación solo si hay token presente
3:35
Ejecutamos un ataque CSRF omitiendo el parámetro del token, aprovechando que la validación solo se realiza si el token está presente.
64CSRF con token no vinculado a la sesión
9:10
Aprovechamos que los tokens CSRF no están ligados a la sesión del usuario, permitiendo usarlos entre cuentas para realizar el ataque.
65CSRF con token atado a cookie sin sesión [1/2]
9:01
Explotamos una implementación insegura donde el token CSRF está vinculado a una cookie no asociada a la sesión, lo que permite forzar el envío de la cookie en el navegador víctima.
66CSRF con token atado a cookie sin sesión [2/2]
9:43
Aprovechamos una mala integración del token CSRF con una cookie no vinculada a sesión para forzar su uso en el navegador víctima.
67CSRF con token duplicado en cookie
9:03
Ataque CSRF contra la técnica de doble envío de token, explotando una funcionalidad vulnerable que permite la inyección de cookies.
68Bypass de SameSite Lax con method override
5:37
Ataque CSRF aprovechando la política SameSite por defecto en navegadores modernos y una vulnerabilidad de override de método.
69Bypass de SameSite Strict con redirección cliente
14:25
Ataque CSRF burlando SameSite Strict mediante redirección cliente-side en un parámetro vulnerable.
70Bypass de SameSite Strict con dominio hermano [1/2]
14:06
Explotación de un WebSocket a través de un dominio hermano para evadir SameSite Strict y robar credenciales vía CSWSH.
71Bypass de SameSite Strict con dominio hermano [2/2]
14:43
Bypass de SameSite Strict usando una XSS reflejada desde un dominio hermano.
72Bypass de SameSite Lax con refresco de cookie
15:08
Bypass de SameSite Lax mediante refresco de sesión OAuth y sincronización con interacción del usuario.
73CSRF con validación Referer si el header existe
8:04
Explotación de validación de Referer omitiendo el encabezado en ataques CSRF.
74CSRF con validación Referer vulnerable
10:34
Evasión de validación de Referer usando query strings en ataques CSRF.
75Cuestionario de CSRF
Clickjacking
6 clases
76Clickjacking básico con token CSRF
9:41
Clickjacking básico para saltarse protección CSRF visual.
77Clickjacking con datos precargados por parámetro
7:33
Clickjacking con datos del formulario preestablecidos por parámetro.
78Clickjacking con script anti-frame
9:45
Clickjacking con script de protección en el marco (frame buster)
79Explotación de clickjacking para XSS DOM
7:03
Explotación de clickjacking para desencadenar XSS basado en DOM.
80Clickjacking en múltiples pasos
7:55
Clickjacking en dos pasos para eliminar una cuenta.
81Cuestionario de Clickjacking
Vulnerabilidades basadas en el DOM
10 clases
82XSS DOM usando Web Messages
11:06
Ejecutamos código malicioso en el navegador de la víctima enviando un mensaje con postMessage a una página vulnerable que lo inserta directamente en el DOM.
83XSS DOM con Web Messages y URL JavaScript
8:34
Redirigimos a una URL JavaScript maliciosa aprovechando una validación defectuosa con web messages.
84XSS DOM con Web Messages y 'JSON.parse'
11:42
Explotamos la función JSON.parse en combinación con web messages para ejecutar JavaScript arbitrario desde un iframe.
85Redirección abierta basada en el DOM
7:57
Abordamos una redirección abierta controlada desde el DOM que permite redirigir a la víctima a un dominio externo.
86Manipulación de cookies vía DOM
11:10
Exploramos cómo manipular cookies desde el lado del cliente para ejecutar un XSS en otra página del sitio.
87XSS mediante clobbering en el DOM [1/2]
14:52
Aprendemos a explotar una vulnerabilidad de DOM clobbering para ejecutar código malicioso aprovechando una mala práctica con variables globales.
88XSS mediante clobbering en el DOM [2/2]
12:29
Profundizamos en cómo el clobbering del DOM persiste en el entorno del navegador y se aprovecha en una carga posterior para ejecutar código.
89Bypass de filtros HTML con clobbering DOM [1/2]
11:38
En esta clase se explora cómo el clobbering del DOM puede utilizarse para modificar atributos internos del navegador y así evadir filtros de saneamiento como los de la librería HTMLJanitor.
90Bypass de filtros HTML con clobbering DOM [2/2]
12:29
En esta clase se continúa profundizando en el uso de clobbering del DOM para evadir filtros de HTML, centrándose en técnicas más sofisticadas que aprovechan cómo los navegadores interpretan internamente los elementos inyectados.
91Cuestionario de vulnerabilidades en DOM
Compartición de recursos entre orígenes (CORS)
6 clases
92CORS con reflexión básica del origen [1/2]
7:24
En esta clase se estudia una vulnerabilidad CORS básica en la que el servidor refleja cualquier origen solicitado, lo que permite a un atacante extraer datos privados del navegador de la víctima.
93CORS con reflexión básica del origen [2/2]
9:16
En esta clase continuamos explorando escenarios en los que el servidor valida el origen de forma incorrecta, permitiendo explotar CORS para robar datos sensibles.
94CORS con origen null marcado como confiable
11:12
En esta clase continuamos explotando configuraciones inseguras de CORS, esta vez abusando de peticiones con origen null.
95CORS con protocolos inseguros confiables [1/2]
8:44
Explotamos una configuración CORS que confía en subdominios aunque se usen protocolos inseguros.
96CORS con protocolos inseguros confiables [2/2]
9:09
Continuamos explotando la configuración CORS que acepta subdominios en protocolos inseguros.
97Cuestionario de CORS
XML external entity (XXE) injection
12 clases
98XXE para leer archivos con entidades externas
8:45
Explotamos una XXE básica para leer archivos locales del sistema.
99XXE para realizar ataques SSRF
9:03
Usamos una XXE para hacer una petición SSRF al servidor y extraer credenciales internas.
100XXE ciego con interacción out-of-band
4:35
Identificamos una XXE ciega provocando interacciones externas con Burp Collaborator.
101XXE ciego con entidades XML externas (OOB)
8:23
Explotamos una XXE ciega usando entidades de parámetro y Burp Collaborator.
102XXE ciego con exfiltración vía DTD externa [1/2]
7:07
Exfiltramos datos mediante una XXE ciega usando una DTD externa maliciosa.
103XXE ciego con exfiltración vía DTD externa [2/2]
7:03
Segunda parte: completamos la exfiltración de datos con XXE ciega y DTD externa.
104XXE ciego para filtrar datos con errores
13:19
Exfiltramos el contenido de archivos mediante errores generados con XXE ciega y DTD externa.
105XInclude para leer archivos
6:00
Extraemos archivos locales mediante una inyección XInclude en un XML del lado del servidor.
106XXE vía subida de imagen maliciosa
6:15
Exfiltramos el nombre del host del servidor mediante una imagen SVG con una entidad externa.
107XXE usando DTD local para extraer datos [1/2]
8:33
Reutilizamos un DTD local del sistema para provocar una lectura del archivo passwd.
108XXE usando DTD local para extraer datos [2/2]
8:13
Continuamos con el uso de un DTD local para filtrar información mediante un error.
109Cuestionario de XXE
Server-side request forgery (SSRF)
9 clases
110SSRF básico contra servidor local [1/2]
8:04
Accedemos a un panel interno mediante SSRF para eliminar al usuario carlos.
111SSRF básico contra servidor local [2/2]
5:43
Continuamos explotando la vulnerabilidad SSRF para interactuar con recursos internos del servidor.
112SSRF básico contra sistema interno
6:48
Aprovechamos una SSRF para escanear un sistema interno y eliminar al usuario carlos.
113SSRF ciego con detección out-of-band
2:26
Explotamos una SSRF ciega usando el encabezado Referer para generar una interacción externa detectable.
114SSRF con filtro basado en blacklist
10:18
Realizamos un ataque SSRF sorteando un filtro por blacklist para acceder a un panel interno.
115Bypass SSRF con redirección abierta
6:36
Evadimos un filtro SSRF usando una redirección abierta dentro de la propia aplicación.
116SSRF ciego explotando Shellshock
11:40
Ejecutamos un ataque SSRF ciego con Shellshock para filtrar el nombre del usuario del sistema.
117SSRF con filtro basado en whitelist
9:59
Evitamos un filtro de SSRF basado en lista blanca para eliminar al usuario carlos.
118Cuestionario de SSRF
HTTP request smuggling
33 clases
119Confirmación de CL.TE por respuestas diferenciales [1/3]
7:58
Confirmamos una vulnerabilidad CL.TE mediante diferencias en la respuesta.
120Confirmación de CL.TE por respuestas diferenciales [2/3]
8:41
Seguimos explotando la vulnerabilidad CL.TE del laboratorio anterior.
121Confirmación de CL.TE por respuestas diferenciales [3/3]
8:14
Cerramos el laboratorio explotando completamente la vulnerabilidad CL.TE.
122Confirmación de TE.CL por respuestas diferenciales
13:22
Confirmamos una vulnerabilidad TE.CL mediante diferencias en las respuestas del servidor.
123Bypass de seguridad front-end (CL.TE)
13:14
Explotamos una vulnerabilidad CL.TE para acceder al panel de administración y eliminar al usuario carlos.
124Bypass de seguridad front-end (TE.CL)
10:21
Aprovechamos una vulnerabilidad TE.CL para acceder al panel de administración y eliminar al usuario carlos.
125Descubrimiento de reescritura en front-end
10:49
Descubrimos cómo el front-end reescribe peticiones y lo usamos para borrar al usuario carlos.
126Captura de peticiones de otros usuarios [1/2]
7:23
Capturamos peticiones de otros usuarios mediante HTTP request smuggling y accedemos a sus cuentas.
127Captura de peticiones de otros usuarios [2/2]
7:47
Extraemos la cookie interceptada y accedemos a la cuenta del usuario víctima.
128Entrega de XSS reflejado por smuggling
6:28
Usamos request smuggling para entregar una carga XSS reflejada al siguiente usuario.
129Response queue poisoning con H2.TE [1/2]
7:15
Envenenamos la cola de respuestas con HTTP/2 para capturar la sesión del administrador y eliminar a carlos.
130Response queue poisoning con H2.TE [2/2]
7:45
Seguimos manipulando la cola de respuestas para interceptar la cookie de sesión del administrador.
131Smuggling H2.CL
12:32
Realizamos un ataque de request smuggling para redirigir al usuario víctima a un script malicioso y ejecutar JavaScript.
132Smuggling HTTP/2 por inyección CRLF
12:13
Explotamos una vulnerabilidad de request smuggling exclusiva de HTTP/2 para robar la sesión de otro usuario mediante inyección de cabeceras.
133Splitting HTTP/2 por inyección CRLF
12:56
Realizamos un ataque de HTTP/2 request splitting para acceder al panel de administración y eliminar al usuario carlos.
134Smuggling con CL.0
8:00
Aprovechamos una vulnerabilidad CL.0 para acceder al panel de administración y eliminar al usuario carlos.
135Vulnerabilidad básica CL.TE
4:36
Ejecutamos un ataque básico CL.TE para provocar una solicitud con método GPOST en el back-end.
136Vulnerabilidad básica TE.CL
4:52
Demostramos un ataque TE.CL básico que fuerza al back-end a interpretar una solicitud con el método inválido GPOST.
137Smuggling ocultando el header TE
7:32
Realizamos un ataque de request smuggling para envenenar la caché y redirigir a una carga maliciosa desde el exploit server.
138Poisoning de caché web con smuggling
12:12
Envenenamos la caché del servidor mediante request smuggling para redirigir a un archivo JS malicioso desde el exploit server.
139Decepción de caché web con smuggling
8:56
Utilizamos un ataque de request smuggling para engañar al servidor y que almacene en caché la API Key del usuario víctima.
140Bypass de control con túnel HTTP/2 [1/3]
7:30
Comprobamos la vulnerabilidad del servidor a CRLF injection en nombres de cabecera mediante HTTP/2, sentando las bases para realizar un ataque de request tunnelling.
141Bypass de control con túnel HTTP/2 [2/3]
7:54
Aprovechamos la vulnerabilidad para extraer cabeceras internas del sistema, incluyendo las que autentican al administrador.
142Bypass de control con túnel HTTP/2 [3/3]
7:45
Emulamos al usuario administrador inyectando una solicitud HTTP/1.1 completamente formada mediante request tunnelling.
143Poisoning de caché con túnel HTTP/2 [1/2]
11:43
Aprovechamos un fallo en la reescritura de cabeceras del servidor al hacer downgrade de HTTP/2 para visualizar respuestas inyectadas mediante request tunnelling.
144Poisoning de caché con túnel HTTP/2 [2/2]
11:43
Inyectamos un payload de XSS en una respuesta cacheada, logrando que se ejecute en el navegador del usuario víctima al visitar la home.
145Desincronización en cliente (client-side desync) [1/3]
7:20
Identificamos un vector de desincronización entre navegador y servidor y validamos que se puede replicar desde el navegador.
146Desincronización en cliente (client-side desync) [2/3]
7:41
Aprovechamos la funcionalidad de comentarios para reflejar contenido malicioso desde una petición fragmentada.
147Desincronización en cliente (client-side desync) [3/3]
10:03
Disparamos el ataque final desde el navegador de la víctima para robar su cookie de sesión y acceder a su cuenta.
148Smuggling por pausa del servidor [1/3]
8:26
Identificamos una vulnerabilidad CL.0 basada en pausas.
149Smuggling por pausa del servidor [2/3]
8:22
Explotamos el desync para acceder al panel de administración desde localhost.
150Smuggling por pausa del servidor [3/3]
5:45
Enviamos una petición smuggleada para borrar al usuario carlos y resolver el lab.
151Cuestionario de HTTP Request Smuggling
Inyección de comandos del sistema
6 clases
152Inyección de comandos, caso simple
11:43
Explotamos una inyección de comandos sencilla para ejecutar 'whoami'.
153Inyección ciega con retrasos temporales
5:25
Explotamos una inyección ciega con retardo para verificar la ejecución de comandos.
154Inyección ciega con redirección de salida
5:36
Explotamos una inyección ciega redirigiendo la salida del comando a un archivo accesible.
155Inyección ciega con interacción OOB
1:53
Explotamos una inyección ciega usando una interacción DNS fuera de banda.
156Inyección ciega con exfiltración vía OOB
2:39
Filtramos datos sensibles usando una inyección ciega con exfiltración por DNS.
157Cuestionario de Inyección de Comandos
Server-side template injection (SSTI)
9 clases
158SSTI básica en plantilla del servidor
8:24
Inyectamos una plantilla en ERB para ejecutar comandos desde el servidor.
159SSTI básica en contexto de código
9:00
Explotamos una plantilla de Tornado para ejecutar código Python desde el servidor.
160SSTI usando la documentación del motor
4:08
Ejecutamos comandos en el servidor usando el motor de plantillas Freemarker.
161SSTI en lenguaje desconocido con exploit público
5:22
Detectamos Handlebars como motor de plantillas e inyectamos un exploit público para ejecutar código.
162SSTI con filtrado de info vía objetos del usuario
5:16
Explotamos una SSTI en Django para filtrar la clave secreta del framework accediendo al objeto settings.
163SSTI en entorno con sandbox
4:42
Saltamos el sandbox de Freemarker para leer el contenido del archivo 'my_password.txt' desde el directorio de Carlos.
164SSTI con exploit personalizado [1/2]
7:18
Accedemos al método 'setAvatar()' para leer archivos arbitrarios como '/etc/passwd' y 'User.php'.
165SSTI con exploit personalizado [2/2]
10:44
Utilizamos 'gdprDelete()' para borrar el archivo '.ssh/id_rsa' del usuario Carlos.
166Cuestionario de SSTI
Path Traversal
7 clases
167Path traversal, caso simple
5:29
Aprovechamos un fallo de path traversal para acceder a '/etc/passwd'.
168Bypass absoluto con secuencias bloqueadas
2:32
Eludimos el bloqueo de secuencias '../' accediendo directamente mediante una ruta absoluta.
169Secuencias traversal eliminadas sin recursión
3:24
Evadimos el filtrado superficial anidando secuencias de subida de directorio.
170Bypass con doble decodificación en URL
6:09
Explotamos una doble decodificación para evadir el filtrado de secuencias.
171Validación del inicio de la ruta
2:33
Saltamos la validación inicial comenzando el path con el directorio esperado.
172Bypass con null byte y validación de extensión
4:04
Evitamos la validación de extensión utilizando un byte nulo.
173Cuestionario de Path Traversal
Vulnerabilidades de Control de Acceso
14 clases
174Funcionalidad admin sin protección
4:06
Descubrimos un panel de administración sin restricciones a través de 'robots.txt'.
175Funcionalidad admin con URL impredecible
1:58
Localizamos un panel de administración oculto gracias al código fuente de la página.
176Rol de usuario controlado por parámetro
3:41
Accedemos al panel de administración modificando una cookie en la respuesta.
177Modificación del rol en el perfil de usuario
4:16
Explotamos la funcionalidad de edición del perfil para escalar privilegios.
178ID de usuario controlado por parámetro
2:14
Accedemos a datos de otro usuario manipulando el parámetro de la URL.
179ID de usuario impredecible controlado por parámetro
3:21
Accedemos a la cuenta de otro usuario utilizando su identificador único.
180Filtración de datos en redirección con ID por parámetro
4:32
Explotamos una fuga de información en la redirección para acceder a datos de otro usuario.
181Filtración de contraseña con ID por parámetro
3:10
Aprovechamos una mala gestión del parámetro id para acceder a la contraseña del administrador.
182Referencias directas inseguras a objetos
3:10
Exploramos un sistema de chats donde es posible enumerar archivos para encontrar credenciales ajenas.
183Bypass de control por URL
5:02
Demostramos cómo acceder al panel de administración usando cabeceras especiales que interpretan rutas en el backend.
184Bypass de control por método HTTP
4:12
Aprendemos a eludir controles de acceso que dependen del método HTTP utilizado.
185Paso sin control de acceso en proceso múltiple
4:07
Explotamos un flujo multi-paso donde uno de los pasos carece de control de acceso.
186Control de acceso basado en Referer
5:10
Saltamos una protección débil que depende del encabezado Referer.
187Cuestionario de Control de Acceso
Gestión de Autenticación
17 clases
188Enumeración de usuarios por respuestas distintas
4:39
Detectamos usuarios válidos analizando mensajes distintos en el login.
189Bypass básico de 2FA
3:14
Accedemos a una cuenta sin el código 2FA, explotando una validación incompleta.
190Lógica rota en reseteo de contraseña
4:14
Modificamos la contraseña de otro usuario sin necesitar su token de reseteo.
191Enumeración por respuestas sutilmente distintas
4:52
Descubre cómo enumerar usuarios válidos mediante diferencias sutiles en los mensajes de error y realiza un ataque de fuerza bruta sobre la contraseña para acceder a su cuenta.
192Enumeración de usuario por tiempo de respuesta
11:29
Detecta usuarios válidos midiendo los tiempos de respuesta y evita bloqueos por IP con la cabecera 'X-Forwarded-For'.
193Protección rota: bloqueo por IP
13:14
Evita el bloqueo por IP alternando logins válidos con intentos de fuerza bruta contra el usuario objetivo.
194Enumeración de usuario por bloqueo de cuenta
5:51
Aprovecha el sistema de bloqueo de cuentas para descubrir un nombre de usuario válido y forzar su contraseña.
195Lógica rota en 2FA
8:25
Fuerza el código 2FA de otro usuario aprovechando un fallo lógico en el sistema de verificación.
196Fuerza bruta de cookie de sesión persistente
9:44
Accede a la cuenta de Carlos generando su cookie persistente a partir de una lista de contraseñas.
197Cracking offline de contraseñas [1/2]
6:18
Crackea la contraseña de Carlos a partir de un hash MD5 robado mediante un XSS almacenado.
198Cracking offline de contraseñas [2/2]
6:27
Aplicamos el XSS almacenado para robar la cookie de Carlos y crackear su contraseña.
199Poisoning en reset de contraseña vía middleware
7:54
Envenenamos el enlace de reseteo de contraseña mediante un header 'X-Forwarded-Host' para interceptar el token de Carlos y acceder a su cuenta.
200Fuerza bruta de contraseña en cambio de clave
7:03
Aprovechamos el sistema de cambio de contraseña para identificar el password actual de Carlos mediante un ataque de fuerza bruta sutil basado en las respuestas.
201Protección rota: múltiples credenciales por petición
5:02
Aprovechamos que el endpoint de login acepta un array de contraseñas para enviar múltiples intentos en un solo request, eludiendo así la protección contra fuerza bruta.
202Bypass de 2FA por ataque de fuerza bruta [1/2]
7:45
Configuramos Burp para automatizar el login completo y repetir la secuencia antes de cada intento de 2FA, preparándonos para la fuerza bruta.
203Bypass de 2FA por ataque de fuerza bruta [2/2]
7:48
Realizamos fuerza bruta contra el código 2FA de 4 dígitos hasta identificar el válido y acceder a la cuenta de Carlos.
204Cuestionario de gestión de autenticación
WebSockets
4 clases
205Manipulación de mensajes WebSocket
7:04
Explotamos una vulnerabilidad XSS enviando manualmente un mensaje WebSocket malicioso al navegador del agente de soporte.
206Secuestro de WebSocket entre sitios
8:34
Realizamos un ataque de WebSocket hijacking para interceptar el historial de mensajes de la víctima y obtener sus credenciales de acceso.
207Manipulación del handshake de WebSocket
6:45
Manipulamos la cabecera del handshake WebSocket para evadir filtros y ejecutar un XSS en el navegador del agente de soporte.
208Cuestionario de WebSockets
Web Cache Poisoning
20 clases
209Poisoning con header no indexado [1/2]
8:37
Exploramos cómo una cabecera no considerada por la caché puede ser utilizada para inyectar contenido malicioso en una respuesta almacenada.
210Poisoning con header no indexado [2/2]
6:58
Envenenamos la caché con un script malicioso que se ejecuta en el navegador del visitante habitual de la página.
211Poisoning con cookie no indexada
4:24
Aprovechamos una cookie que no se tiene en cuenta al cachear para inyectar código malicioso en la respuesta servida a otros usuarios.
212Poisoning con múltiples headers
8:35
Explotamos un fallo de envenenamiento de caché combinando varias cabeceras manipuladas en una misma petición.
213Poisoning dirigido con header desconocido
11:20
Envenenamos la caché de forma dirigida usando una cabecera personalizada para ejecutar JavaScript en el navegador de una víctima específica.
214Poisoning con query string no indexado
6:25
Aprovechamos que los parámetros en la URL no forman parte de la clave de caché para introducir un 'alert(1)' persistente en la caché compartida.
215Poisoning con parámetro de query no indexado
8:16
Envenenamos la caché aprovechando que un parámetro reflejado no se incluye en la clave de caché, lo que permite inyectar contenido malicioso visible para otros usuarios.
216Parameter cloaking
9:16
Aprovechamos una inconsistencia entre el servidor y la caché para ocultar un parámetro malicioso y lograr envenenar la respuesta servida al usuario víctima.
217Poisoning con petición GET anómala
3:37
Se aprovecha que el servidor acepta peticiones GET con cuerpo para inyectar una función maliciosa sin que se vea reflejada en la clave de caché.
218Normalización de URL
5:23
Se explota una vulnerabilidad XSS que normalmente sería bloqueada por el navegador, pero que es activada gracias a la normalización de la caché.
219Poisoning para explotar XSS DOM con caché estricta
10:17
Se aprovecha una vulnerabilidad DOM XSS combinada con una caché exigente para inyectar una respuesta maliciosa que ejecuta código en el navegador del visitante.
220Combinación de vulnerabilidades de poisoning [1/3]
8:37
Se explota una vulnerabilidad de Web Cache Poisoning para cargar un archivo JSON de traducciones manipulado y lograr DOM XSS en el idioma español.
221Combinación de vulnerabilidades de poisoning [2/3]
8:30
Se usa una redirección cacheable para cambiar el idioma del usuario a español, evitando el bloqueo por cabeceras no cacheables como 'Set-Cookie'.
222Combinación de vulnerabilidades de poisoning [3/3]
9:44
Se combinan las dos técnicas anteriores para ejecutar un XSS en la víctima, envenenando tanto el contenido como la redirección.
223Inyección en clave de caché [1/4]
9:44
Se analiza cómo la clave de caché excluye ciertos parámetros como 'utm_content', abriendo la puerta a manipulaciones no controladas.
224Inyección en clave de caché [2/4]
9:13
Se descubre cómo manipular el archivo 'localize.js' para alterar su comportamiento mediante parámetro 'lang' sin codificar.
225Inyección en clave de caché [3/4]
10:44
Se explota la cabecera 'Origin' para inyectar contenido en la respuesta HTTP, utilizando la vulnerabilidad de 'localize.js'.
226Inyección en clave de caché [4/4]
9:35
Se combinan todas las vulnerabilidades anteriores con inyección de clave de caché (Pragma: x-get-cache-key) para ejecutar el XSS.
227Poisoning de caché interna
11:24
Se analiza cómo explotar capas internas de caché para inyectar un script malicioso en una parte específica de la página.
228Cuestionario de Cache Poisoning
Deserialización Insegura
18 clases
229Modificación de objetos serializados
12:14
Aprendemos a escalar privilegios modificando manualmente un objeto PHP serializado desde una cookie de sesión.
230Modificación de tipos de datos serializados
4:42
Explotamos una mala gestión de los tipos de datos en objetos PHP serializados para suplantar al usuario administrador.
231Explotación vía funciones de la aplicación
5:03
Aprovechamos una funcionalidad legítima de la aplicación para eliminar un archivo arbitrario manipulando un objeto PHP serializado.
232Inyección de objetos arbitrarios en PHP
10:02
Creamos e inyectamos manualmente un objeto PHP malicioso para eliminar un archivo específico aprovechando la deserialización insegura.
233Deserialización Java con Apache Commons
9:31
Usamos la herramienta ysoserial para generar un objeto Java malicioso que elimina un archivo aprovechando la deserialización insegura.
234Deserialización PHP con gadget predefinido [1/2]
7:34
Descubrimos el framework Symfony utilizado por la aplicación y localizamos la clave secreta para firmar objetos serializados.
235Deserialización PHP con gadget predefinido [2/2]
5:59
Creamos un objeto malicioso con PHPGGC, lo firmamos con la clave filtrada y lo usamos para ejecutar código en el servidor.
236Deserialización Ruby con gadget documentado [1/2]
6:06
Analizamos la sesión serializada y localizamos un gadget de deserialización documentado en Ruby.
237Deserialización Ruby con gadget documentado [2/2]
6:32
Creamos un objeto Marshal con payload RCE, lo codificamos y lo usamos para borrar el archivo de Carlos.
238Cadena personalizada en deserialización Java [1/3]
8:43
Revisamos el código Java expuesto y descubrimos una inyección SQL a través de objetos deserializados.
239Cadena personalizada en deserialización Java [2/3]
10:40
Usamos Hackvertor para automatizar pruebas de payloads SQL a través de deserialización Java.
240Cadena personalizada en deserialización Java [3/3]
9:51
Extraemos la contraseña del administrador explotando un error SQL y resolvemos el laboratorio.
241Cadena personalizada en deserialización PHP [1/2]
9:59
Analizamos el código fuente y descubrimos una cadena de gadgets PHP que nos permite lograr ejecución remota de comandos.
242Cadena personalizada en deserialización PHP [2/2]
10:13
Construimos e inyectamos un objeto serializado con la cadena de gadgets que ejecuta un comando malicioso.
243Deserialización PHAR con cadena personalizada [1/3]
8:55
Analizamos el código fuente disponible y descubrimos una cadena de gadgets que nos permitirá ejecutar código mediante deserialización PHAR.
244Deserialización PHAR con cadena personalizada [2/3]
8:14
Creamos un objeto PHP con el payload SSTI para Twig, lo empacamos en un archivo PHAR-JPG y lo subimos como avatar.
245Deserialización PHAR con cadena personalizada [3/3]
7:30
Ejecutamos la deserialización maliciosa utilizando el wrapper 'phar://' para activar el gadget chain y eliminar el archivo de Carlos.
246Cuestionario de deserialización insegura
Divulgación de Información
6 clases
247Divulgación en mensajes de error
1:44
Forzamos un error en la aplicación para revelar información sensible a través de los mensajes de error.
248Divulgación en página de depuración
2:26
Localizamos una página de depuración oculta y extraemos la variable 'SECRET_KEY'.
249Código fuente expuesto por archivos backup
2:26
Accedemos a una copia de seguridad del código fuente y extraemos la contraseña de la base de datos.
250Bypass de login por divulgación de info
5:35
Aprovechamos la funcionalidad TRACE para descubrir una cabecera personalizada que permite eludir la autenticación del panel de administración.
251Divulgación en historial de control de versiones
7:34
Analizamos el historial de versiones de Git del servidor para extraer la contraseña del administrador que fue eliminada en un commit previo.
252Cuestionario de divulgación de información
Vulnerabilidades de lógica de negocio
18 clases
253Confianza excesiva en el lado del cliente
3:25
Explotamos la falta de validación en el servidor para modificar el precio de un producto antes de realizar la compra.
254Vulnerabilidad lógica de alto nivel
6:07
Aprovechamos una falla lógica en la gestión de cantidades del carrito para generar un saldo negativo y reducir el precio total de la compra.
255Controles de seguridad inconsistentes
5:42
Explotamos una inconsistencia en la validación del dominio de correo para acceder a funciones administrativas restringidas.
256Reglas de negocio mal aplicadas
3:20
Explotamos una validación inadecuada al aplicar múltiples cupones para reducir el precio final de un producto.
257Fallo lógico de bajo nivel [1/2]
6:19
Forzamos un desbordamiento entero manipulando la cantidad de productos añadidos al carrito.
258Fallo lógico de bajo nivel [2/2]
7:17
Combinamos productos para ajustar el precio final tras el desbordamiento y completar la compra.
259Gestión inconsistente de entradas atípicas
7:34
Aprovechamos el límite de longitud del correo para simular pertenecer a un dominio autorizado.
260Aislamiento débil en endpoint de doble uso
3:03
Explotamos un endpoint mal aislado para cambiar la contraseña de otro usuario sin autenticación previa.
261Validación insuficiente del flujo de trabajo
3:54
Manipulamos el flujo de trabajo para comprar un artículo sin pagar su precio real.
262Bypass por máquina de estados rota
4:02
Manipulamos el flujo del login para obtener privilegios administrativos sin seleccionarlos.
263Fallo lógico para generar dinero infinito [1/2]
7:41
Obtenemos dinero infinito aplicando cupones a la compra de tarjetas regalo.
264Fallo lógico para generar dinero infinito [2/2]
9:06
Automatizamos la explotación de la lógica defectuosa para obtener saldo ilimitado.
265Bypass por oráculo de cifrado [1/2]
8:43
Aprovechamos una cookie de error para descifrar la cookie de sesión y entender su formato.
266Bypass por oráculo de cifrado [2/2]
7:56
Generamos una cookie falsa cifrada y accedemos como administrador.
267Bypass por parsing inconsistente de email [1/3]
9:20
Probamos distintas codificaciones en el registro para descubrir discrepancias en el análisis de correos.
268Bypass por parsing inconsistente de email [2/3]
9:56
Usamos UTF-7 para registrar un correo que parece válido, pero redirige a nuestro servidor.
269Bypass por parsing inconsistente de email [3/3]
8:11
Accedemos como administrador y eliminamos a carlos para resolver el laboratorio.
270Cuestionario de Business Logic
Ataques mediante cabecera Host
8 clases
271Poisoning básico en reseteo de contraseña
8:20
Acceso a la cuenta de otro usuario explotando una mala validación del campo Host en el sistema de recuperación de contraseñas.
272Bypass de autenticación por cabecera Host
3:13
Bypass de autenticación modificando la cabecera Host para simular una petición local y obtener acceso al panel de administración.
273Web cache poisoning por petición ambigua
6:27
Poisoning de caché mediante peticiones ambiguas con múltiples cabeceras Host, aprovechando diferencias entre el caché y el back-end para inyectar un script malicioso en la home.
274SSRF por fallo en enrutamiento
6:41
Ataque SSRF basado en enrutamiento manipulando la cabecera Host, lo que permite acceder a un panel interno en la red 192.168.0.0/24 y eliminar al usuario carlos.
275SSRF por parsing incorrecto de la petición
8:10
Explotación de un SSRF debido a un análisis erróneo de URLs absolutas, lo que permite acceder a un panel interno y eliminar al usuario carlos.
276Bypass de validación por estado de conexión
6:26
Se explota una SSRF basada en el estado de conexión persistente, logrando acceso a un panel interno mediante una secuencia de peticiones sobre una única conexión.
277Poisoning de reset con markup colgante
11:33
Se explota una vulnerabilidad de password reset poisoning mediante dangling markup, interceptando el nuevo password de otro usuario a través de una carga HTML maliciosa.
278Cuestionario de Host Header Injection
Autenticación con OAuth
10 clases
279Bypass de login usando flujo implícito de OAuth
6:37
Se explota una validación deficiente en el flujo implícito de OAuth para acceder a la cuenta de otro usuario sin necesidad de conocer su contraseña.
280SSRF vía registro dinámico de cliente OpenID
11:36
Se explota una mala implementación del registro dinámico en un servidor OAuth para realizar un ataque SSRF y acceder a metadatos internos del proveedor en la nube.
281Forzado de enlace entre perfiles OAuth
8:34
Se explota la ausencia de protección CSRF en el flujo de vinculación OAuth para forzar que el perfil social del atacante quede enlazado a la cuenta del administrador.
282Secuestro de cuenta por 'redirect_uri' en OAuth
9:19
Se explota una redirección insegura en el flujo OAuth para interceptar el código de autorización del administrador y secuestrar su cuenta.
283Robo de token OAuth con redirección abierta [1/2]
10:36
Se detecta una redirección abierta en la web del cliente que, combinada con un path traversal, permite redirigir el flujo OAuth a cualquier destino arbitrario.
284Robo de token OAuth con redirección abierta [2/2]
10:37
Se construye un exploit que aprovecha las redirecciones inseguras para robar el token OAuth del administrador y acceder a su clave API.
285Robo de token de acceso con página proxy [1/3]
8:03
Se analiza el flujo OAuth y se identifica que el parámetro 'redirect_uri' es vulnerable a path traversal, permitiendo redirigir el token a rutas arbitrarias dentro del dominio.
286Robo de token de acceso con página proxy [2/3]
8:09
Se identifica una funcionalidad de proxy interno que refleja información mediante 'postMessage', lo cual permite exfiltrar datos al atacante.
287Robo de token de acceso con página proxy [3/3]
9:16
Se construye un exploit que redirige el token a la página vulnerable y lo exfiltra usando postMessage.
288Cuestionario de OAuth
Vulnerabilidades en subida de archivos
8 clases
289Ejecución remota con web shell subida
5:30
Aprendemos a ejecutar código remoto subiendo una shell PHP a través de una subida de archivos sin validación.
290Web shell por bypass de Content-Type
5:06
Aprendemos a evadir restricciones de tipo MIME para subir una shell PHP y ejecutar código en el servidor.
291Web shell por path traversal
5:12
Aprendemos a utilizar path traversal para subir una shell PHP fuera del directorio restringido y ejecutarla con éxito.
292Web shell por bypass de blacklist de extensiones
5:40
Aprendemos a evadir una lista negra de extensiones usando un archivo '.htaccess' para ejecutar código malicioso en el servidor.
293Web shell con extensión de archivo ofuscada
6:36
Aprendemos a evadir una lista negra de extensiones usando un null byte para camuflar una shell PHP.
294Ejecución remota con web shell multi-formato
9:07
Aprendemos a subir una imagen con código PHP oculto en sus metadatos para lograr ejecución remota en el servidor.
295Web shell por condición de carrera
6:17
Aprendemos a explotar una condición de carrera para ejecutar una shell PHP antes de que el servidor la valide y elimine.
296Cuestionario de subida de archivos
JWT (Json Web Tokens)
9 clases
297Bypass de autenticación JWT sin verificar la firma
7:09
Aprendemos a acceder como administrador modificando un JWT cuya firma no se verifica por parte del servidor.
298Bypass de autenticación JWT por verificación defectuosa
4:51
Aprendemos a omitir la autenticación JWT configurando el algoritmo como none y eliminando la firma del token.
299Bypass de autenticación JWT con clave débil
10:07
Aprendemos a forjar un JWT válido tras descifrar una clave de firma débil mediante fuerza bruta.
300Bypass de autenticación JWT por inyección en jwk
6:44
Aprendemos a incrustar una clave pública en el encabezado de un JWT para generar un token válido y suplantar al administrador.
301Bypass de autenticación JWT por inyección en jku
7:42
Aprendemos a forjar un JWT manipulando el parámetro jku para que el servidor cargue una clave pública controlada por nosotros.
302Bypass de autenticación JWT con traversal en kid
7:14
Aprendemos a manipular el parámetro kid con path traversal para firmar un JWT usando archivos del sistema como clave.
303Bypass de autenticación JWT por confusión de algoritmo
10:49
Aprendemos a explotar una confusión de algoritmos firmando un JWT con la clave pública del servidor como si fuera una clave secreta.
304Confusión de algoritmo JWT sin clave expuesta
10:36
Aprendemos a explotar una confusión de algoritmos en JWT derivando la clave pública del servidor a partir de dos tokens válidos.
305Cuestionario de JWT
Habilidades esenciales
2 clases
306Detección rápida con escaneo dirigido
6:12
Aprendemos a utilizar escaneos dirigidos con Burp Scanner para identificar vulnerabilidades rápidamente antes de que se agote el tiempo.
307Escaneo de estructuras de datos no estándar
9:55
Aprendemos a escanear estructuras de datos no estándar usando Burp Scanner para descubrir y explotar una XSS almacenada.
Prototype Pollution
14 clases
308Prototype pollution en el lado cliente usando APIs del navegador [1/2]
9:29
Aprendemos a identificar una fuente de prototype pollution en el cliente y a comprobar que podemos modificar propiedades globales.
309Prototype pollution en el lado cliente usando APIs del navegador [2/2]
9:04
Aprendemos a explotar un gadget vulnerable combinando la contaminación del prototipo con una carga XSS mediante 'script.src'.
310XSS en el DOM por prototype pollution en cliente
4:22
Aprendemos a explotar una vulnerabilidad de XSS manipulando propiedades del prototipo a través del cliente.
311XSS en el DOM con vector alternativo de pollution
7:52
Aprendemos a utilizar un vector alternativo de prototype pollution para ejecutar JavaScript arbitrario mediante una llamada a eval.
312Prototype pollution en cliente por mala sanitización
5:56
Aprendemos a evadir un sistema de sanitización mal implementado para explotar prototype pollution y ejecutar JavaScript en el navegador.
313Prototype pollution en librerías de terceros [1/3]
8:22
Aprendemos a identificar vectores de prototype pollution en fragmentos de URL utilizando DOM Invader.
314Prototype pollution en librerías de terceros [2/3]
8:52
Aprendemos a detectar gadgets vulnerables en bibliotecas de terceros minificadas usando DOM Invader.
315Prototype pollution en librerías de terceros [3/3]
6:44
Aprendemos a construir y entregar un exploit basado en prototype pollution que roba cookies al usuario víctima.
316Escalada de privilegios por pollution en el servidor
5:54
Aprendemos a escalar privilegios manipulando 'Object.prototype' en el servidor mediante prototype pollution.
317Detección sin reflejo de propiedades modificadas
5:21
Aprendemos a detectar prototype pollution en el servidor provocando un cambio sutil en su comportamiento sin necesidad de explotar la vulnerabilidad.
318Bypass de filtros para pollution en servidor
5:55
Aprendemos a evadir un filtro defectuoso y realizar prototype pollution en el servidor a través de la propiedad 'constructor'.
319Ejecución remota por pollution en servidor
12:04
Aprendemos a lograr ejecución remota de comandos contaminando el prototipo y manipulando procesos en segundo plano del servidor.
320Exfiltración de datos sensibles por pollution en servidor
9:58
Aprendemos a exfiltrar datos sensibles del servidor explotando prototype pollution para ejecutar comandos y filtrar información mediante Burp Collaborator.
321Cuestionario de Prototype Pollution
Vulnerabilidades en APIs GraphQL
6 clases
322Acceso a publicaciones privadas en GraphQL
9:28
Aprendemos a descubrir un post oculto y su contraseña accediendo a campos internos a través de consultas GraphQL manipuladas.
323Exposición accidental de campos privados
4:20
Aprendemos a acceder a campos sensibles de usuarios manipulando consultas GraphQL mal protegidas por control de acceso.
324Descubrimiento de endpoint GraphQL oculto
7:29
Aprendemos a descubrir y explotar un endpoint GraphQL oculto superando defensas de introspección y manipulando consultas manualmente.
325Bypass de protección contra fuerza bruta en GraphQL
10:19
Aprendemos a evadir límites de intentos en GraphQL agrupando múltiples ataques de fuerza bruta en una sola petición mediante aliases.
326Explotación CSRF a través de GraphQL
8:57
Aprendemos a realizar un ataque CSRF sobre una mutación GraphQL aprovechando que acepta peticiones con tipo de contenido x-www-form-urlencoded.
327Cuestionario de GraphQL
Condiciones de Carrera (Race Condition)
13 clases
328Condición de carrera superando límites [1/2]
7:12
Aprendemos a explotar una condición de carrera en el carrito aplicando múltiples descuentos en paralelo con una acción personalizada de Burp.
329Condición de carrera superando límites [2/2]
7:40
Aprendemos a reproducir una condición de carrera sin funciones avanzadas, ejecutando manualmente solicitudes paralelas con múltiples pestañas en Repeater.
330Bypass de limitación por condición de carrera
9:44
Aprendemos a eludir la limitación de intentos de login mediante condiciones de carrera y ataques simultáneos.
331Condiciones de carrera en múltiples endpoints
10:43
Aprendemos a explotar condiciones de carrera entre múltiples endpoints para manipular el precio final de una compra.
332Condiciones de carrera en un único endpoint [1/2]
6:51
Estudiamos cómo aprovechar una condición de carrera en un único endpoint para modificar una dirección de correo a una no autorizada.
333Condiciones de carrera en un único endpoint [2/2]
6:54
Ejecutamos en la práctica un ataque de condición de carrera para asumir la identidad de un usuario con privilegios administrativos.
334Explotación de vulnerabilidades sensibles al tiempo [1/2]
7:37
Estudiamos un mecanismo de reseteo de contraseña que genera tokens predecibles si se sincronizan varias solicitudes en el momento adecuado.
335Explotación de vulnerabilidades sensibles al tiempo [2/2]
5:19
Explotamos la predictibilidad del token para resetear la contraseña de otro usuario sin tener acceso a su correo.
336Condición de carrera en construcción parcial [1/4]
9:13
Exploramos cómo el sistema de registro genera y valida tokens, y detectamos un posible estado inconsistente que puede explotarse.
337Condición de carrera en construcción parcial [2/4]
9:29
Comprobamos si es posible confirmar un usuario antes de que su token de registro haya sido correctamente almacenado.
338Condición de carrera en construcción parcial [3/4]
10:12
Creamos un ataque automatizado que aprovecha la condición de carrera para registrar usuarios sin correo válido.
339Condición de carrera en construcción parcial [4/4]
6:53
Verificamos si el ataque tuvo éxito, accedemos con la cuenta registrada y finalizamos el objetivo.
340Cuestionario de Race Condition
Inyecciones NoSQL
8 clases
341Detección de inyección NoSQL [1/2]
7:14
Aprendemos a detectar una inyección NoSQL observando errores y manipulando consultas.
342Detección de inyección NoSQL [2/2]
8:47
Aprendemos a comprobar si una inyección NoSQL altera la lógica del servidor.
343Bypass de login con inyección de operadores
7:07
Aprendemos a evadir el login explotando operadores especiales de MongoDB.
344Extracción de datos con inyección NoSQL [1/2]
6:06
Demostramos cómo validar y controlar una inyección NoSQL mediante lógica condicional.
345Extracción de datos con inyección NoSQL [2/2]
6:34
Extraemos la contraseña del administrador usando NoSQL injection y Burp Intruder.
346Extracción de campos desconocidos con operadores NoSQL [1/2]
10:17
Descubrimos nombres de campos internos en una base de datos MongoDB usando inyección con operadores.
347Extracción de campos desconocidos con operadores NoSQL [2/2]
8:56
Extraemos el token de reseteo de contraseña del admin y tomamos el control de su cuenta.
348Cuestionario de Inyecciones NoSQL
Pruebas de seguridad en APIs
6 clases
349Explotación de un endpoint usando la documentación
5:41
Aprendemos a identificar y aprovechar documentación expuesta para atacar una API.
350Parameter pollution en query string del servidor
9:52
Aprendemos a manipular parámetros en la URL para alterar peticiones del lado del servidor.
351Descubrimiento y explotación de un endpoint no usado
5:04
Aprendemos a explotar un endpoint oculto modificando el precio de un producto a través de una API mal diseñada.
352Explotación de Mass Assignment
5:01
Aprendemos a detectar y explotar una vulnerabilidad de tipo mass assignment para obtener descuentos no autorizados al comprar productos.
353Parameter pollution en URL REST del servidor
11:05
Abordamos una técnica avanzada para manipular rutas internas del servidor explotando una vulnerabilidad de tipo Server-Side Parameter Pollution en una API RESTful.
354Cuestionario de APIs
Explotación de LLMs en entornos web
8 clases
355Explotación de LLMs con agencia excesiva
4:37
Aprendemos a aprovechar los permisos indebidos de una API controlada por un modelo de lenguaje para ejecutar comandos peligrosos directamente en la base de datos.
356Explotación de vulnerabilidades en APIs de LLM
7:11
Aprendemos a ejecutar comandos del sistema mediante una API controlada por un modelo de lenguaje, aprovechando una vulnerabilidad de inyección de comandos OS.
357Inyección indirecta de prompts [1/3]
9:40
Aprendemos a influenciar las respuestas de un LLM manipulando fuentes de información externas como los comentarios de productos.
358Inyección indirecta de prompts [2/3]
10:01
Aprendemos a comprobar qué funciones puede ejecutar el LLM y cómo condicionarlas con comentarios camuflados.
359Inyección indirecta de prompts [3/3]
12:04
Aprendemos a eliminar la cuenta de otro usuario mediante una instrucción camuflada en un comentario que es procesado por el LLM.
360Explotación por manejo inseguro de salidas en LLMs [1/2]
7:40
Aprendemos a insertar cargas XSS en comentarios para comprobar si el LLM refleja la salida de forma insegura.
361Explotación por manejo inseguro de salidas en LLMs [2/2]
6:08
Aprendemos a ejecutar un XSS oculto en una reseña para que el LLM lo reproduzca y elimine la cuenta de otro usuario.
362Cuestionario de LLMs
Engaño a la caché web
6 clases
363Engaño a la caché por manipulación de rutas
7:11
Aprendemos a explotar diferencias en el mapeo de rutas para engañar al sistema de caché y robar datos de otro usuario.
364Engaño a la caché usando delimitadores en la ruta
6:46
Abusamos de cómo ciertos caracteres delimitadores son interpretados por el servidor y la caché para obtener datos sensibles de otro usuario.
365Engaño a la caché por normalización en el servidor origen
7:41
Descubrimos cómo la normalización del servidor y los prefijos estáticos permiten almacenar información sensible en caché y acceder a ella sin autenticación.
366Engaño a la caché por normalización en el servidor de caché
7:37
Aprovechamos cómo la caché y el servidor normalizan rutas de forma distinta para almacenar en caché la clave API de otro usuario.
367Engaño a la caché con reglas de coincidencia exacta
12:01
Explotamos cómo la caché trata rutas normalizadas con coincidencia exacta para capturar el token CSRF del administrador y cambiar su email.
368Cuestionario de caché web
Cuestionario de Tensada Máxima
1 clases
369Cuestionario de Tensada Máxima
Despedida
1 clases
370Clase final y certificado
4:33
Cerramos el curso con reflexiones, recomendaciones finales y el siguiente paso lógico en tu camino al hacking web.