Test d'automatisation dans AppScan® Enterprise à l'aide d'AppScan Traffic Recorder
AppScan Traffic Recorder vous permet d'enregistrer du trafic et de l'utiliser en tant que données d'exploration dans votre travail AppScan Enterprise (ASE). AppScan Traffic Recorder est un système de gestion des instances d'enregistreur de trafic. Des instances de l'enregistreur de trafic 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 l'enregistreur de trafic.
Aperçu
- A l'aide de l'enregistreur de trafic AppScan, vous pouvez démarrer automatiquement une instance d'enregistreur de trafic. Les demandes provenant de la structure d'automatisation vers l'application Web sont ensuite enregistrées lorsqu'elles sont transmises via cet enregistreur de trafic. 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 l'enregistreur de trafic, pour créer un fichier .dast.config.
- Vous pouvez également charger votre propre fichier HAR directement dans ASE, sans utiliser l'enregistreur de trafic.
Ce diagramme représente le automated scan flow with AppScan® Enterprise.
Flux de travaux standard
- Installer l'enregistreur de trafic
- Configurer l'enregistreur de trafic
- Démarrer l'enregistreur de trafic
- Utilisation de l'enregistreur de trafic
Installer l'enregistreur de trafic AppScan
Téléchargez l'une des versions actuelles de Node.js (version 14.14 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.- Windows : Décompressez TrafficRecorder.Windows.zip dans un dossier de votre machine.
Linux : Décompresser TrafficRecorder.Linux.zip
- Pour remplacer un port par défaut sur lequel exécuter l'enregistreur de trafic : Configurez le paramètre du port dans Settings.json.
- Vérifiez que app.js et le fichier Java interne : /java/bin/java disposent de droits exécuter en tant qu'exécutable.
Configurer l'enregistreur de trafic AppScan
Mode compatible FIPS
- Localisez le fichier Settings.json dans le dossier racine de l'enregistreur de trafic et ouvrez-le dans un éditeur de texte.
- Localisez le paramètre requireFips et modifiez sa valeur de false en true.
- Sauvegardez le fichier.
Connexion à l'enregistreur de trafic
- Pour définir un port par défaut sur lequel exécuter l'enregistreur de trafic : Configurez le paramètre du port dans Settings.json.
- Vous devez configurer une connexion sécurisée (SSL) de l'une des manières suivantes :
Méthode A : Configurez votre propre certificat PEM ou PKCS12 dans
Settings.json
.PEM :
- Un certificat PEM requiert deux fichiers (chemins complets)
- 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
devientabc!\”123
(le symbole " est échappé)
PKCS12
- Dans la ligne de commande, exécutez :
.\Java\bin\java.exe -jar .\DastProxy.jar -sc "C:\Path\to\certificate.pfx"
- A l'invite, entrez le mot de passe du certificat et appuyez sur Entrée.
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
Méthode B : si vous n'avez pas de certificat, vous devez créer et utiliser un certificat autosigné. Notez que cette méthode est moins sécurisée.
- Dans la ligne de commande, ouvrez le dossier racine Traffic Recorder.
- Créez un fichier de magasin de clés Java à l'aide de la commande :
.\Java\bin\keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -validity 365 -keysize 2048
- Renseignez les détails du certificat et protégez-le avec un mot de passe qui sera nécessaire à l'étape suivante.
- Importez un certificat PKCS12 à partir du magasin de clés Java à l'aide de la commande :
.\Java\bin\keytool -importkeystore -srckeystore keystore.jks -destkeystore keystore.p12 -srcalias selfsigned -srcstoretype jks -deststoretype pkcs12
- Utilisez le certificat généré dans AppScan Traffic Recorder à l'aide de la commande :
.\Java\bin\java.exe -jar .\DastProxy.jar -sc "keystore.p12"
Certificat racine
Si l'application que vous testez utilise le protocole SSL (HTTPS), AppScan Traffic Recorder 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.
- Installer le certificat généré par AppScan Traffic Recorder sur votre ou vos machines :
- Utilisez l'API REST pour télécharger l'autorité de certification racine autosignée utilisée par AppScan Traffic Recorder en tant que fichier PEM.
- Installez le certificat sur le navigateur utilisé pour l'exploration ou à tout emplacement requis (en fonction de l'origine du trafic).
- Importer votre propre certificat racine sur AppScan Traffic Recorder. Les formats de certificats pris en charge sont PKCS12 (.P12, .PFX) et JKS :
- Ouvrez une fenêtre de ligne de commande et accédez au dossier d'installation sur la machine de l'enregistreur de trafic.
- Exécutez la commande suivante :
.\Java\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\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 l'enregistreur de trafic.
- Fournissez votre propre certificat de serveur fixe (et non un certificat racine) dans la commande StartProxy.
Définir le délai d'inactivité
Si une instance de l'enregistreur de trafic 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 l'enregistreur de trafic 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 l'enregistreur de trafic 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émarrer/Arrêter l'enregistreur de trafic
Vous pouvez simplement démarrer l'enregistreur de trafic ou l'exécuter en tant que service (ci-dessous). Notez que vous ne pouvez pas faire les deux en parallèle.
- Exécutez la commande suivante : node app.js [port]
où *port = le port sur lequel l'enregistreur de trafic écoute les requêtes de l'API REST.
- Si vous ne définissez pas le port au démarrage de l'enregistreur de trafic, 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 l'enregistreur de trafic, vous pouvez le laisser s'exécuter de façon permanente.
Démarrer en tant que service Windows
Pour démarrer le service, exécutez les commandes :
node service.js --install
node service.js --start
Commandes de 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 |
Arrêter le service Windows
Pour arrêter le service Windows de l'enregistreur de trafic à l'aide de l'exécutable service.js qui se trouve dans le dossier "Service", exécutez la commande :
node service.js --uninstall
Démarrer en tant que service Linux à l'aide de systemd
- Créez un fichier sous le répertoire systemd (généralement : /etc/systemd/system). Par exemple, sudo vim /etc/systemd/system/TrafficRecorder.service.Contenu du fichier :
[Unité]
Description=Appscan TrafficRecorder
After=multi-user.target[Service]
ExecStart=[chemin d'accès au nœud ici] [chemin d'accès à app.js ici]Restart=always
RestartSec=10StandardOutput=syslogStandardError=syslog
SyslogIdentifier=TrafficRecorder[Installer]
WantedBy=multi-user.target
Exemple pour ExecStart : ExecStart= node /home/admin/Documents/TrafficRecorder.Linux.1.2.0/app.js
- Rechargez les fichiers systemd à l'aide de la commande : sudo systemctl daemon-reload
- Démarrez le service à l'aide de la commande suivante : sudo systemctl start TrafficRecorder.service
- Vous pouvez vérifier le statut à l'aide de la commande : sudo systemctl status TrafficRecorder.serviceRemarque : Le statut doit être « Active: active (running) »
- Activez le service à l'aide de la commande : sudo systemctl enable TrafficRecorder.service
Arrêter le service Linux
- Arrêtez le service à l'aide de la commande : sudo systemctl stop TrafficRecorder.service
- Désactivez le service à l'aide de la commande : sudo systemctl disable TrafficRecorder.service
Utilisation de l'enregistreur de trafic
Une fois que l'enregistreur de trafic a démarré, vous pouvez lancer de nouvelles instances de l'enregistreur de trafic, pour enregistrer le trafic de votre application.
- Pour lancer une instance de l'enregistreur de trafic, utilisez la requête de l'API REST : StartProxy
- Envoyez votre trafic vers l'application que vous testez, via le port de l'enregistreur de trafic défini.
- Lorsque vous avez terminé, envoyez la demande API REST : StopProxy.
- 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 de l'enregistreur de trafic AppScan.
- 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 le lien vers la documentation : https://<domain>:9443/ase/api/pages/apidocs.html. Pour plus d'informations, voir la section Commandes de l'API de l'enregistreur de trafic.
Commandes de l'API de l'enregistreur de trafic
Une fois que l'enregistreur de trafic a démarré, vous pouvez lancer une instance de l'enregistreur de trafic 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 : https://<server>:<port>
Toutes les commandes pointent vers un nœud final qui ressemble à ceci :
https://[server]:[port]/automation/
server = adresse IP de la machine sur laquelle l'enregistreur de trafic est installé (la valeur par défaut est localhost).
port = port sur lequel l'enregistreur de trafic écoute
"StartProxy"
- URL : https://[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"
- URL : https://[server]:[port]/automation/StopProxy/<recordingPort>
- Type de demande : GET
"StopAllProxies"
Arrêtez toutes les instances de l'enregistreur de trafic en cours d'exécution. Cette commande permet d'arrêter toutes les instances de l'enregistreur de trafic sur tous les ports, y compris ceux démarrés par d'autres utilisateurs.
- URL : https://[server]:[port]/automation/StopAllProxies
- Type de demande : POST
"EncryptDastConfig"
- URL : https://[server]:[port]/automation/EncryptDastConfig
- Type de demande : POST
"DownloadEncryptedDast"
- URL : https://[server]:[port]/automation/DownloadEncryptedDastConfig/<uuid>
- Type de demande : GET
"Trafic"
- URL : https://[server]:[port]/automation/Traffic/<recordingPort>
- Type de demande : GET
"Certificat"
- URL : https://[server]:[port]/automation/Certificate
- Type de demande : GET