[[hack_roadmap-0|Up]]
====== Pruebas de Penetración en Aplicaciones Web ======
Las pruebas de penetración en aplicaciones web, también conocidas como
pentesting web, son esenciales para identificar y mitigar vulnerabilidades en
aplicaciones web. Este proceso involucra una serie de pasos para evaluar la
seguridad de la aplicación desde la perspectiva de un atacante.
===== Introducción a las Pruebas de Penetración en Aplicaciones Web =====
==== Conceptos Clave: ====
* **Aplicaciones Web:** Programas accesibles a través de un navegador web que interactúan con servidores web.
* **Vulnerabilidades:** Debilidades en el código o configuración que pueden ser explotadas.
* **Metodologías:** Marcos y guías que estructuran el proceso de pruebas.
==== Recursos: ====
* [[https://owasp.org/www-project-web-security-testing-guide/|OWASP Web Security Testing Guide (WSTG)]]
* [[https://owasp.org/www-project-top-ten/|OWASP Top Ten]]
===== Preparación y Reconocimiento =====
==== Definición del Alcance: ====
* Establecer los límites y objetivos de las pruebas.
* Identificar las aplicaciones y servicios web que serán evaluados.
==== Recopilación de Información: ====
* **Pasiva:** Recopilar información sin interactuar directamente con la aplicación (ej., WHOIS, DNS, búsqueda en motores de búsqueda).
* **Activa:** Interactuar directamente con la aplicación para obtener información detallada (ej., análisis de las respuestas HTTP, identificación de tecnologías utilizadas).
==== Herramientas de Recopilación: ====
* **WHOIS:** Consultar información de registro de dominios.
* **Nslookup/Dig:** Consultar registros DNS.
* **WhatWeb:** Identificar tecnologías utilizadas en la aplicación web.
* **BuiltWith:** Herramienta en línea para identificar tecnologías web.
==== Recursos: ====
* [[https://github.com/urbanadventurer/WhatWeb|WhatWeb Documentation]]
* [[https://builtwith.com/|BuiltWith Website]]
===== Escaneo y Enumeración =====
==== Escaneo de Vulnerabilidades: ====
* Utilizar herramientas automatizadas para identificar vulnerabilidades conocidas en la aplicación web.
* Herramientas: **Nikto**, **OpenVAS**, **Nessus**
nikto -h
==== Enumeración de Directorios y Archivos: ====
* Identificar directorios y archivos ocultos o no documentados que pueden ser explotados.
* Herramientas: **DirBuster**, **Gobuster**
gobuster dir -u -w
==== Análisis de Seguridad de SSL/TLS: ====
* Verificar la configuración de SSL/TLS para identificar debilidades en la implementación.
* Herramientas: **SSL Labs SSL Test**, **testssl.sh**
testssl.sh
==== Recursos: ====
* [[https://cirt.net/Nikto2|Nikto Documentation]]
* [[https://github.com/OJ/gobuster|Gobuster GitHub]]
===== Identificación y Explotación de Vulnerabilidades =====
==== Vulnerabilidades Comunes: ====
* **Inyección SQL (SQLi):** Permite a un atacante manipular las consultas SQL realizadas por la aplicación.
* **Cross-Site Scripting (XSS):** Permite a un atacante inyectar scripts maliciosos en páginas vistas por otros usuarios.
* **Cross-Site Request Forgery (CSRF):** Permite a un atacante realizar acciones en nombre de otro usuario.
* **Inyección de Comandos:** Permite a un atacante ejecutar comandos del sistema en el servidor.
==== Explotación de Vulnerabilidades: ====
* Utilizar herramientas y técnicas para explotar vulnerabilidades identificadas.
* Herramientas: **SQLMap** (SQLi), **Burp Suite** (XSS, CSRF), **Commix** (Inyección de Comandos)
==== Ejemplos de Uso: ====
* **SQLMap:**
sqlmap -u --batch --dbs
* **Burp Suite (para XSS):**
* Interceptar la solicitud y modificar los parámetros para inyectar scripts.
* Utilizar la herramienta de repetición para probar diferentes cargas útiles.
* **Commix:**
commix --url= --data=""
==== Recursos: ====
* [[http://sqlmap.org/|SQLMap Official Website]]
* [[https://github.com/commixproject/commix|Commix GitHub]]
===== Post-Explotación =====
==== Mantener el Acceso: ====
* Establecer persistencia en la aplicación comprometida para mantener el acceso.
* Herramientas: **Web Shells**, **Metasploit**
==== Elevación de Privilegios: ====
* Aumentar los privilegios del atacante dentro de la aplicación o el servidor.
* Técnicas: **Bypassing Authentication**, **Exploit Development**
==== Recopilación de Información: ====
* Extraer información sensible y crítica del sistema comprometido.
* Herramientas: **Mimikatz** (si se ha comprometido el servidor subyacente)
==== Recursos: ====
* [[https://www.offensive-security.com/metasploit-unleashed/|Metasploit Unleashed]]
===== Análisis y Reporte de Resultados =====
==== Documentación de Hallazgos: ====
Describir detalladamente las vulnerabilidades encontradas, incluyendo cómo
fueron explotadas y el impacto potencial.
==== Recomendaciones: ====
Proporcionar recomendaciones específicas para mitigar cada vulnerabilidad
identificada.
==== Presentación del Informe: ====
Crear un informe claro y conciso para los stakeholders, incluyendo resumen
ejecutivo, detalles técnicos y pasos para la remediación.
==== Recursos: ====
* [[https://github.com/0x4D31/pentest_report|Sample Penetration Testing Report]]
===== Conclusión =====
Las pruebas de penetración en aplicaciones web son cruciales para identificar y
mitigar vulnerabilidades que podrían ser explotadas por atacantes. Al seguir una
metodología estructurada y utilizar herramientas adecuadas, los pentesters
pueden descubrir debilidades en la seguridad de las aplicaciones web y ayudar a
mejorar la postura de seguridad general de una organización. Dominar estas
técnicas es esencial para cualquier profesional en el campo de la seguridad
informática y el hacking ético.
===== Recursos Adicionales =====
* [[https://owasp.org/www-project-top-ten/|OWASP Top 10]] (OWASP)