Test d'automatisation dans AppScan® Enterprise à l'aide du serveur proxy AppScan

Le serveur proxy AppScan vous permet d'enregistrer du trafic et de l'utiliser en tant que données d'exploration dans votre travail AppScan Enterprise (ASE). Le serveur proxy AppScan est un système de gestion des proxys d'enregistrement. Des instances de proxy peuvent être créées à la demande pour enregistrer le trafic qui sera ensuite utilisé pour un examen DAST. Ce document décrit comment configurer et utiliser le serveur proxy.

Présentation

Dans l'univers des DevOps, il est de plus en plus important de pouvoir intégrer des examens de sécurité à vos processus CI/CD. Si vous utilisez une infrastructure d'automatisation (comme Selenium), vous pouvez tirer parti des scripts déjà écrits pour créer des examens personnalisés.
  • A l'aide du serveur proxy AppScan, vous pouvez démarrer automatiquement un proxy d'enregistrement. Les demandes provenant de la structure d'automatisation vers l'application Web sont ensuite enregistrées lorsqu'elles sont transmises via ce proxy d'enregistrement. Le trafic est enregistré au format HAR dans un fichier .dast.config, que vous pouvez ensuite charger pour qu'il soit utilisé par AppScan Enterprise (ASE) en tant que données d'exploration pour un examen.
  • Vous pouvez également enregistrer le trafic manuellement, via le serveur proxy, pour créer un fichier .dast.config.
  • Vous pouvez également charger votre propre fichier HAR directement dans ASE, sans utiliser le serveur proxy.

Ce diagramme représente automated scan flow with AppScan® Enterprise.


Flux d'examen automatisé avec AppScan Enterprise

Flux de travaux standard

  1. Installation du serveur proxy
  2. Configuration du serveur proxy
  3. Démarrage du serveur proxy
  4. Utilisation du serveur proxy
Remarque : Le script de démonstration pour ce flux de travaux, ProxyServerDemoScript.py, est disponible dans le dossier d'installation d'AppScan.

Installer le serveur proxy AppScan

  1. Téléchargez l'une des versions actuelles de Node.js (version 12 ou ultérieure) et installez-la sur votre machine. Si votre service est conforme aux normes FIPS, vous devez utiliser un serveur Node.js compatible FIPS.
  2. Décompressez DastProxyServerStandalone.zip dans un dossier sur votre machine.
  3. Pour remplacer un port par défaut sur lequel exécuter le serveur proxy : Configurez le paramètre du port dans Settings.json.

Configurer le serveur proxy AppScan

Après avoir apporté des modifications à la configuration, vous devez redémarrer le serveur.
Remarque : Settings.json est un fichier JSON et certains caractères tels que " (guillemet double) et \ (barre oblique inverse) doivent donc être échappés, de sorte que " devient \" et \ devient \\. Ne modifiez pas les paramètres internalConfiguration dans ce fichier.

Mode compatible FIPS

  1. Localisez le fichier Settings.json dans le dossier racine du serveur proxy et ouvrez-le dans un éditeur de texte.
  2. Localisez le paramètre requireFips et modifiez sa valeur de false en true.
  3. Sauvegardez le fichier.

Connexion au serveur proxy

  1. Pour définir un port par défaut sur lequel exécuter le serveur proxy : Configurez le paramètre du port dans Settings.json.
  2. Pour une connexion sécurisée (SSL) au serveur proxy : Configurez votre propre certificat PEM ou PKCS12 dans Settings.json.
    • Un certificat PEM requiert deux fichiers (chemins complets), tandis qu'un certificat PKCS12 requiert un fichier (chemin d'accès complet) et un mot de passe.
    • N'oubliez pas d'échapper des caractères si nécessaire à la fois dans les chemins d'accès aux fichiers et dans le mot de passe, par exemple un mot de passe tel que abc!"123 devient abc!\"123 (le " est échappé).

      Exemple d'utilisation d'openssl pour créer un certificat PEM :

      openssl req -newkey rsa:2048 -new -nodes -keyout key.pem -out csr.pem

      openssl x509 -req -days 365 -in csr.pem -signkey key.pem -out server.crt

      Exemple d'utilisation d'openssl pour convertir le certificat PEM en certificat PKCS12 :

      openssl pkcs12 -export -out certificate.pfx -inkey key.pem -in server.crt

      Exemple d'outil keygen de Java pour convertir un certificat JKS en certificat PKCS12 :

      keytool -importkeystore -srckeystore certificate.jks -srcstoretype JKS -destkeystore certificate.p12 -deststoretype PKCS12

Certificat racine

Si l'application que vous testez utilise le protocole SSL (HTTPS), le proxy d'enregistrement AppScan doit agir comme intermédiaire pour l'enregistrement du trafic. Pour cela, il doit disposer d'un certificat racine qu'il peut utiliser pour signer ses communications avec l'application.

Par défaut, le serveur proxy AppScan génère un certificat racine unique, sans que l'intervention de l'utilisateur ne soit requise. Cependant, vous obtiendrez des avertissements SSL lorsque vous parcourrez l'application. Vous pouvez soit les ignorer, soit faire l'une des choses suivantes :
  1. Installer le certificat généré par le serveur proxy AppScan sur votre ou vos machines :
    1. Utilisez l'API REST pour télécharger l'autorité de certification racine autosignée utilisée par le serveur proxy AppScan en tant que fichier PEM.
    2. Installez le certificat sur le navigateur utilisé pour l'exploration ou à tout emplacement requis (en fonction de l'origine du trafic).
  2. Importer votre propre certificat racine sur le serveur proxy AppScan. Les formats de certificats pris en charge sont PKCS12 (.P12, .PFX) et JKS :
    1. Ouvrez une fenêtre de ligne de commande et accédez au dossier d'installation sur la machine du serveur proxy.
    2. Exécutez la commande suivante :

      .\Java\jre\bin\java -jar DastProxy.jar -irc [path to certificate file] -ircp [password]

      Remarque : Pour afficher l'utilisation de commande complète, exécutez la commande .\Java\jre\bin\java -jar DastProxy.jar.

      Important : il est recommandé d'utiliser un certificat test dédié, dans la mesure où le certificat est enregistré sur le serveur proxy.

  3. Fournissez votre propre certificat de serveur fixe (et non un certificat racine) dans la commande StartProxy.

Définir le délai d'inactivité du proxy

Si une instance de proxy d'enregistrement n'est pas fermée après utilisation à l'aide de la commande correspondante, elle reste ouverte et en mode écoute sur le port. Les instances de proxy d'enregistrement sont automatiquement fermées si elles restent inactives pendant une durée prédéfinie.

Le délai d'inactivité par défaut pour les instances de proxy d'enregistrement est de 60 minutes. Vous pouvez modifier cette valeur en modifiant la valeur de inactivityTimeoutInMinutes dans le fichier Settings.json, enregistré dans le dossier d'installation.

Chiffrer le trafic

Par défaut, le fichier de trafic (.dast.config) n'est pas chiffré. Pour configurer le serveur afin de chiffrer tout le trafic, modifiez la valeur "encryptDastConfig" en "true" dans le fichier Settings.json, qui se trouve dans le dossier d'installation.

Proxy chaîné

Si vous devez définir plusieurs proxys chaînés ou des exceptions sur le proxy, utilisez le fichier de règles de proxy chaîné (proxy.chain) qui se trouve dans le dossier d'installation. Des instructions d'utilisation sont incluses dans ce fichier.

Démarrage du serveur proxy

Vous pouvez simplement démarrer le serveur proxy ou l'exécuter en tant que service (ci-dessous). Notez que vous ne pouvez pas faire les deux en parallèle.

Pour démarrer le serveur proxy
  • Exécutez la commande suivante : node app.js [port]

    *port = le port sur lequel le serveur proxy écoute les requêtes de l'API REST.

Remarque :
  • Si vous ne définissez pas le port au démarrage du serveur proxy, le port défini dans le fichier Settings.json est utilisé. Si aucun n'est défini ici, le port 8383 est utilisé.
  • Il n'est pas nécessaire d'arrêter le serveur proxy, vous pouvez le laisser s'exécuter de façon permanente.

Démarrer en tant que service

Vous pouvez exécuter le serveur proxy en tant que service, à l'aide de l'exécutable service.js qui se trouve dans le dossier Service. Le service utilise les privilèges du système local.
Remarque : Toutes les commandes de service doivent être exécutées avec des privilèges d'administrateur (Exécuter en tant qu'administrateur).

Pour démarrer le service, exécutez la commande :

node service.js --install

node service.js --start

Commandes du service supplémentaires

Vous pouvez imprimer cette liste en exécutant la commande node service.js --help

Commandes de service Description
--start Démarrer le service
--stop Arrêter le service
--install Installer le service
--uninstall Arrêter et désinstaller le service
--h | --help Informations d'utilisation de sortie

Utilisation du serveur proxy

Une fois que le serveur proxy a démarré, vous pouvez lancer de nouvelles instances de proxy d'enregistrement, pour enregistrer le trafic de votre application.

  1. Pour lancer une instance du proxy, utilisez la requête de l'API REST : StartProxy
  2. Envoyez votre trafic vers l'application que vous testez, via le port proxy d'enregistrement défini.
  3. Lorsque vous avez terminé, envoyez la demande API REST : StopProxy.
  4. Téléchargez le fichier .dast.config, lequel contient le trafic enregistré, en envoyant la requête d'API REST suivante : Traffic. Le fichier est une archive ZIP contenant un ou plusieurs fichiers .har (HTTP Archive). Lorsque vous téléchargez ce fichier, les données sont supprimées du serveur proxy AppScan.
  5. Vous pouvez utiliser le fichier .dast.config pour mettre à jour les données d'exploration d'un travail existant, à l'aide de l'API REST ASE. Voir la documentation ici : https://%3Case_server%3E:9443/ase/api/pages/apidocs.html. Pour plus de détails, voir la section Commandes de l'API du serveur proxy.

Commandes de l'APU du serveur proxy

Une fois le serveur proxy démarré, vous pouvez lancer une instance de proxy d'enregistrement et envoyer votre trafic vers votre application.

Documentation

Pour consulter la documentation d'API REST complète dans Swagger, saisissez ce qui suit dans un navigateur : http(s)://<server>:<port>

Toutes les commandes pointent vers un nœud final qui ressemble à ceci :

http(s)://[server]:[port]/automation/

server = adresse IP de la machine sur laquelle le serveur proxy est installé (la valeur par défaut est localhost).

port = port sur lequel le serveur proxy écoute.

"StartProxy"

Démarre un proxy qui écoute sur le port spécifié.
  • URL : http://[server]:[port]/automation/StartProxy/<recordingPort>
  • Type de demande : POST ou GET (en cas d'utilisation de chainedProxy, proxyCertificate et clientCertificate, la requête est POST. >Sinon, il s'agit de GET.)

"StopProxy"

Arrêtez le proxy d'enregistrement qui écoute sur le port spécifié.
  • URL : http://[server]:[port]/automation/StopProxy/<recordingPort>
  • Type de demande : GET
Remarque : La définition du port sur 0 n'arrête pas tous les proxys ouverts. Pour ce faire, utilisez StopAllProxies.

"StopAllProxies"

Arrêtez tous les proxys d'enregistrement en cours d'exécution. Cette commande permet d'arrêter tous les proxys d'enregistrement sur tous les ports, y compris ceux démarrés par d'autres utilisateurs.

  • URL : http://[server]:[port]/automation/StopAllProxies
  • Type de demande : POST

"EncryptDastConfig"

Chargez le fichier DAST.CONFIG pour le chiffrer.
  • URL : http://[server]:[port]/automation/EncryptDastConfig
  • Type de demande : POST

"DownloadEncryptedDast"

Téléchargez un fichier .dast.config chiffré (chargé à l'aide de l'API EncryptDastConfig).
Remarque : Lorsque le fichier a été téléchargé, les fichiers .dast.config chiffrés et déchiffrés sont supprimés du serveur proxy.
  • URL : http://[server]:[port]/automation/DownloadEncryptedDastConfig/<uuid>
  • Type de demande : GET

"Trafic"

Téléchargez les données enregistrées à partir du proxy d'enregistrement identifié par son port, comme un fichier .dast.config.
  • URL : http://[server]:[port]/automation/Traffic/<recordingPort>
  • Type de demande : GET

"Certificat"

Télécharge l'autorité de certification racine autosignée utilisée par le proxy d'enregistrement en tant que fichier PEM.
  • URL : http://[server]:[port]/automation/Certificate
  • Type de demande : GET

Mise à jour du serveur proxy AppScan

Avant de mettre à jour le serveur proxy AppScan vers une version plus récente, veillez à copier les fichiers de configuration que vous avez modifiés dans le nouveau dossier.

Si vous avez installé le serveur proxy en tant que service, vous devez désinstaller le service avant de le mettre à jour (voir Commandes de service supplémentaires), puis le réinstaller.