Curso Ciberseguridad: Pentesting y Vulnerabilidades
Curso Ciberseguridad: Pentesting y Vulnerabilidades
CIBERSEGURIDAD
Especialidad Administración de
Sistemas de Ciberseguridad
Taller 1
Unidad 5. Seguridad en
administración de sistemas
1
Contenidos
1 PENTESTING WEB 4
2
INSTALACIÓN Y CONFIGURACIÓN DE 6
JUICE SHOP
VULNERABILIDAD DIRECTORY 23
3
TRAVERSAL
Unidad 1
Introducción a la tecnología
Contenidos
VULNERABILIDAD FALLO DE 33
6
AUTENTICACIÓN E IDENTIFICACIÓN
Unidad 1
Unidad 1
Introducción a la tecnología
4
1 PENTESTING WEB
En esta práctica realizarás la instalación del entorno de hacking Juice shop, una máquina creada para practicar y
realizar pruebas de ataques a páginas web.
Unidad 5
Taller 1
5
INSTALACIÓN Y
CONFIGURACIÓN
2
DE JUICE SHOP
Unidad 1
Introducción a la tecnología
6
2 INSTALACIÓN Y CONFIGURACIÓN DE JUICE SHOP
• Descarga el entorno de Juice Shop en la máquina Kali Linux. Lo más recomendable es hacerlo utilizando [Link].
▪ Juice Shop funciona con diferentes versiones de [Link], por lo que instalarás la versión más reciente ([Link]
vs16).
▪ Para ello, primero deberás abrir la máquina virtual Kali Linux.
▪ Después, deberás instalar Node Version Manager (nvm), un script bash creado para administrar múltiples
versiones de [Link] y no saturar el sistema operativo con paquetes innecesarios.
• Abre una terminal en la máquina Kali Linux y descarga el siguiente script con el comando desde Kali: curl -o-
[Link] | bash.
Unidad 5
Taller 1
7
2 INSTALACIÓN Y CONFIGURACIÓN DE JUICE SHOP
Unidad 5
Taller 1
8
2 INSTALACIÓN Y CONFIGURACIÓN DE JUICE SHOP
Unidad 5
Taller 1
9
2 INSTALACIÓN Y CONFIGURACIÓN DE JUICE SHOP
• Reinicia el terminal para aplicar los cambios realizados por el script. A continuación, verifica la versión instalada de
NVM y después ya puedes instalar la última versión de [Link]
• Utiliza el siguiente comando para verificar la versión instalada: nvm -v
Unidad 5
Taller 1
10
2 INSTALACIÓN Y CONFIGURACIÓN DE JUICE SHOP
• Utiliza el siguiente comando para instalar la última versión: nvm install –lts
Unidad 5
Taller 1
11
2 INSTALACIÓN Y CONFIGURACIÓN DE JUICE SHOP
• Utiliza el siguiente comando para verificar la última versión instalada actualizada: node --version
Unidad 5
Taller 1
12
2 INSTALACIÓN Y CONFIGURACIÓN DE JUICE SHOP
• Una vez configurado lo anterior, instala el entorno Juice Shop. Para ello, accede al enlace.
▪ Haz clic en la carpeta Files, donde podrás descargar la última versión.
Unidad 5
Taller 1
13
2 INSTALACIÓN Y CONFIGURACIÓN DE JUICE SHOP
▪ Identifica el sistema operativo que vas a utilizar y qué versión de [Link] dispones.
Unidad 5
Taller 1
14
2 INSTALACIÓN Y CONFIGURACIÓN DE JUICE SHOP
• En este caso, descarga la versión para Linux con la versión 16 de [Link] anterior. Aunque la versión de Juicy Shop,
según la imagen, es la 14, podrás ver la versión de [Link] dentro de cada una de las carpetas, como se muestra en
la imagen siguiente. Si quieres emplearlo en un sistema operativo diferente al Kali Linux de la máquina virtual,
descarga la opción adecuada.
Unidad 5
Taller 1
15
2 INSTALACIÓN Y CONFIGURACIÓN DE JUICE SHOP
• Una vez completada la descarga, se abrirá una ventana emergente en la que deberás seleccionar la opción Save File.
Pulsa en OK.
• A no ser que hayas indicado otra ruta, el archivo se habrá almacenado por defecto en el directorio «Descargas». En
nuestro caso, lo hemos dejado en «Descargas», sin embargo, lo conveniente es que muevas el archivo a otro
directorio, donde estés almacenando la información de este curso. Abre una terminal en la máquina Kali Linux y
accede a la carpeta donde hayas dejado el archivo, como hemos comentado, en nuestro caso «Descargas».
Unidad 5
Taller 1
18
2 INSTALACIÓN Y CONFIGURACIÓN DE JUICE SHOP
• Dentro de la carpeta, descomprime el archivo antes descargado que tiene una extensión .tgz. Se descomprime
utilizando el comando tar -xzf juice-shop-14.1.1_node16_linux_x64.tgz
Unidad 5
Taller 1
19
2 INSTALACIÓN Y CONFIGURACIÓN DE JUICE SHOP
• Tras completar la descarga, accede a la carpeta de Juice shop para ejecutar esta herramienta.
Unidad 5
Taller 1
20
2 INSTALACIÓN Y CONFIGURACIÓN DE JUICE SHOP
• A continuación, se notificará un mensaje que indica que el servidor está escuchando en el puerto 3000. Abre el
navegador con la IP del localhost ([Link]) y el puerto anteriormente mencionado (3000).
Ilustración 16: IP del localhost ([Link]) y el puerto 3000 en la barra del navegador.
Unidad 5
Taller 1
22
VULNERABILIDAD
DIRECTORY
3
TRAVERSAL
Unidad 1
Introducción a la tecnología
23
3 VULNERABILIDAD DIRECTORY TRAVERSAL
Un directory traversal o path traversal consiste en explotar una vulnerabilidad que ocurre cuando no existe suficiente
seguridad en cuanto a la validación de un usuario, permitiéndole acceder a cualquier tipo de directorio sin ningún control.
La finalidad de este ataque es acceder a un archivo al que no se debería poder acceder o no debería ser accesible y se
basa en la falta de seguridad en el código o mala configuración.
En este caso, lanzarás la herramienta Dirbuster, que funciona mediante fuerza bruta, probando todos los directorios
típicos de una página web. Para ello, configurarás una terminal de la máquina Kali Linux, ejecutarás el comando dirb y
añadirás la dirección http de la aplicación Juice Shop.
Unidad 5
Taller 1
24
3 VULNERABILIDAD DIRECTORY TRAVERSAL
Unidad 5
Taller 1
25
3 VULNERABILIDAD DIRECTORY TRAVERSAL
• Con este resultado, observa que se encuentran varios directorios que no deberían ser accesibles, entre ellos, el
directorio «[Link]», un archivo que se encuentra en la raíz de un sitio web e indica a qué partes no quieren que
accedan los rastreadores de los motores de búsqueda. Una buena configuración de la página web no mostraría este
directorio, ya que no debería ser accesible.
Unidad 5
Taller 1
26
ENUNCIADO
4
EJERCICIO
PRÁCTICO 1
Unidad 1
Introducción a la tecnología
27
4 ENUNCIADO EJERCICIO PRÁCTICO 1
Unidad 5
Taller 1
28
SOLUCIONARIO
5
EJERCICIO
PRÁCTICO 1
Unidad 1
Introducción a la tecnología
29
5 SOLUCIONARIO EJERCICIO PRÁCTICO ACTIVIDAD 1
• En el directorio «[Link]» indica que está deshabilitado el directorio «/ftp», lo que puede tratarse de un directorio al
que el creador de la web no quiere que se acceda porque puede contener información privada.
Unidad 5
Taller 1
30
5 SOLUCIONARIO EJERCICIO PRÁCTICO ACTIVIDAD 1
• Como sabemos, esta página tiene una mala configuración. Por tanto, al entrar en el directorio «/ftp», aparecen varios
archivos con datos sensibles que no deberían ser accesibles, entre ellos, uno denominado «[Link]», que podría ser
información confidencial de esta web.
Unidad 5
Taller 1
32
VULNERABILIDAD
6
FALLO DE
AUTENTICACIÓN E
IDENTIFICACIÓN
Unidad 1
Introducción a la tecnología
33
6 VULNERABILIDAD FALLO DE AUTENTICACIÓN E IDENTIFICACIÓN
Unidad 5
Taller 1
35
6 VULNERABILIDAD FALLO DE AUTENTICACIÓN E IDENTIFICACIÓN
Unidad 5
Taller 1
36
6 VULNERABILIDAD FALLO DE AUTENTICACIÓN E IDENTIFICACIÓN
• Una vez añadida, aparecerá un icono en la parte superior derecha, donde se desplegará un menú. Haz clic en
«Options».
Unidad 5
Ilustración 29: Botón de cierre en la ventana de actualización. Taller 1
42
6 VULNERABILIDAD FALLO DE AUTENTICACIÓN E IDENTIFICACIÓN
• Una vez abierto BurpSuite, inicia el ataque. Para ello, accede antes a la página de Login de nuestra Juice Shop.
Unidad 5
Taller 1
43
6 VULNERABILIDAD FALLO DE AUTENTICACIÓN E IDENTIFICACIÓN
• Activa el proxy antes instalado pulsando en el icono que está en la esquina superior derecha del navegador y
seleccionando la opción BurpSuite antes configurada.
Unidad 5
Taller 1
45
6 VULNERABILIDAD FALLO DE AUTENTICACIÓN E IDENTIFICACIÓN
Unidad 5
Taller 1
46
6 VULNERABILIDAD FALLO DE AUTENTICACIÓN E IDENTIFICACIÓN
Unidad 5
Taller 1
47
6 VULNERABILIDAD FALLO DE AUTENTICACIÓN E IDENTIFICACIÓN
• Para llevar a cabo este ataque de fuerza bruta, necesitamos un diccionario de contraseñas. A continuación, crearás tu
propio diccionario, aunque existen varios ya creados que también podrías utilizar.
▪ Para ello, accede a la terminal Kali y crea un documento denominado [Link] por medio del comando
nano.
Unidad 5
Taller 1
49
6 VULNERABILIDAD FALLO DE AUTENTICACIÓN E IDENTIFICACIÓN
• Aparecerá un documento donde copiarás las contraseñas más típicas y dónde podrás incluir las que tú quieras. Por
ejemplo, puedes copiar las siguientes:
▪ admin ▪ user ▪ cloud1234
▪ root ▪ sploitme ▪ r00t123
▪ toor ▪ whoami ▪ bob
▪ password ▪ password0 ▪ 123123
▪ password123 ▪ vagrant
▪ adminadmin ▪ pass123
▪ admin123 ▪ password1234
▪ msfadmin ▪ ilovei
▪ postgres ▪ testing
Ilustración 37: Listado
de contraseñas típicas.
Unidad 5
Taller 1
50
6 VULNERABILIDAD FALLO DE AUTENTICACIÓN E IDENTIFICACIÓN
Ilustración 38:
Submenú Payloads.
Unidad 5
Taller 1
51
6 VULNERABILIDAD FALLO DE AUTENTICACIÓN E IDENTIFICACIÓN
Unidad 5
Taller 1
52
6 VULNERABILIDAD FALLO DE AUTENTICACIÓN E IDENTIFICACIÓN
• Una vez cargado, haz clic en la opción «Start attack» y empezará a realizar el ataque de fuerza bruta.
• Cuando haya terminado el ataque, verás que ha encontrado la contraseña del usuario, ya que reporta como Status un
código 200, que quiere decir que la solicitud ha tenido éxito.
Unidad 5
Taller 1
56
6 VULNERABILIDAD FALLO DE AUTENTICACIÓN E IDENTIFICACIÓN
• Ahora sabes que la contraseña de este usuario es admin123, con lo que ya puedes acceder suplantándole, con el
agravante de que este usuario tiene permisos de administrador.
Unidad 5
Taller 1
57
7
ENUNCIADO
EJERCICIO
PRÁCTICO 2
Unidad 1
Introducción a la tecnología
58
7 ENUNCIADO EJERCICIO PRÁCTICO 2
Unidad 5
Taller 1
59
8
SOLUCIONARIO
EJERCICIO
PRÁCTICO 2
Unidad 1
Introducción a la tecnología
60
8 SOLUCIONARIO EJERCICIO PRÁCTICO 2
Unidad 5
Taller 1
61
8 SOLUCIONARIO EJERCICIO PRÁCTICO 2
Unidad 5
Taller 1
63
8 SOLUCIONARIO EJERCICIO PRÁCTICO 2
• Ahora enviarás esta petición dentro de BurpSuite en el menú Reapeter. Para ello, haz doble clic sobre la petición y
selecciona Send to Repeater.
Unidad 5
Taller 1
65
8 SOLUCIONARIO EJERCICIO PRÁCTICO 2
Unidad 5
Ilustración 48: Campos a cumplimentar. Taller 1
66
8 SOLUCIONARIO EJERCICIO PRÁCTICO 2
• Como podemos ver en la imagen de la diapositiva anterior, en el campo email nos aparece únicamente la palabra
«admin» y no sigue el formato típico de «texto@dominio», porque el servidor no realiza este tipo de comprobaciones.
En una programación segura sí se comprueba que la información facilitada sigue un formato concreto además de una
longitud fija; sin embargo, como esta aplicación está desarrollada para ser vulnerable y realizar pruebas, no se
realizan estas comprobaciones y por tanto, no es preciso que el email siga el formato estándar de los correos
electrónicos.
• Una vez añadido todos estos campos, haz clic en Send y aparecerá una respuesta positiva.
Unidad 5
Taller 1
67
8 SOLUCIONARIO EJERCICIO PRÁCTICO 2
Unidad 5
Ilustración 49: Ubicación del botón Send. Taller 1
68
8 SOLUCIONARIO EJERCICIO PRÁCTICO 2
• Al volver a la página de inicio de Juice Shop, observarás que has conseguido otro logro.
Unidad 5
Taller 1
69
9
VULNERABILIDAD
INYECCIÓN XSS
Unidad 1
Introducción a la tecnología
70
9 VULNERABILIDAD INYECCIÓN XSS
Las inyecciones más comunes son las inyecciones SQL y NoSQL, la inyección de comandos, inyección LDAP y Cross-
Site Scripting (XSS). Este tipo de ataques pueden ocurrir cuando:
• Los datos suministrados por el usuario no son validados, filtrados o saneados por la aplicación.
• Las consultas dinámicas o las llamadas no parametrizadas sin escape de contexto se utilizan directamente en la base
de datos. Una consulta dinámica es una consulta que se genera de forma dinámica –en ese momento- cuando se
quiere ejecutar, en contraposición de las consultas estáticas, que ya están elaboradas de antemano y no es posible
modificarlas. Las consultas o llamadas no parametrizadas hacen referencia al uso de cadenas de texto
concatenadas, es decir, unidas, donde se une el valor de la variable como cadena.
• Los datos se utilizan dentro de los parámetros de búsqueda del mapeo objeto-relacional (ORM) para extraer registros
adicionales y sensibles. El mapeo objeto-relacional consiste en una técnica de programación que permite convertir
datos del sistema utilizados por los lenguajes de programación orientado a objetos al que se utiliza por las bases de
datos relacionales.
Unidad 5
Taller 1
71
9 VULNERABILIDAD INYECCIÓN XSS
Para realizar estas inyecciones debes tener en cuenta cómo está creada la página web, es decir, que tipo de lenguaje
de programación utiliza y que tipo de base de datos usa.
En este caso, utiliza un lenguaje de programación JavaScript y tiene una base de datos SQL, por lo que basarás las
inyecciones en estos datos.
Ahora vas a probar una inyección XSS, que permite a los atacantes colocar secuencias de comandos maliciosas en
páginas web aprovechándose de malas prácticas en el código de la página web y así conseguir información confidencial
o escalar privilegios.
Unidad 5
Taller 1
72
9 VULNERABILIDAD INYECCIÓN XSS
• Para poder realizar esta inyección, trata de encontrar zonas de una página web donde un valor que introduzcas
aparezca reflejado, es decir, que dé una respuesta. En este caso, utilizarás el campo de búsqueda.
Unidad 5
Taller 1
73
9 VULNERABILIDAD INYECCIÓN XSS
Unidad 5
Taller 1
74
9 VULNERABILIDAD INYECCIÓN XSS
Unidad 5
Taller 1
75
9 VULNERABILIDAD INYECCIÓN XSS
• Este código provocaría que se ejecute la función alert() de JavaScript que hace que el navegador muestre un pop-up
o ventana emergente con el texto indicado dentro del paréntesis de alert, en nuestro caso «XSS».
Unidad 5
Taller 1
76
10
ENUNCIADO
EJERCICIO
PRÁCTICO 3
Unidad 1
Introducción a la tecnología
77
10 ENUNCIADO EJERCICIO PRÁCTICO 3
Unidad 5
Taller 1
78
11
SOLUCIONARIO
EJERCICIO
PRÁCTICO 3 Unidad 1
Introducción a la tecnología
79
11 SOLUCIONARIO EJERCICIO PRÁCTICO 3
• SQL (Structured Query Language) es un lenguaje utilizado en programación que sirve para administrar y recuperar
información que está recogida en un sistema de gestión de bases de datos. La inyección SQL se aprovecha de una
mala configuración de las consultas a la base de datos, ya que produce una mala validación del texto de entrada. A
continuación, se muestra un ejemplo de lo que sería una consulta de la base de datos SQL.
SELECT id
FROM tabla_usuarios
WHERE usuario='$usuario' AND pass='$pass';
Unidad 5
Taller 1
80
11 SOLUCIONARIO EJERCICIO PRÁCTICO 3
• Si se permite hacer una consulta concatenada, entonces se puede inyectar código SQL adicional y permitir, por
ejemplo, acceder al sistema con un usuario del que no se sabe la contraseña. Probaremos con el usuario admin.
SELECT id
FROM tabla_usuarios
WHERE usuario='admin' AND pass=''or '1'='1'; (Que es lo mismo que ‘OR TRUE;)
Unidad 5
Taller 1
81
11 SOLUCIONARIO EJERCICIO PRÁCTICO 3
SELECT id
FROM tabla_usuarios
WHERE usuario=”OR TRUE;
• Esto haría que, al ser la condición verdadera siempre, es decir, que exista un usuario, se logre acceder al primer
registro, que generalmente suele ser admin.
• Al hacer clic en Log in, observa que estás accediendo como el usuario admin@[Link] con todos los privilegios de
administrador, ya que es el primer usuario de la base de datos.
Unidad 5
Taller 1
83
11 SOLUCIONARIO EJERCICIO PRÁCTICO 3
Unidad 5
Taller 1
84
¡GRACIAS!
85