arrow_back

Identifier les failles dans les applications avec Security Command Center

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

Identifier les failles dans les applications avec Security Command Center

Lab 1 heure 15 minutes universal_currency_alt 1 crédit show_chart Débutant
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Présentation

Introduction

Dans cet atelier, vous allez utiliser Web Security Scanner, l'un des services intégrés à Security Command Center, pour détecter des failles dans une application Python Flask. Web Security Scanner identifie les failles de sécurité de vos applications Web App Engine, Google Kubernetes Engine (GKE) et Compute Engine.

Le service explore votre application et tous les liens associés à vos URL de démarrage, et essaie de tester un maximum d'entrées utilisateur et de gestionnaires d'événements. Il recherche et détecte automatiquement quatre failles courantes : les scripts intersites (XSS), les injections Flash, les contenus mixtes (HTTP dans HTTPS) et les bibliothèques obsolètes/non sécurisées.

Permettant d'identifier les failles à un stade précoce, Web Security Scanner présente également un taux de faux positifs très bas. Configurez, exécutez, programmez et gérez facilement des analyses de sécurité.

Scénario

Logo Cymbal Bank

Cymbal Bank est une banque de détail américaine comptant plus de 2 000 agences partout aux États-Unis. Elle propose des services de débit et de crédit adossés à une plateforme de paiement robuste. Cymbal Bank est une banque ancienne qui a désormais entamé sa transformation numérique.

Cymbal Bank a été créée initialement en 1920 sous le nom de Troxler. Après avoir investi massivement dans ses distributeurs automatiques propriétaires, Cymbal Group a acquis l'entreprise en 1975. Devenu l'un des leaders du secteur à l'échelle nationale, l'établissement mise à présent sur la modernisation de l'expérience client : une stratégie déployée tant au sein de ses agences qu'à travers ses services numériques, via une application lancée en 2014. Cymbal Bank emploie 42 000 personnes aux États-Unis et a enregistré un chiffre d'affaires de 24 milliards de dollars en 2019.

L'entreprise souhaite utiliser les technologies Google Cloud afin de développer une application bancaire pour ses clients professionnels. Dans ce contexte, la sécurité représente un enjeu critique. Son CTO aimerait donc savoir comment Google Cloud détecte et neutralise les failles applicatives. En tant que Cloud Security Engineer, vous allez devoir démontrer les fonctionnalités de pointe de Security Command Center dans ce domaine.

Objectifs

Dans cet atelier, vous allez effectuer les tâches suivantes :

  • Lancer une application Python Flask vulnérable sur une instance Compute Engine

  • Utiliser Web Security Scanner pour analyser l'application et détecter des failles

  • Corriger les failles présentes dans l'application

  • Analyser l'application à nouveau pour confirmer l'élimination des failles

Avant de commencer l'atelier

Pour chaque atelier, nous vous attribuons un nouveau projet Google Cloud et un nouvel ensemble de ressources pour une durée déterminée, sans frais.

  1. Connectez-vous à Qwiklabs dans une fenêtre de navigation privée.

  2. Vérifiez le temps imparti pour l'atelier (par exemple : 01:15:00) : vous devez pouvoir le terminer dans ce délai.
    Une fois l'atelier lancé, vous ne pouvez pas le mettre en pause. Si nécessaire, vous pourrez le redémarrer, mais vous devrez tout reprendre depuis le début.

  3. Lorsque vous êtes prêt, cliquez sur Démarrer l'atelier.

  4. Notez vos identifiants pour l'atelier (Nom d'utilisateur et Mot de passe). Ils vous serviront à vous connecter à Google Cloud Console.

  5. Cliquez sur Ouvrir la console Google.

  6. Cliquez sur Utiliser un autre compte, puis copiez-collez les identifiants de cet atelier lorsque vous y êtes invité.
    Si vous utilisez d'autres identifiants, des messages d'erreur s'afficheront ou des frais seront appliqués.

  7. Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.

Tâche 1 : Lancer une machine virtuelle et déployer une application vulnérable

Dans cette tâche, vous allez configurer l'infrastructure dans le but de démontrer une faille applicative au CTO de Cymbal Bank. Plus spécifiquement, vous allez déployer une machine virtuelle, obtenir le code d'application et introduire une faille qui sera détectée par Web Security Scanner. Cette application se présente sous la forme d'un simple formulaire qui reçoit les entrées d'un utilisateur et les transmet en sortie sans aucune modification.

  1. Dans la barre de titre de la console Google Cloud, cliquez sur Activer Cloud Shell (Icône Activer Cloud Shell). Si vous y êtes invité, cliquez sur Continuer.

  2. Créez une adresse IP statique que vous utiliserez pour analyser l'application Web vulnérable :

gcloud compute addresses create xss-test-ip-address --region=us-central1
  1. Exécutez la commande suivante pour afficher l'adresse IP statique que vous venez de générer :

gcloud compute addresses describe xss-test-ip-address \ --region=us-central1 --format="value(address)"
  1. Copiez l'adresse IP (celle-ci correspond à une seule ligne de la sortie) et enregistrez-la dans un bloc-notes.

  2. Exécutez la commande suivante pour créer une instance de VM afin d'y exécuter l'application vulnérable :

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'

Le script de démarrage installera le framework d'application Web python-flask, servant à exécuter une application Python simple démontrant une vulnérabilité XSS (script intersites), une faille de sécurité courante dans les applications Web.

  1. Ouvrez une règle de pare-feu permettant à Web Security Scanner d'accéder à l'application vulnérable. Notez les plages sources à partir desquelles Web Security Scanner analyse les applications.

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

Cliquez sur Vérifier ma progression pour valider l'objectif. Créer la VM avec les configurations adéquates

  1. Ouvrez le menu de navigation et sélectionnez Compute Engine > Instances de VM.

  2. Ensuite, cliquez sur le bouton SSH en regard de votre instance :

Bouton SSH dans la console Cloud

Une nouvelle fenêtre s'ouvre, établissant une connexion SSH à votre instance de VM.

  1. Dans cette fenêtre SSH (et non pas dans Cloud Shell), exécutez la commande suivante pour télécharger et extraire les fichiers de l'application Web vulnérable :

gsutil cp gs://cloud-training/GCPSEC-ScannerAppEngine/flask_code.tar . && tar xvf flask_code.tar
  1. Exécutez maintenant cette commande pour déployer votre application :

python3 app.py
  1. Un message doit rapidement apparaître, confirmant le lancement de l'application :

* Serving Flask app "app" (lazy loading) * Environment: production WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Debug mode: off * Running on http://0.0.0.0:8080/ (Press CTRL+C to quit)
  1. Retrouvez l'adresse IP statique notée précédemment.

  2. Dans l'URL ci-dessous, remplacez VOTRE_IP_EXTERNE par cette adresse IP, puis ouvrez l'URL dans un nouvel onglet du navigateur :

http://<VOTRE_IP_EXTERNE>:8080
Remarque : Vous pouvez aussi retrouver l'adresse IP externe dans la console Google Cloud. Elle y est indiquée dans un champ associé à votre instance de VM.
  1. Un portail de services bancaires aux professionnels de Cymbal Bank doit apparaître, avec un formulaire Web.

  2. Dans ce formulaire, saisissez la chaîne suivante :

<script>alert('Ceci est une injection XSS')</script>
  1. À présent, appuyez sur le bouton POST (PUBLIER).

La fenêtre d'alerte suivante doit apparaître :

Fenêtre d&#39;alerte dans le navigateur

Il s'agit d'un script intersites (XSS) : une faille de sécurité courante dans les applications Web. Cette vulnérabilité permet aux pirates informatiques d'exploiter votre application afin d'exécuter des scripts malveillants dans le navigateur des utilisateurs. Le navigateur exécute une chaîne JavaScript qu'il interprète comme étant légitime.

En exploitant un bug XSS pour injecter du code JavaScript dans une page HTML, les pirates obtiennent un accès quasi total aux sessions connectées des victimes qui consultent cette page. Cette technique leur permet de dérober et de modifier les données des utilisateurs, de modifier les paramètres de confidentialité ou de sécurité, voire d'altérer complètement l'affichage et le fonctionnement du produit. D'autre part, la présence d'une faille XSS dans une application, peu importe sa gravité, peut mettre en péril d'autres contenus au sein du même domaine.

C'est l'une des nombreuses failles applicatives que Web Security Scanner peut vous aider à identifier.

Cliquez sur Vérifier ma progression pour valider l'objectif. Télécharger les fichiers de l'application vulnérable sur la VM

Tâche 2 : Analyser l'application avec Web Security Scanner

Maintenant que nous avons lancé notre application vulnérable, il est temps de démontrer au CTO les capacités de Web Security Scanner. Dans cette tâche, vous allez configurer et lancer une analyse afin de détecter des failles de sécurité dans l'application.

  1. Revenez à l'onglet du navigateur qui affiche la console Cloud.

  2. Ouvrez le menu de navigation et sélectionnez Sécurité > Web Security Scanner.

  3. Cliquez sur Activer l'API pour activer l'API Web Security Scanner.

Vous serez ensuite redirigé vers la page Web Security Scanner.

Cliquez sur Vérifier ma progression pour valider l'objectif. Activer l'API Web Security Scanner

  1. Cliquez sur Créer une analyse.

  2. Le champ URL de démarrage doit être prérempli avec votre adresse IP statique.

  3. Ajoutez le numéro de port 8080, de sorte que l'URL de démarrage ressemble à l'exemple suivant :

http://<IP_EXTERNE>:8080
  1. Prenez quelques instants pour passer en revue les champs restants sur l'écran Créer une analyse.
  • Authentification : une propriété pouvant être utilisée pour fournir des identifiants d'application afin de permettre à l'outil d'analyse de s'authentifier auprès d'une application pendant l'analyse.
  • Programmation : une propriété pouvant être utilisée pour programmer l'exécution automatique d'analyses.
  • Exporter vers Security Command Center : une propriété vous permettant d'exporter automatiquement les configurations et les résultats des analyses vers Cloud Security Command Center.
  1. Vérifiez que l'option Authentification est toujours définie sur Aucune et que Programmation est définie sur Jamais.

  2. Cliquez sur Afficher plus pour examiner les paramètres restants.

  3. Cliquez sur Enregistrer pour créer l'analyse.

Remarque : L'analyse est créée, mais elle n'est pas exécutée. Pour l'instant, elle doit être lancée manuellement puisque vous n'avez pas encore créé de programmation.
  1. Cliquez sur Exécuter pour démarrer l'analyse.
Remarque : Étant donné le nombre de tests possibles, l'analyse peut prendre un peu plus de dix minutes.
  1. Revenez à votre session SSH dans votre fenêtre distincte.

Si la session a expiré, exécutez la commande suivante pour redémarrer votre application :

python3 app.py

Dans votre fenêtre SSH, vous commencerez à voir apparaître des journaux générés tels que dans l'exemple ci-dessous. Cela signifie que Web Security Scanner teste toutes les URL possibles afin de détecter des failles potentielles :

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 -

Des instructions de journalisation présentant les codes d'état HTTP suivants peuvent apparaître :

  • 200 : une requête réussie, à laquelle le serveur HTTP renvoie une réponse positive.
  • 302 : indique qu'une ressource est momentanément déplacée à un autre emplacement d'après l'en-tête "Location".
  • 404 : indique qu'une ou plusieurs ressources sont introuvables.

Consultez cette documentation pour en savoir plus au sujet des codes d'erreur et d'état HTTP.

Pendant l'analyse, n'hésitez pas à explorer les onglets Résultats, URL explorées et Détails. Nous vous invitons par ailleurs à visionner cette vidéo de prise en main ou cette vidéo sur l'analyse des failles pour vous familiariser avec Web Security Scanner.

  1. Une fois l'analyse terminée, l'onglet Résultats indique les failles intersites détectées.
Résultats de Web Security Scanner présentant des failles

Web Security Scanner a analysé toutes les URL de démarrage et détecté les failles XSS dans l'application de Cymbal Bank. La détection automatique de ces failles critiques représente un atout majeur pour les entreprises soucieuses de leur sécurité, à l'image de Cymbal Bank. Vous allez à présent corriger la faille présente dans le code de l'application de Cymbal Bank avant d'effectuer de nouveaux tests.

Cliquez sur Vérifier ma progression pour valider l'objectif. Exécuter une analyse Web Security Scanner et détecter des failles applicatives

Tâche 3 : Corriger la faille et analyser à nouveau

Maintenant que vous avez démontré l'aptitude de Web Security Scanner à détecter une faille XSS, vous allez neutraliser cette vulnérabilité, puis lancer une nouvelle analyse de l'application.

  1. Revenez à votre fenêtre SSH connectée à votre instance de VM.

  2. Arrêtez l'application en cours d'exécution en appuyant sur les touches CTRL+C.

  3. Modifiez le fichier app.py à l'aide de l'éditeur nano en exécutant la commande suivante :

nano app.py
  1. Repérez les deux lignes qui définissent la chaîne de sortie :

# output_string = "".join([html_escape_table.get(c, c) for c in input_string]) output_string = input_string
  1. Supprimez le symbole "#" dans la première ligne et ajoutez-le au début de la ligne suivante (veillez à bien respecter les retraits dans votre code).

Après avoir terminé, vos lignes doivent se présenter sous cette forme :

@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) Remarque : html_escape_table est un dictionnaire qui contient des correspondances de caractères HTML spéciaux tels que "<" avec leur représentation textuelle. Nous utilisons cette table pour remplacer les caractères HTML spéciaux, de sorte que notre formulaire ingère et interprète le contenu transmis uniquement sous forme de texte brut. Cliquez ici pour obtenir de plus amples informations.
  1. Appuyez ensuite sur CTRL+X > Y > Entrée pour enregistrer vos modifications.

  2. Relancez l'application :

python3 app.py
  1. Revenez à la console Google Cloud (la page Web Security Scanner doit être encore ouverte) :

  2. Cliquez sur Exécuter en haut de la page.

Dans votre fenêtre SSH, vous commencerez à voir apparaître des journaux, ce qui signifie que Web Security Scanner teste les URL de l'application afin de détecter d'éventuelles failles :

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. Pendant que l'analyse s'exécute, connectez-vous à l'URL http://<IP_EXTERNE>:8080 depuis un nouvel onglet de votre navigateur.

  2. Le formulaire Web s'affiche à nouveau.

  3. Saisissez la même chaîne que précédemment :

<script>alert('Ceci est une injection XSS')</script>
  1. À présent, appuyez sur le bouton POST (PUBLIER).

  2. Vérifiez que cette fois, la chaîne s'affiche dans le navigateur :

Entrée affichée sous forme de chaîne textuelle Remarque : Bien que cette technique fonctionne dans ce scénario simple, la protection adéquate de votre application Web requiert des techniques et des frameworks plus avancés, qui ne sont pas abordés dans cet atelier.

Des ressources supplémentaires sont disponibles via les liens fournis ci-dessous :
  1. Revenez à la console Google Cloud, sur votre page Web Security Scanner.

  2. Cliquez sur Exécuter en haut de la page pour analyser à nouveau votre application.

  3. Rapidement, vous verrez que les résultats ne renvoient plus aucune faille XSS :

Résultats de Web Security Scanner, indiquant l&#39;absence de faille

Félicitations ! Vous avez montré au CTO de Cymbal Bank comment identifier et corriger efficacement des failles XSS à l'aide de la solution Web Security Scanner de Google Cloud.

Cliquez sur Vérifier ma progression pour valider l'objectif. Corriger des failles et analyser à nouveau votre application à l'aide de Web Security Scanner

Félicitations !

Dans cet atelier, vous avez réalisé les tâches suivantes :

  • Lancer une application Python Flask vulnérable
  • Utiliser Web Security Scanner pour analyser l'application et détecter des failles
  • Corriger les failles présentes dans l'application
  • Analyser l'application à nouveau pour confirmer l'élimination des failles

Terminer l'atelier

Une fois l'atelier terminé, cliquez sur Terminer l'atelier. Google Cloud Skills Boost supprime les ressources que vous avez utilisées, puis efface le compte.

Si vous le souhaitez, vous pouvez noter l'atelier. Sélectionnez un nombre d'étoiles, saisissez un commentaire, puis cliquez sur Envoyer.

Le nombre d'étoiles correspond à votre degré de satisfaction :

  • 1 étoile = très insatisfait(e)
  • 2 étoiles = insatisfait(e)
  • 3 étoiles = ni insatisfait(e), ni satisfait(e)
  • 4 étoiles = satisfait(e)
  • 5 étoiles = très satisfait(e)

Si vous ne souhaitez pas donner votre avis, vous pouvez fermer la boîte de dialogue.

Pour soumettre des commentaires, suggestions ou corrections, veuillez accéder à l'onglet Assistance.

Copyright 2020 Google LLC Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms d'entreprises et de produits peuvent être des marques des entreprises auxquelles ils sont associés.