Procedimiento de Auditoria Web (Pentesting)
1. Fase de Reconocimiento (Information Gathering)
Objetivo: Recopilar información sobre el objetivo sin interactuar directamente con el sistema.
Técnicas:
Reconocimiento Pasivo:
- WHOIS Lookup: Utiliza servicios como whois.domaintools.com para obtener detalles del registro del dominio, como el nombre del propietario, direcciones de correo, fechas de creación y expiración del dominio.
- DNS Enumeration: Usa herramientas como
nslookup
odig
para obtener información sobre los servidores DNS asociados con el dominio. - Google Dorking: Usa búsquedas avanzadas en Google para encontrar información oculta en la web. Por ejemplo,
site:tu-dominio.com
para buscar páginas indexadas. - Fingerprinting: Utiliza herramientas como Wappalyzer o BuiltWith para identificar las tecnologías utilizadas en la web (servidor web, frameworks, CMS, etc.).
Reconocimiento Activo:
- Port Scanning: Usa
Nmap
para escanear los puertos abiertos en el servidor web. Esto te ayuda a identificar servicios activos. Comando básico:nmap -sS -Pn tu-dominio.com
- Service Enumeration: Una vez que identifiques los puertos abiertos, usa
Nmap
oNetcat
para obtener más detalles sobre los servicios y versiones en esos puertos. Comando:nmap -sV -p80,443 tu-dominio.com
- Port Scanning: Usa
2. Análisis de Vulnerabilidades
Objetivo: Identificar vulnerabilidades en la aplicación web.
Técnicas:
Escaneo Automático:
- OWASP ZAP: Es una herramienta gratuita que te permite escanear tu aplicación en busca de vulnerabilidades comunes. Puedes configurarla para que automáticamente explore y ataque la web.
- Nikto: Es una herramienta de escaneo que revisa la configuración del servidor web y busca archivos y scripts potencialmente peligrosos. Comando básico:
nikto -h tu-dominio.com
- Burp Suite: Es una herramienta más avanzada que te permite interceptar y modificar el tráfico HTTP, así como realizar escaneos automáticos y manuales. Hay una versión gratuita y una paga.
Análisis Manual:
- Revisión del Código Fuente: Si tienes acceso al código, revisa manualmente buscando malas prácticas de seguridad (por ejemplo, entrada de usuario no validada).
- Inspección de Formularios: Prueba manualmente ingresando diferentes tipos de datos en los formularios para ver cómo la aplicación maneja la entrada. Por ejemplo, intenta ingresar código HTML o JavaScript en los campos de texto.
3. Explotación de Vulnerabilidades
Objetivo: Probar si las vulnerabilidades identificadas pueden ser explotadas.
Técnicas:
Inyección SQL:
- Usa herramientas como
SQLMap
para automatizar los ataques de inyección SQL. Comando básico:sqlmap -u "http://tu-dominio.com/product?id=1" --batch
- Manualmente, intenta agregar comillas simples o comentarios en los parámetros de la URL o formularios (
' OR '1'='1
).
- Usa herramientas como
Cross-Site Scripting (XSS):
- Intenta inyectar código JavaScript en formularios o URLs. Por ejemplo,
<script>alert('XSS')</script>
. Si el script se ejecuta, la aplicación es vulnerable. - Usa herramientas como
XSSer
para automatizar este proceso.
- Intenta inyectar código JavaScript en formularios o URLs. Por ejemplo,
CSRF (Cross-Site Request Forgery):
- Crea formularios maliciosos que intenten realizar acciones en la web en nombre del usuario autenticado. Por ejemplo:html
<form action="http://tu-dominio.com/change-password" method="POST"> <input type="hidden" name="password" value="newpassword"> <input type="submit" value="Submit"> </form>
- Crea formularios maliciosos que intenten realizar acciones en la web en nombre del usuario autenticado. Por ejemplo:
Directory Traversal:
- Intenta acceder a directorios y archivos fuera del directorio web raíz. Por ejemplo, accediendo a
http://tu-dominio.com/../../etc/passwd
si el servidor es Unix/Linux.
- Intenta acceder a directorios y archivos fuera del directorio web raíz. Por ejemplo, accediendo a
4. Post-Explotación
Objetivo: Evaluar el impacto de las vulnerabilidades explotadas.
Técnicas:
Escalación de Privilegios:
- Si lograste acceso inicial, intenta explotar otras vulnerabilidades para obtener mayores privilegios en el sistema. Por ejemplo, encontrar archivos de configuración con credenciales de administrador.
Extracción de Datos:
- Si accedes a la base de datos, intenta extraer datos sensibles como información de usuarios, contraseñas, etc.
Creación de Puertas Traseras:
- Intenta cargar un script malicioso que te permita acceder al sistema en el futuro, como un web shell.
5. Reporte y Mitigación
Objetivo: Documentar y mitigar las vulnerabilidades encontradas.
Procedimientos:
Documentación Detallada:
- Registra todas las vulnerabilidades, cómo las encontraste y cómo pueden ser explotadas. Incluye capturas de pantalla y pasos detallados.
Recomendaciones de Seguridad:
- Provee recomendaciones específicas para cada vulnerabilidad. Por ejemplo, para inyecciones SQL, recomienda usar consultas preparadas.
Informe Final:
- Crea un informe final que incluya un resumen ejecutivo (para no técnicos) y detalles técnicos (para el equipo de desarrollo).
Prácticas y Ética en el Pentesting
- Obtener Permisos: Siempre obtén permisos explícitos antes de realizar pruebas.
- No Interrumpir Servicios: Asegúrate de no causar interrupciones al servicio mientras realizas pruebas.
- Confidencialidad: Mantén la confidencialidad de toda la información que encuentres.
- Responsabilidad: Actúa de manera ética y profesional.
Herramientas Adicionales
- Wireshark: Para analizar el tráfico de red y detectar posibles vulnerabilidades en la comunicación.
- Nessus: Para un escaneo completo de vulnerabilidades en redes.
- OpenVAS: Otra opción gratuita para escaneo de vulnerabilidades.
Espero que esta guía más detallada y simplificada te ayude a comprender mejor cómo realizar un pentesting y a practicar de manera efectiva.