arrow_back

Identifica las vulnerabilidades en una aplicación con Security Command Center

Acceder Unirse
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Identifica las vulnerabilidades en una aplicación con Security Command Center

Lab 1 hora 15 minutos universal_currency_alt 1 crédito show_chart Introductorio
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Descripción general

Introducción

En este lab, usarás Web Security Scanner, uno de los servicios integrados de Security Command Center para analizar una aplicación Python Flask en busca de vulnerabilidades. Web Security Scanner identifica las vulnerabilidades de seguridad en tus aplicaciones web de App Engine, Google Kubernetes Engine (GKE) y Compute Engine.

El servicio rastrea la aplicación, para lo cual sigue todos los vínculos dentro del permiso de las URLs de inicio, y trata de ejecutar la mayor cantidad posible de controladores de eventos y entradas del usuario. Puede analizar y detectar automáticamente cuatro vulnerabilidades comunes, entre las que se incluyen secuencias de comandos entre sitios (XSS), inyección Flash, contenido mixto (HTTP en HTTPS) y bibliotecas desactualizadas o inseguras.

Web Security Scanner permite la identificación temprana de vulnerabilidades y ofrece tasas muy bajas de falsos positivos. Puedes configurar, ejecutar, programar y administrar análisis de seguridad con facilidad.

Situación

Logotipo de Cymbal Bank

Cymbal Bank es un banco minorista estadounidense con más de 2,000 sucursales en los 50 estados. Ofrece servicios completos de débito y crédito basados en una plataforma sólida de pagos. Cymbal Bank es una institución de servicios financieros heredada que se está transformando de forma digital.

Cymbal Bank se fundó en 1920 con el nombre de Troxler. El grupo Cymbal adquirió la empresa en 1975 tras haber estado invirtiendo en los cajeros automáticos de su propiedad. A medida que el banco crecía hasta convertirse en un líder nacional, puso énfasis estratégico en modernizar la experiencia del cliente tanto de forma presencial en sus sucursales como de forma digital a través de una aplicación que lanzaron en 2014. Cymbal Bank emplea a 42,000 personas en todo el país y, en 2019, registró $24,000 millones en ingresos.

Cymbal Bank está interesado en desarrollar una nueva aplicación bancaria para sus clientes corporativos con la tecnología de Google Cloud. La seguridad para aplicaciones es fundamental, y el director de tecnología quiere ver cómo Google Cloud puede identificar y mitigar las vulnerabilidades de seguridad para las aplicaciones. Como Cloud Security Engineer, tu tarea consistirá en demostrar las vanguardistas funciones de análisis de vulnerabilidades de aplicaciones de Security Command Center.

Objetivos

En este lab, realizarás las siguientes tareas:

  • Iniciar una aplicación Python Flask vulnerable en una instancia de Compute Engine

  • Usar Web Security Scanner para analizar la aplicación y encontrar vulnerabilidades

  • Solucionar la vulnerabilidad de la aplicación

  • Volver a analizar la aplicación y verificar que ya no existen vulnerabilidades

Configuración y requisitos

En cada lab, recibirá un proyecto de Google Cloud y un conjunto de recursos nuevos por tiempo limitado y sin costo adicional.

  1. Accede a Qwiklabs desde una ventana de incógnito.

  2. Ten en cuenta el tiempo de acceso del lab (por ejemplo, 1:15:00) y asegúrate de finalizarlo en el plazo asignado.
    No existe una función de pausa. Si lo necesita, puede reiniciar el lab, pero deberá hacerlo desde el comienzo.

  3. Cuando esté listo, haga clic en Comenzar lab.

  4. Anote las credenciales del lab (el nombre de usuario y la contraseña). Las usarás para acceder a la consola de Google Cloud.

  5. Haga clic en Abrir Google Console.

  6. Haga clic en Usar otra cuenta, copie las credenciales para este lab y péguelas en el mensaje emergente que aparece.
    Si usa otras credenciales, se generarán errores o incurrirá en cargos.

  7. Acepta las condiciones y omite la página de recursos de recuperación.

Tarea 1. Inicia una máquina virtual y también implementa una aplicación vulnerable

En esta tarea, configurarás la infraestructura para demostrar la vulnerabilidad de una aplicación al director de tecnología de Cymbal Bank. Más concretamente, implementarás una máquina virtual, obtendrás el código de la aplicación y también ingresarás una vulnerabilidad que será detectada por Web Security Scanner. Esta aplicación es un formulario simple que recibe la entrada de un usuario y la emite sin ningún cambio.

  1. En la barra de título de la consola de Google Cloud, haz clic en Activar Cloud Shell (Ícono de Activa Cloud Shell). Si se solicita, haz clic en Continuar.

  2. Crea una dirección IP estática que se usará para analizar una aplicación web vulnerable:

gcloud compute addresses create xss-test-ip-address --region=us-central1
  1. Ejecuta el siguiente comando para obtener la dirección IP estática que acabas de generar:

gcloud compute addresses describe xss-test-ip-address \ --region=us-central1 --format="value(address)"
  1. Copia la dirección IP (una sola línea de la salida) y guárdala en un bloc de notas.

  2. Ejecuta el siguiente comando para crear una instancia de VM y así ejecutar la aplicación vulnerable:

gcloud compute instances create xss-test-vm-instance \ --address=xss-test-ip-address --no-service-account \ --no-scopes --machine-type=e2-micro --zone=us-central1-b \ --metadata=startup-script='apt-get update; apt-get install -y python3-flask'

La secuencia de comandos de inicio instalará python-flask, un marco de trabajo de aplicación web, que se usa para ejecutar una aplicación Python simple que demuestra la vulnerabilidad de secuencia de comandos entre sitios (XSS), que es una vulnerabilidad de seguridad para aplicaciones web común.

  1. Abre una regla de firewall para que Web Security Scanner acceda a una aplicación vulnerable. Ten en cuenta los rangos de origen desde los que Web Security Scanner analiza las aplicaciones.

gcloud compute firewall-rules create enable-wss-scan \ --direction=INGRESS --priority=1000 \ --network=default --action=ALLOW \ --rules=tcp:8080 --source-ranges=0.0.0.0/0

Haz clic en Revisar mi progreso para verificar el objetivo. Crear la VM con las configuraciones deseadas

  1. Abre el menú de navegación y selecciona Compute Engine > Instancias de VM.

  2. Luego, haz clic en el botón SSH junto a tu instancia:

Botón SSH en la consola de Cloud

Esto abrirá una conexión SSH a tu instancia de VM en una ventana nueva.

  1. En esta ventana SSH (No en Cloud Shell), ejecuta el siguiente comando para descargar y extraer los archivos vulnerables de la aplicación web:

gsutil cp gs://cloud-training/GCPSEC-ScannerAppEngine/flask_code.tar . && tar xvf flask_code.tar
  1. Ahora, ejecuta el siguiente comando para implementar tu aplicación:

python3 app.py
  1. Poco después, deberías recibir un mensaje que indique que tu aplicación está en funcionamiento:

* Serving Flask app "app" (carga diferida) * Entorno: producción ADVERTENCIA: Este es un servidor de desarrollo. No lo uses en una implementación de producción. Usa en su lugar un servidor WSGI de producción. * Modo de depuración: off * Ejecutando en http://0.0.0.0:8080/ (Presiona CTRL+C para salir)
  1. Busca la dirección IP estática de la VM que copiaste antes en el bloc de notas.

  2. Reemplaza YOUR_EXTERNAL_IP en el campo URL de abajo con esa dirección IP y abre la URL en una pestaña nueva del navegador:

http://<YOUR_EXTERNAL_IP>:8080
Nota: También puedes encontrar la dirección IP externa en la consola de Google Cloud, donde aparece como un campo asociado a tu instancia de VM.
  1. Debería aparecer un portal de banca corporativa de Cymbal Bank con un formulario web.

  2. En el formulario web ingresa la siguiente cadena:

<script>alert('This is an XSS Injection')</script>
  1. Ahora presiona el botón POST.

Deberías ver la siguiente ventana de alerta:

Ventana de alerta en el navegador

Se trata de una vulnerabilidad común en las aplicaciones web: una vulnerabilidad de secuencia de comandos entre sitios. La secuencia de comandos entre sitios (XSS) es una vulnerabilidad que permite a los atacantes ejecutar escritura de secuencias de comandos maliciosos en los navegadores de los usuarios en el contexto de tu aplicación. Tu navegador interpreta una cadena como JavaScript legítimo y la ejecuta.

Un atacante que usa un error XSS para insertar JavaScript en una página HTML obtiene un acceso prácticamente ilimitado a las sesiones conectadas de las víctimas que visitan la página: puede robar datos del usuario, manipularlos, cambiar la configuración de privacidad o seguridad, o incluso alterar por completo el aspecto y el funcionamiento del producto. Y mucho más: una vulnerabilidad XSS en una aplicación, por intrascendente que sea, puede poner en peligro otros contenidos dentro del mismo dominio.

Esta es una de las muchas vulnerabilidades de las aplicaciones que Web Security Scanner puede ayudarte a identificar.

Haz clic en Revisar mi progreso para verificar el objetivo. Descarga archivos de aplicaciones web vulnerables en la VM

Tarea 2. Analiza la aplicación con Web Security Scanner

Ahora que lanzamos nuestra aplicación vulnerable, es momento de demostrar las habilidades de Web Security Scanner al director de tecnología. En esta tarea, configurarás y establecerás un análisis de la aplicación para encontrar vulnerabilidades de seguridad.

  1. Vuelve a la pestaña del navegador que muestra la consola de Cloud.

  2. Abre el menú de navegación y selecciona Seguridad > Web Security Scanner.

  3. Haz clic en Habilitar API para habilitar la API de Web Security Scanner.

Una vez habilitada, se te redireccionará a la página Web Security Scanner.

Haz clic en Revisar mi progreso para verificar el objetivo. Habilitar la API de Web Security Scanner

  1. Haz clic en Crear análisis.

  2. El campo URLs de inicio debería estar prepropagado con tu dirección IP estática.

  3. Agrega el número de puerto 8080, de modo que la URL de inicio tenga el siguiente aspecto:

http://<EXTERNAL_IP>:8080
  1. Tómate un minuto para revisar los campos restantes en la pantalla Crear un nuevo análisis:
  • Autenticación: una propiedad que se puede usar para proporcionar credenciales de aplicación que permitan al escáner autenticarse en una aplicación durante su análisis.
  • Programa: una propiedad que se puede usar para programar análisis que se ejecuten automáticamente.
  • Exporta a Security Command Center: una propiedad que te permita exportar automáticamente configuraciones de análisis y resultados de análisis al Cloud Security Command Center una vez finalizados los análisis.
  1. Verifica que la Autenticación siga estando en Ninguna y Programa en Nunca.

  2. Haz clic en Mostrar más para investigar las configuraciones restantes.

  3. Haz clic en Guardar para crear el análisis.

Nota: Esto crea el análisis, pero no lo ejecuta. Actualmente debe ejecutarse de forma manual, ya que aún no has creado un programa.
  1. Haz clic en Ejecutar para iniciar el análisis
Nota: Dado el número de pruebas posibles, el análisis puede llevar algo más de 10 minutos.
  1. Vuelve a tu sesión SSH en tu ventana separada.

Si la sesión agotó el tiempo de espera, ejecuta el siguiente comando para reiniciar la aplicación:

python3 app.py

En tu ventana SSH, empezarás a ver registros generados similares al ejemplo de abajo, en el que se ve a Web Security Scanner probando todas las URLs posibles en busca de vulnerabilidades potenciales:

34.29.3.21 - - [23/Mar/2023 23:30:41] "GET /output HTTP/1.1" 200 - 35.184.129.44 - - [23/Mar/2023 23:31:06] "GET /output HTTP/1.1" 200 - 35.184.129.44 - - [23/Mar/2023 23:31:07] "GET /favicon.ico HTTP/1.1" 404 - 34.68.231.45 - - [23/Mar/2023 23:31:09] "POST / HTTP/1.1" 302 - 34.68.231.45 - - [23/Mar/2023 23:31:09] "GET /output HTTP/1.1" 200 - 34.68.231.45 - - [23/Mar/2023 23:31:09] "GET /favicon.ico HTTP/1.1" 404 - 35.184.129.44 - - [23/Mar/2023 23:31:17] "POST / HTTP/1.1" 302 - 35.184.129.44 - - [23/Mar/2023 23:31:17] "GET /output HTTP/1.1" 200 -

Es posible que veas declaraciones de registro con los siguientes códigos de estado HTTP:

  • 200: una solicitud correcta, en la que el servidor HTTP respondió con un OK.
  • 302: indica que un recurso se encuentra temporalmente en otro lugar según el encabezado Ubicación.
  • 404: indica que uno o más recursos no se encontraron.

Revisa esta documentación para obtener más información sobre el estado HTTP y códigos de errores.

Mientras se ejecuta el análisis, puedes explorar Resultados, URLs rastreadas y pestañas de Detalles. También puedes consultar este video de introducción o este video de análisis de vulnerabilidades para obtener más información sobre Web Security Scanner.

  1. Cuando el análisis termine de ejecutarse, la pestaña Resultados debería indicar las vulnerabilidades entre sitios.
Resultados de Web Security Scanner con vulnerabilidades

Web Security Scanner fue capaz de analizar todas las URLs de inicio y detectar las vulnerabilidades XSS en la aplicación de Cymbal Bank. La habilidad de automatizar la detección de estas vulnerabilidades graves es un gran beneficio para las organizaciones orientadas a la seguridad como Cymbal Bank. Ahora corregirás la vulnerabilidad en el código de la aplicación de Cymbal Bank y volverás a realizar la prueba.

Haz clic en Revisar mi progreso para verificar el objetivo. Ejecutar un análisis de Web Security Scanner y detecta las vulnerabilidades de las aplicaciones

Tarea 3. Corrige la vulnerabilidad y analiza otra vez

Ahora que demostraste que Web Security Scanner puede detectar una vulnerabilidad XSS, corregirás la vulnerabilidad y volverás a ejecutar el análisis de la aplicación.

  1. Vuelve a tu ventana SSH que está conectada a tu instancia de VM.

  2. Detén la aplicación en ejecución con CTRL + C.

  3. Edita el archivo app.py con el editor nano mediante la ejecución del siguiente comando:

nano app.py
  1. localiza las dos líneas que establecen la cadena de salida:

# output_string = "".join([html_escape_table.get(c, c) for c in input_string]) output_string = input_string
  1. Quita el símbolo ‘#' de la primera línea y agrégalo al comienzo de la siguiente (asegúrate de que la sangría del código es correcta.)

Tus líneas finales deben parecerse a las siguientes:

@app.route('/output') def output(): output_string = "".join([html_escape_table.get(c, c) for c in input_string]) # output_string = input_string return flask.render_template("output.html", output=output_string) Nota: html_escape_table es un diccionario que contiene vinculaciones uno a uno de caracteres HTML especiales como "<" con su representación textual. Usamos esta tabla para escapar de los caracteres HTML especiales, de modo que nuestro formulario transfiera y también interprete los envíos solo como texto sin procesar. Obtén más información aquí.
  1. Ahora ingresa CTRL+X > Y > Enter para guardar tus cambios.

  2. Vuelve a ejecutar la aplicación:

python3 app.py
  1. Vuelve a la consola de Google Cloud (deberías seguir teniendo abierta la página de Web Security Scanner):

  2. Haz clic en Ejecutar en la parte superior de la página.

En tu ventana SSH, empezarás a ver los registros en los que Web Security Scanner prueba las URLs de las aplicaciones en busca de posibles vulnerabilidades:

34.29.3.21 - - [23/Mar/2023 23:30:41] "GET /output HTTP/1.1" 200 - 35.184.129.44 - - [23/Mar/2023 23:31:06] "GET /output HTTP/1.1" 200 - 35.184.129.44 - - [23/Mar/2023 23:31:07] "GET /favicon.ico HTTP/1.1" 404 - 34.68.231.45 - - [23/Mar/2023 23:31:09] "POST / HTTP/1.1" 302 - 34.68.231.45 - - [23/Mar/2023 23:31:09] "GET /output HTTP/1.1" 200 - 34.68.231.45 - - [23/Mar/2023 23:31:09] "GET /favicon.ico HTTP/1.1" 404 - 35.184.129.44 - - [23/Mar/2023 23:31:17] "POST / HTTP/1.1" 302 - 35.184.129.44 - - [23/Mar/2023 23:31:17] "GET /output HTTP/1.1" 200 -
  1. Mientras esperas los resultados del análisis, accede a la URL http://<EXTERNAL_IP>:8080 con tu navegador en una pestaña aparte.

  2. Deberías volver a ver el formulario web.

  3. En el formulario web, ingresa la misma cadena que ingresaste antes:

<script>alert('This is an XSS Injection')</script>
  1. Ahora presiona el botón POST.

  2. Verifica que esta vez la cadena se muestre en el navegador:

Entrada mostrada como cadena de texto Nota: Aunque esta técnica funciona en esta situación simple, para una protección adecuada de tu aplicación web necesitas usar técnicas y frameworks más avanzados que están fuera del permiso de este lab.

Explora los siguientes vínculos para obtener más recursos:
  1. Vuelve a la consola de Google Cloud, donde lo dejaste en la página Web Security Scanner.

  2. Haz clic en Ejecutar en la parte superior de la página para volver a analizar tu solicitud.

  3. Poco después, verás que los resultados no generan más vulnerabilidades XSS:

Resultado de Web Security Scanner sin vulnerabilidades

¡Bien hecho! Demostraste con éxito al director de tecnología de Cymbal Bank cómo identificar y corregir vulnerabilidades XSS con la potente solución Web Security Scanner de Google Cloud.

Haz clic en Revisar mi progreso para verificar el objetivo. Corregir las vulnerabilidades y volver a analizar tu aplicación con Web Security Scanner

Felicitaciones

En este lab, realizaste las siguientes tareas:

  • Lanzaste una aplicación Python Flask vulnerable
  • Usaste Web Security Scanner para analizar la aplicación y encontrar vulnerabilidades
  • Corregiste la vulnerabilidad de la aplicación
  • Volviste a analizar la aplicación y verificaste que ya no existen vulnerabilidades

Finalice su lab

Cuando haya completado el lab, haga clic en Finalizar lab. Google Cloud Skills Boost quitará los recursos que usó y limpiará la cuenta.

Tendrá la oportunidad de calificar su experiencia en el lab. Seleccione la cantidad de estrellas que corresponda, ingrese un comentario y haga clic en Enviar.

La cantidad de estrellas indica lo siguiente:

  • 1 estrella = Muy insatisfecho
  • 2 estrellas = Insatisfecho
  • 3 estrellas = Neutral
  • 4 estrellas = Satisfecho
  • 5 estrellas = Muy satisfecho

Puede cerrar el cuadro de diálogo si no desea proporcionar comentarios.

Para enviar comentarios, sugerencias o correcciones, use la pestaña Asistencia.

Copyright 2020 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.