Writeups

2026.09.12

AWS Cloud Red Teaming — CWL Meta Tech Assessment

cloudawsred-teamwriteup

Cadena de ataque completa contra infraestructura AWS: bucket S3 público → fuga de .git → SSRF+RCE en PHP → robo de credenciales IMDSv1 → enumeración IAM y descubrimiento de confianza cross-account. Con guardrails de mitigación (SCP, IAM, detección).

2026.09.12

Azure Cloud Red Teaming — CWL Meta Tech Assessment

cloudazurered-teamwriteup

Cadena de ataque contra infraestructura Azure: subdominio expuesto → fuga de .git → SSRF+RCE → robo de JWT vía IMDS (Metadata:true) → enumeración de RBAC y Entra ID vía Management y Graph API. Con guardrails de mitigación.

2026.09.12

GCP Cloud Red Teaming — CWL Meta Tech Assessment

cloudgcpred-teamwriteup

Cadena de ataque contra infraestructura GCP: service account key filtrada en un repo público → acceso gcloud → SSRF+RCE en VM → robo de token OAuth2 vía metadata (Metadata-Flavor: Google) → enumeración de IAM y GCS. Con guardrails de mitigación.

2026.09.12

Cloud Red Teaming Multi-Cloud — Teoría vs Práctica (AWS / Azure / GCP)

cloudred-teamwriteupawsazuregcp

El patrón único de explotación cloud y sus tres dialectos: SSRF + Metadata Service → credenciales temporales → enumeración. Comparativa de headers IMDS, formatos de credenciales, IAM/RBAC y APIs de gestión, con la defensa común a los tres proveedores.

2026.09.12

Índice de Labs y Plataformas de Práctica

webtoolslabsctftraining

Catálogo organizado de laboratorios vulnerables y plataformas CTF para practicar explotación web, API security y testing de aplicaciones.

2026.09.12

CORS vulnerability with basic origin reflection

webcorsred-teamportswigger

Explotación de una configuración CORS insegura que refleja cualquier origen: robo de la API key del administrador mediante origin reflection con credenciales.

2026.09.12

CORS vulnerability with trusted null origin

webcorsred-teamportswigger

Explotación de una whitelist CORS que confía en el origen 'null': robo de la API key del administrador vía iframe sandboxed que serializa el origin como null.

2026.09.12

DOM XSS in jQuery selector sink using a hashchange event

webxssdom-xssred-teamportswigger

Inyección DOM XSS a través del evento hashchange: el selector jQuery $('section.blog-list h2:contains(...)') evalúa location.hash y permite construir un payload de dos valores que ejecuta print().

2026.09.12

CSRF vulnerability with no defenses

webcsrfred-teamportswigger

Cambio de email sin ninguna defensa CSRF: un formulario auto-submit alojado en el exploit server muta el email de la víctima aprovechando la cookie de sesión.

2026.09.12

Basic clickjacking with CSRF token protection

webclickjackingcsrfred-teamportswigger

Bypass de protección CSRF mediante clickjacking: un iframe transparente superpuesto a un señuelo hace que la víctima elimine su cuenta haciendo clic donde no cree.

2026.09.12

Clickjacking with a frame buster script

webclickjackingred-teamportswigger

Bypass del frame buster con el atributo sandbox: un iframe sin allow-scripts neutraliza el script anti-framing y permite clickjacking para cambiar el email.

2026.09.12

Authentication bypass via OAuth implicit flow

weboauthauthimplicit-flowred-teamportswigger

Bypass de autenticación abusando del flujo OAuth implícito: la app cliente confía en el email enviado a /authenticate sin vincularlo al access token, permitiendo suplantar la identidad de carlos.

2026.09.12

Forced OAuth profile linking

weboauthcsrfaccount-linkingred-teamportswigger

CSRF en el flujo de vinculación de perfil OAuth: ausencia del parámetro state permite forzar al admin a vincular el perfil social del atacante mediante un iframe con el code de oauth-linking.

2026.09.12

SSRF via OpenID dynamic client registration

weboauthssrfcloudred-teamportswigger

OpenID Dynamic Client Registration SSRF: el campo logo_uri de POST /reg es fetcheado por el proveedor OAuth, permitiendo leer el metadata IAM de la nube en 169.254.169.254.

2026.09.12

Stealing OAuth access tokens via an open redirect

weboauthopen-redirecttoken-theftred-teamportswigger

Robo de access tokens OAuth mediante open redirect: bypass del whitelist de redirect_uri con path traversal hacia /post/next?path= y captura del token en el fragment de la URL en el exploit server.

2026.09.12

JWT authentication bypass via algorithm confusion

webjwtauthalgorithm-confusionred-teamportswigger

Algorithm confusion RS256→HS256 explotando la clave pública RSA expuesta en /jwks.json: reutilización del material público como secreto HMAC para firmar un token de administrador.

2026.09.12

JWT authentication bypass via jwk header injection

webjwtauthjwk-header-injectionred-teamportswigger

jwk header injection: el servidor usa la clave de verificación embebida en el propio token (parámetro jwk) sin validar su origen, permitiendo firmar tokens con una clave RSA propia.

2026.09.12

JWT authentication bypass via kid header path traversal

webjwtauthkid-path-traversalpath-traversalred-teamportswigger

kid path traversal: el servidor lee la clave de verificación del filesystem usando el valor del header kid, permitiendo apuntar a /dev/null y firmar con el secreto vacío.

2026.09.12

JWT authentication bypass via unverified signature

webjwtauthred-teamportswigger

Bypass de autenticación por firma no verificada: el servidor no valida la firma de los JWTs, por lo que basta con modificar el claim sub (jwt_tool, base64 manual o jwtear) para acceder a /admin.

2026.09.12

JWT authentication bypass via weak signing key

webjwtauthweak-secretbrute-forcered-teamportswigger

Brute force de la clave de firma HS256 con hashcat (-m 16500) y rockyou: recuperado el secreto 'secret1', se firma un token de administrador con JWT Editor y se elimina a carlos.

2026.09.12

Limit overrun race conditions

webrace-conditionbusiness-logicred-teamportswigger

Explotación de una race condition de límite con single-packet attack: la validación del cupón se hace antes del uso, permitiendo aplicar el mismo descuento múltiples veces en paralelo.

2026.09.12

Multi-endpoint race conditions

webrace-conditionbusiness-logicred-teamportswigger

Cadena de race condition multi-endpoint: comprar gift cards en paralelo antes de que el checkout consolide el balance, acumulando crédito sin límite mediante una ventana de carrera entre endpoints.

2026.09.12

Single-endpoint race conditions

webrace-conditionaccess-controlauthred-teamportswigger

Race condition de un solo endpoint: dos solicitudes de cambio de email en paralelo compiten por el único registro pendiente y el token de una dirección termina en el correo de la otra, permitiendo apropiarse de la invitación de admin.

2026.09.12

Exploiting time-sensitive vulnerabilities

webrace-conditionauthhost-headerred-teamportswigger

Race condition time-sensitive sobre el reset de contraseña: eludir el session lock de PHP con sesiones distintas hace que dos requests en paralelo compartan el mismo token, apropiándose del reset de carlos.

2026.09.12

Partial construction race conditions

webrace-conditionaccess-controlauthred-teamportswigger

Explotación de una race condition de construcción parcial: entre la inserción del usuario y la asignación de su token de confirmación existe un null que se puede capturar enviando /confirm?token[]= en paralelo al registro.

2026.09.12

Modifying serialized objects

webdeserializationauthaccess-controlred-teamportswigger

Escalada de privilegios por modificación de un objeto PHP serializado en la cookie de sesión: voltear el flag admin de b:0 a b:1 concede acceso administrativo.

2026.09.12

Excessive trust in client-side controls

webbusiness-logicred-teamportswigger

Flaw de lógica de negocio: el precio se envía como parámetro del cliente. Añadir al carrito con price=1 compra el l33t leather jacket por 1 dólar.

2026.09.12

User ID controlled by request parameter

webaccess-controlidorauthred-teamportswigger

Escalada horizontal (IDOR) en la página de cuenta: el endpoint usa el parámetro id directamente para resolver el perfil, exponiendo la API key de otros usuarios.

2026.09.12

User role can be modified in user profile

webaccess-controlmass-assignmentauthred-teamportswigger

Escalada vertical por mass assignment: el endpoint de actualización de perfil acepta un campo roleid no declarado en la UI, elevando al usuario a roleid 2 para acceder al panel admin.

2026.09.12

SSRF with whitelist-based input filter

webssrfred-teamportswigger

Bypass de filtro SSRF con whitelist de dominio usando el patrón userinfo '@': la URL se normaliza en el cliente y resuelve a localhost dentro de la whitelist.

2026.09.12

Exploiting path delimiters for web cache deception

webcache-deceptionred-teamportswigger

Web cache deception con delimitadores de path: ; convierte /my-account en un asset estático .js para la caché mientras el origin sigue sirviendo la página de cuenta, cacheando la API key de carlos.

2026.09.12

Exploiting path mapping for web cache deception

webcache-deceptionred-teamportswigger

Web cache deception por path mapping: las rutas que terminan en .js se cachean (max-age=30) aunque el origin las sirva como páginas dinámicas; se captura la API key de carlos cacheando /my-account.

2026.09.12

Basic password reset poisoning

webhost-headerauthred-teamportswigger

Password reset poisoning vía Host header: el enlace de reset se construye con el Host de la request, redirigiendo el token hacia el servidor del atacante para tomar la cuenta de carlos.

2026.09.12

Host header authentication bypass

webhost-headeraccess-controlauthred-teamportswigger

Bypass de autenticación por Host header: la app decide el privilegio según el valor de Host, por lo que /admin con Host: localhost otorga acceso y permite eliminar a carlos.

2026.09.12

OS command injection, simple case

webcommand-injectionrcered-teamportswigger

Inyección de comandos en el stock checker: el campo storeId se concatena en un shell command y &&whoami revela el usuario del proceso, confirmando RCE sin filtrado.

2026.09.12

CRTA Lab — Multi-Tier Active Directory Attack Chain (warfare.corp)

red-teamwindowsactive-directorywriteupcloud

Cadena de compromiso del dominio warfare.corp: command injection en web pública → credenciales en /etc/passwd y bookmarks de Firefox → pivote con ligolo-ng → dump LSA → compromiso del child DC → Golden Ticket con extra-SID sobre el dominio padre. Con guardrails de mitigación.

2026.09.12

CRTA Lab 2 — SSRF file:// → GTFOBins → DCSync (ent.corp)

red-teamwindowsactive-directorywriteupweb

Cadena de compromiso del dominio ent.corp: SSRF con file:// en Flask → credenciales en claro → SSH → escalada vía sudo vi (GTFOBins) → pivot desde Docker y logs → elFinder expuesto → sync_user con DCSync → Pass-the-Hash sobre el DC. Con guardrails de mitigación.

2026.07.17

Guess the Word — Minimax con Eliminación de Candidatos

algorithmsminimaxgame-theoryleetcode

Resolución del problema Guess the Word de LeetCode usando el algoritmo Minimax con poda de candidatos. Una demostración práctica de teoría de juegos aplicada a la búsqueda de palabras secretas.