0% encontró este documento útil (0 votos)
33 vistas16 páginas

Laboratorio 4

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 DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
33 vistas16 páginas

Laboratorio 4

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 DOCX, PDF, TXT o lee en línea desde Scribd

ITLA

2024B4 – Hacking Ético con Kali Linux

Nombre: Juan Alberto Marte Rodríguez

Fecha de Entrega: 21/11


Laboratorio 4

I. Contenedores y Docker.

Los contenedores son un método ligero, portátil y eficiente para empaquetar aplicaciones de
software y sus dependencias, lo que les permite ejecutarse de manera consistente en distintos entornos
informáticos. Encapsulan el código de la aplicación, el tiempo de ejecución, las herramientas del sistema,
las bibliotecas y la configuración en una sola unidad. A diferencia de las máquinas virtuales tradicionales
(VM), que incluyen una pila completa del sistema operativo, los contenedores comparten el kernel del
SO del sistema host, lo que resulta en una menor sobrecarga y tiempos de inicio más rápidos.

Una de las principales razones por las que los contenedores se consideran seguros es su mecanismo de
aislamiento. Cada contenedor opera dentro de su propio entorno aislado, lo que garantiza que los
procesos que se ejecutan dentro de un contenedor no puedan interferir con los que se ejecutan en otros
contenedores o en el sistema host. Este aislamiento se logra mediante tecnologías como espacios de
nombres y grupos de control (cgroups), que restringen el acceso de un contenedor a los recursos del
sistema.

Los contenedores también emplean un sistema de archivos en capas, donde los cambios realizados en
un contenedor durante el tiempo de ejecución se almacenan en capas separadas de la imagen
subyacente. Este enfoque de "copia en escritura" garantiza que la imagen original permanezca sin
cambios, lo que facilita la gestión y distribución de contenedores al tiempo que minimiza el riesgo de
alteración o corrupción.

En comparación con las máquinas virtuales, los contenedores ofrecen varias ventajas. En primer lugar,
los contenedores son más ligeros, ya que no requieren un kernel de SO independiente para cada
instancia. Esta menor sobrecarga se traduce en una mejor utilización de recursos y escalabilidad, lo que
permite una mayor densidad de aplicaciones contenedorizadas en un solo host. Además, los
contenedores suelen tener tiempos de inicio más rápidos y una menor huella de memoria en
comparación con las máquinas virtuales.

Los contenedores también son más portátiles que las máquinas virtuales, ya que se pueden implementar
fácilmente en diferentes entornos informáticos sin modificaciones. Esta portabilidad se facilita gracias a
plataformas de orquestación de contenedores como Kubernetes, que permiten la implementación, el
escalado y la gestión automatizados de aplicaciones contenedorizadas en entornos híbridos y multicloud.

Docker es una de las plataformas de contenedorización más populares, conocida por su simplicidad y
facilidad de uso. Proporciona herramientas para construir, enviar y ejecutar contenedores, lo que
permite a los desarrolladores empaquetar sus aplicaciones en unidades estandarizadas llamadas
imágenes de Docker. Las imágenes de Docker se construyen a partir de un Dockerfile, que especifica las
dependencias y la configuración de la aplicación. Estas imágenes luego se pueden distribuir y ejecutar de
manera consistente en diferentes entornos utilizando Docker Engine.

Docker también ofrece un registro centralizado llamado Docker Hub, donde los usuarios pueden
almacenar y compartir imágenes de Docker de forma pública o privada. Esto permite la colaboración y
reutilización de imágenes de contenedor preconstruidas, acelerando el proceso de desarrollo e
implementación.

Pasos para instalar Docker:

kali@kali:~$ sudo apt update

kali@kali:~$ sudo apt install -y docker.io

kali@kali:~$ sudo systemctl enable docker --now

kali@kali:~$ docker

kali@kali:~$ sudo usermod -aG docker $USER

kali@kali:~$ newgrp docker

Ref: https://www.kali.org/docs/containers/installing-docker-on-kali/

II. OWASP ZAP.

ZAP (anteriormente conocido como OWASP ZAP, por Open Web Application Security Project Zed
Attack Proxy) es un escáner de seguridad de aplicaciones web y una herramienta de pruebas de
penetración de código abierto ampliamente utilizado. Ofrece a desarrolladores, probadores de seguridad
y organizaciones un conjunto completo de funciones para detectar y mitigar vulnerabilidades de
seguridad en aplicaciones web.

En esencia, ZAP funciona como un servidor proxy que intercepta e inspecciona el tráfico HTTP y HTTPS
entre un navegador web y una aplicación web. Esta capacidad de interceptación permite a ZAP
identificar una amplia gama de problemas de seguridad, que incluyen, pero no se limitan a:

Ataques de inyección: ZAP puede detectar y prevenir vulnerabilidades de inyección comunes como la
inyección SQL, el script entre sitios (XSS) y la inyección de comandos mediante el análisis de parámetros
de entrada y cargas útiles. Autenticación deficiente: ZAP puede identificar debilidades en los
mecanismos de autenticación, la gestión de sesiones y el manejo de contraseñas, ayudando a los
desarrolladores a proteger los procesos de autenticación de usuarios. Script entre sitios (XSS): ZAP puede
detectar y mitigar las vulnerabilidades XSS mediante el análisis del código JavaScript y el contenido HTML
para detectar posibles puntos de inyección. Referencias directas a objetos inseguras (IDOR): ZAP puede
identificar configuraciones incorrectas y fallas en los mecanismos de control de acceso que podrían
conducir al acceso no autorizado a datos o recursos sensibles. Configuraciones de seguridad incorrectas:
ZAP puede identificar configuraciones de seguridad comunes incorrectas en servidores web, marcos y
componentes de aplicaciones, ayudando a las organizaciones a cumplir con las mejores prácticas de
seguridad. Falsificación de solicitudes entre sitios (CSRF): ZAP puede detectar y prevenir ataques CSRF
mediante el análisis de solicitudes HTTP y asegurando la validación adecuada de solicitudes de origen
cruzado. Encabezados de seguridad: ZAP puede evaluar la presencia y eficacia de los encabezados de
seguridad como la Política de seguridad de contenido (CSP), Strict-Transport-Security (HSTS) y X-Content-
Type-Options, ayudando a las organizaciones a mejorar su postura de seguridad de aplicaciones web.

Además de las funciones de escaneo automático, ZAP proporciona un conjunto amplio de herramientas
y utilidades de prueba manual para análisis y pruebas de seguridad avanzadas. Estas incluyen una
interfaz de proxy interactiva, funcionalidad de rastreo y spidering, modos de escaneo activo y pasivo,
capacidades de fuzzing y soporte para scripts para personalizar y ampliar la funcionalidad de ZAP.

Pasos para instalar ZAP:

kali@kali:~$ sudo apt install zaproxy

kali@kali:~$ owasp-zap

III. OWASP Juice Shop.

OWASP Juice Shop es una aplicación web de código abierto desarrollada por el Open Web
Application Security Project (OWASP) que funciona como una aplicación deliberadamente insegura para
fines educativos y pruebas de seguridad. Está diseñada para simular un sitio de comercio electrónico
realista con una variedad de vulnerabilidades de seguridad comunes en las aplicaciones web. Al permitir
a los usuarios interactuar y explotar estas vulnerabilidades en un entorno controlado, Juice Shop busca
crear conciencia sobre los problemas de seguridad comunes en las aplicaciones web y promover las
mejores prácticas para el desarrollo y las pruebas seguras.
En esencia, OWASP Juice Shop ofrece una experiencia gamificada donde los usuarios pueden navegar a
través de diferentes niveles de desafíos, cada uno representando una vulnerabilidad de seguridad
específica o una categoría de vulnerabilidades. Estos desafíos van desde tareas simples como encontrar
información oculta o eludir las validaciones del lado del cliente hasta exploits más complejos como la
inyección SQL, el script entre sitios (XSS) y la autenticación deficiente.

Una de las características clave de OWASP Juice Shop es su extenso catálogo de desafíos de seguridad,
que cubren una amplia gama de temas, incluidos ataques de inyección, control de acceso deficiente,
exposición de datos confidenciales, configuraciones de seguridad incorrectas y más. Cada desafío está
acompañado de una descripción detallada, sugerencias y referencias a principios de seguridad relevantes
y documentación de OWASP, lo que lo convierte en un recurso invaluable para aprender y practicar
conceptos de seguridad de aplicaciones web.

Además de su valor educativo, OWASP Juice Shop también sirve como una herramienta práctica para
profesionales de seguridad, desarrolladores y organizaciones para evaluar y mejorar la seguridad de sus
aplicaciones web. Al ejecutar Juice Shop en un entorno de prueba, los equipos pueden realizar
evaluaciones de vulnerabilidades, pruebas de penetración y auditorías de seguridad para identificar y
remediar las debilidades antes de que sean explotadas por atacantes reales.

Pasos para instalar OWASP Juice Shop usando Docker:

kali@kali:~$ docker pull bkimminich/juice-shop


kali@kali:~$ docker run --rm -p 3000:3000 bkimminich/juice-shop

Pasos para instalar OWASP Juice Shop sin Docker (para el laboratorio):

kali@kali:~$ sudo apt install snapd


kali@kali:~$ service snapd start
kali@kali:~$ sudo snap install core
kali@kali:~$ sudo snap install nodejs-kali-linux --edge
kali@kali:~$ git clone https://github.com/juice-shop/juice-shop.git --depth 1
kali@kali:~$ cd juice-shop
kali@kali:~$ npm install
kali@kali:~$ npm start

Juice Shop se accede al ir a http://localhost:3000


IV. Ejemplo de Reporte de Vulnerabilidad.

Reporte de Vulnerabilidad de OWASP Juice Shop

Por Wendell Balbuena

Activo:
http://localhost:3000/#/ / OWASP Juice Shop | dominio | crítico

Debilidad:
Vulnerabilidad XXE Exploiteable
Severity:

(https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator?vector=AV:N/AC:L/PR:L/UI:R/S:U/C:L/I:N/A:L/E:F/
RL:W/RC:R&version=3.1)

Prueba de Concepto:
// Título
[Riesgo Potencial] Vulnerabilidad Exploiteable encontrada que permite ataques de XXE.

// Resumen Ejecutivo
Usando la herramienta proxy de OWASP, ZAP, pude encontrar una vulnerabilidad XXE que puede ser
bastante simple de aplicar para los actores maliciosos siempre que tengan acceso de usuario. Esta
vulnerabilidad aprovecha el analizador XML inseguro que se utiliza en la página de "Quejas" de su sitio
web, que permite a los usuarios cargar documentos como parte de su queja. El exploit utilizado en este
informe logró extraer información de contraseñas del servidor que aloja su sitio web.

// Pasos para Reproducir


Precondición:
Tener la última versión de Docker, OWASP Zap, and Juice Shop instaladas en su dispositivo (links abajo):
https://www.docker.com/products/docker-desktop/
https://owasp.org/www-project-juice-shop/
https://www.kali.org/tools/zaproxy/

1. Primero, inicia Juice Shop y abre el sitio web en tu navegador. Ten en cuenta que para usar
ZAP, debes configurarlo como tu proxy en el navegador, utilizar una extensión de proxy o
iniciarlo directamente a través de ZAP como se muestra en la imagen a continuación:

Presiona manual explore.

Llena el campo de texto de URL con la dirección de Juice Shop (default: http://localhost:3000/)
Estamos actualmente en Juice Shop usando ZAP como proxy.

1. Crea una cuenta o inicia sesión con cualquier usuario.


2. Visita: http://localhost:3000/#/complain , aquí puede escribir cualquier cosa que queramos en el
campo de texto, y después de eso Podemos proceder con el ataque.

3. Siguiente, queremos crear nuestro payload o carga maliciosa. Crea un archive XML file, colócalo
en un lugar fácil de acceder (yo elegí el directorio de escritorio, por ejemplo.) y escribe el
siguiente script dentro del archivo y guárdalo. Este payload, debido a debilidades en el manejo de
archivos de XML, pide las contraseñas de inicio de sesión del servidor, y el servidor responde con
ellas en el HTML Response correspondiente.

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE invoice [
<!ELEMENT invoice ANY>
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<invoice>
<message>&xxe;</message>
</invoice>
4. Ya tenemos nuestro payload. Ahora, vuelve a la página de quejas de Juice Shop y busque el
payload para adjuntarlo. Ten en cuenta que si lo guardaste en tu escritorio, la carpeta podría
aparecer vacía al principio. Simplemente haz clic en "Todos los tipos admitidos" y cámbialo a
"Todos los archivos".
5. Seleccione el payload y haga click en Open.

6. Presente su queja con el archivo adjunto. Si la ejecución del ataque fue exitosa, verá la
confirmación de finalización del desafío.
7. Para comprobar los resultados del ataque, podemos utilizar las herramientas de desarrollo del
navegador (DevTools) o ZAP. En este caso, usaremos ZAP. Busca la solicitud de subida de
documentos y examina la respuesta dando click hasta que abra.
Logramos obtener información del archivo "passwd" del servidor, lo cual revela una lista de
usuarios y otros datos confidenciales. Esta situación es crítica y necesita atención inmediata.

// Impacto
Dependiendo del uso del ataque XXE, este se puede emplear para realizar un reconocimiento más
profundo de una máquina, e incluso acciones más graves como la ejecución remota de código, ataques de
denegación de servicio, ataques SSRF y más. Ser vulnerable a este tipo de ataque puede llevar a la fuga
de información crítica y también puede ser utilizado por actores maliciosos para encontrar diferentes
vulnerabilidades dentro de su sistema. Este ataque pone en peligro la confidencialidad y la disponibilidad
de sus servicios.
// Remediación
Mi recomendación para mitigar esta vulnerabilidad XXE es deshabilitar completamente los archivos
XML como opción de envío de archivos o deshabilitar las características específicas de XML que lo
hacen vulnerable a estos ataques. Si opta por la segunda opción, le sugiero inhabilitar la resolución de
entidades externas y el soporte para XInclude. Estas dos acciones deberían ser efectivas para eliminar la
mayoría, si no todas, de las vulnerabilidades XXE.

V. **Ejecuta 3 vulnerabilidades en Juice Shop (revisa documentación y recursos en línea), y


documenta los pasos para hacerlos con screenshots y descripciones. [15pts]
Vulnerabilidades Comunes en Juice Shop:

1. Inyección SQL
o Descripción: Permite a un atacante interferir en las consultas que se hacen a la base de datos.
o Documentación:
 Usa un cliente SQL o herramientas de prueba para interceptar solicitudes y manipular
parámetros.
 Screenshot: Captura la solicitud HTTP donde inyectas el comando SQL.
2. Cross-Site Scripting (XSS)
o Descripción: Permite a los atacantes inyectar scripts en páginas vistas por otros usuarios.
o Documentación:
 Identifica un campo de entrada donde se refleje el contenido introducido y prueba introducir
código JavaScript.
 Screenshot: Captura el resultado en la consola del navegador o en la página donde se ejecutó el
script.
3. Autenticación Insegura
o Descripción: Puede permitir que un atacante eluda la autenticación o cobre acceso a funciones
no autorizadas.
o Documentación:
 Intenta explorar las rutas accesibles sin autenticación y documenta cualquier acceso no
autorizado que encuentres.
 Screenshot: Captura la página donde puedes acceder sin credenciales.

Pasos para Documentar

1. Captura de Pantalla (Screenshots):


o Usa herramientas de captura (como Snipping Tool, Greenshot, etc.) para tomar captures de las
interacciones.
2. Descripción Detallada:
o Escribe un breve resumen de cada vulnerabilidad, el impacto que puede tener y cómo se puede
explotar.
3. Entorno Controlado:
o Asegúrate de realizar estas pruebas únicamente en entornos de aprendizaje dedicados y
autorizados.
1. Inyección SQL

Vulnerabilidad: Inyección SQL en las consultas de búsqueda.


Comando: Si tienes instalado curl, puedes usar el siguiente comando para probar una inyección SQL.
bash
curl -X GET 'http://<URL_JUICE_SHOP>/api/Products?search=1%27%20OR%201%3D1--'
Descripción: Este comando intenta buscar productos mediante una inyección SQL. Si la aplicación
responde con datos, la inyección es efectiva.
2. Cross-Site Scripting (XSS)

Vulnerabilidad: XSS reflejada en el campo de búsqueda.


Comando: Puedes usar curl para simular la explotación de XSS.
bash
curl -X GET 'http://<URL_JUICE_SHOP>/search/?q=<script>alert("XSS")</script>'
Descripción: Este comando inyecta un script en el campo de búsqueda. Si en el navegador ves un alerta,
la vulnerabilidad XSS está presente.
3. Exposición de Credenciales

Vulnerabilidad: Acceso no autorizado a recursos.


Comando: Para probar el acceso a una ruta protegida sin autenticación:
bash
curl -X GET 'http://<URL_JUICE_SHOP>/api/orders'
Descripción: Este comando intenta acceder a la API de pedidos sin estar autenticado. Si puedes acceder,
significa que hay un problema de autorización.

También podría gustarte