Vérification des scripts inter-sites HTML
-
Bloc—Si vous activez le bloc, l'action de blocage est déclenchée si les balises de script intersite sont détectées dans la requête.
-
Journal : si vous activez la fonction de journal, le contrôle HTML Cross-Site Scripting génère des messages de journal indiquant les actions qu'il effectue. Si le bloc est désactivé, un message de journal distinct est généré pour chaque en-tête ou champ de formulaire dans lequel la violation de script intersite a été détectée. Toutefois, un seul message est généré lorsque la demande est bloquée. De même, un message de journal par requête est généré pour l'opération de transformation, même lorsque les balises de script intersite sont transformées en plusieurs champs. Vous pouvez surveiller les journaux pour déterminer si les réponses aux demandes légitimes sont bloquées. Une forte augmentation du nombre de messages de journal peut indiquer des tentatives de lancement d'une attaque.
-
Statistiques : si cette option est activée, la fonction de statistiques recueille des statistiques sur les violations et les journaux. Une augmentation inattendue du compteur de statistiques peut indiquer que votre application est attaquée. Si les demandes légitimes sont bloquées, vous devrez peut-être revoir la configuration pour voir si vous devez configurer de nouvelles règles de relaxation ou modifier les règles existantes.
-
Learn—Si vous n'êtes pas sûr des règles de relaxation qui conviennent parfaitement à votre application, vous pouvez utiliser la fonctionnalité d'apprentissage pour générer des recommandations de règles de script inter-site HTML basées sur les données apprises. Le moteur d'apprentissage du Web App Firewall surveille le trafic et fournit des recommandations d'apprentissage basées sur les valeurs observées. Pour obtenir un avantage optimal sans compromettre les performances, vous pouvez activer l'option d'apprentissage pendant une courte période afin d'obtenir un échantillon représentatif des règles, puis déployer les règles et désactiver l'apprentissage.
-
Transformer les scripts intersites : si cette option est activée, le Web App Firewall apporte les modifications suivantes aux demandes qui correspondent à la vérification de script inter-site HTML :
-
Crochet d'angle gauche (<) à l'équivalent d'entité de caractères HTML (<)
-
Angle droit (>) à l'équivalent d'entité de caractères HTML (>)
-
<script>, et exécutent ainsi du code malveillant. Si vous activez à la fois la vérification et la transformation de l'en-tête de demande, tous les caractères spéciaux trouvés dans les en-têtes de requête sont également modifiés. Si les scripts de votre site Web protégé contiennent des fonctionnalités de script intersite, mais que votre site Web ne s'appuie pas sur ces scripts pour fonctionner correctement, vous pouvez désactiver le blocage et activer la transformation en toute sécurité. Cette configuration garantit qu'aucun trafic Web légitime n'est bloqué, tout en arrêtant toute attaque de script intersite potentielle.
-
Vérifiez les URL complètes pour les scripts inter-sites. Si la vérification des URL complètes est activée, le Web App Firewall examine des URL entières pour les attaques de script inter-sites HTML au lieu de vérifier uniquement les parties de requête des URL.
-
Cochez les en-têtes de requête. Si la vérification des en-têtes de requête est activée, le Web App Firewall examine les en-têtes des requêtes pour les attaques de script inter-sites HTML, au lieu de se contenter d'URL. Si vous utilisez l'interface graphique, vous pouvez activer ce paramètre dans l'onglet Paramètres du profil Pare-feu de l'application Web.
-
InspectQueryContentTypes. Si l'inspection des requêtes de requête est configurée, le pare-feu d'application examine la requête des demandes d'attaques de script intersite pour les types de contenu spécifiques. Si vous utilisez l'interface graphique, vous pouvez configurer ce paramètre dans l'onglet Paramètres du profil Pare-feu de l'application.
Scripting inter-site Relaxations à grain fin
-
script inter-site Attributs autorisés : Il existe 52 attributs autorisés par défaut, tels que, abbr, accesskey, align, alt, axis, bgcolor, border, cell padding, cell spacing, char, charoff, charset et ainsi de suite
-
script inter-site balises autorisées : Il y a 47 balises autorisées par défaut, telles que, address, basefont, bgsound, big, blockquote, bg, br, légende, center, ****cite, dd, del et ainsi de suite
-
Script inter-site Refusé Patterns : Il y a 129 modèles refusés par défaut, tels que, FSCommand, javascript :, OnAbort, OnActivate et ainsi de suite
-
L'expression de valeur est un argument facultatif. Un nom de champ peut ne pas avoir d'expression de valeur.
-
Un nom de champ peut être lié à plusieurs expressions de valeur.
-
Un type de valeur doit être affecté aux expressions de valeur. Le type de valeur de script inter-site peut être : 1) Tag, 2) Attribut ou 3) Pattern.
-
Vous pouvez avoir plusieurs règles de relaxation par combinaison nom/URL de champ
-
Les noms des champs de formulaire et les URL d'action ne sont pas sensibles à la casse.
Utilisation de la ligne de commande pour configurer la vérification HTML cross-site Scripting
-
set appfw profile « Descriptions des paramètres fournies en bas de la page. «)
-
<name> -crossSiteScriptingAction (([block] [learn] [log] [stats]) | [**none**]) -
set appfw profile « Descriptions des paramètres fournies en bas de la page. «)
-
<name> **-crossSiteScriptingTransformUnsafeHTML** (ON | OFF) -
Définissez le profil appfw Descriptions des paramètres fournies en bas de la page.
-
<name> -crossSiteScriptingCheckCompleteURLs (ON | OFF) -
Définissez le profil appfw Descriptions des paramètres fournies en bas de la page.
-
<name> - checkRequestHeaders (ON | OFF)Description des paramètres fournie en bas de la page.” -
<name> - CheckRequestQueryNonHtml (ON | OFF)Description des paramètres fournie en bas de la page.”
-
bind appfw profile <name> -crossSiteScripting <String> [isRegex (REGEX | NOTREGEX)] <formActionURL> [-location <location>] [-valueType (Tag|Attribute|Pattern) [<valueExpression>] [-isValueRegex (REGEX | NOTREGEX) ]] -
unbind appfw profile <name> -crossSiteScripting <String> <formActionURL> [-location <location>] [-valueType (Tag |Attribute|Pattern) [<valueExpression>]]
Utilisation de l'interface graphique pour configurer la vérification des scripts entre sites HTML
-
Accédez à Application Pare-feu > Profils, mettez en surbrillance le profil cible, puis cliquez sur Modifier.
-
Dans le volet Paramètres avancés, cliquez sur Vérifications de sécurité.
-
Accédez à Application Pare-feu > Profils, mettez en surbrillance le profil cible, puis cliquez sur Modifier.
-
Dans le volet Paramètres avancés, cliquez sur Règles de relaxation.
-
Dans le tableau Règles de relaxation, double-cliquez sur l'entrée HTML Cross-Site Scripting, ou sélectionnez-la et cliquez sur Modifier.
-
Dans la boîte de dialogue Règles de relaxation de script inter-site HTML, effectuez les opérations Ajouter, Modifier, Supprimer, Activer ou Désactiver pour les règles de relaxation.
-
Pour afficher les modèles de script intersite par défaut :
xss/allowed/attribute
xss/allowed/tag
xss/denied/pattern
-
Pour personnaliser des éléments de script inter-sites : vous pouvez modifier l'objet de signature défini par l'utilisateur pour personnaliser la balise autorisée, les attributs autorisés et les motifs refusés. Vous pouvez ajouter de nouvelles entrées ou supprimer celles qui existent déjà.
Utilisation de la fonctionnalité d'apprentissage avec la vérification de script inter-site HTML
-
show appfw learningdata <profilename> crossSiteScripting -
rm appfw learningdata <profilename> -crossSiteScripting <string> <formActionURL> [<location>] [<valueType> <valueExpression>] -
export appfw learningdata <profilename> **crossSiteScripting*
-
Accédez à Application Pare-feu > Profils, mettez en surbrillance le profil cible, puis cliquez sur Modifier.
-
Dans le volet Paramètres avancés, cliquez sur Règles apprises. Vous pouvez sélectionner l'entrée HTML Cross-Site Scripting dans le tableau Règles apprises et double-cliquer dessus pour accéder aux règles apprises. Le tableau affiche les colonnes Nom du champ,URL A ction, Typede valeur, Valeuret Hits \. Vous pouvez déployer les règles apprises ou modifier une règle avant de la déployer en tant que règle de relaxation. Pour ignorer une règle, vous pouvez la sélectionner et cliquer sur le bouton Ignorer. Vous ne pouvez modifier qu'une seule règle à la fois, mais vous pouvez sélectionner plusieurs règles à déployer ou à ignorer.
Utilisation de la fonctionnalité de journal avec la vérification des scripts inter-sites HTML
/var/log/ dossier pour accéder aux messages de journal relatifs aux violations de script inter-site HTML :
Shell tail -f /var/log/ns.log | grep APPFW_cross-site scripting
Jul 11 00:45:51 <local0.info> 10.217.31.98 CEF:0|Citrix|Citrix ADC|NS11.0|APPFW|\*\*APPFW_cross-site scripting\*\*|6|src=10.217.253.62 geolocation=Unknown spt=4840 method=GET request=http://aaron.stratum8.net/FFC/CreditCardMind.html?abc=%3Cdef%3E msg=\*\*Cross-site script check failed for field abc="Bad tag: def"\*\* cn1=133 cn2=294 cs1=pr_ffc cs2=PPE1 cs3=eUljypvLa0BbabwfGVE52Sewg9U0001 cs4=ALERT cs5=2015 act=\*\*not blocked\*\*
Jul 11 01:00:28 <local0.info> 10.217.31.98 07/11/2015:01:00:28 GMT ns 0-PPE-0 : default APPFW \*\*APPFW_cross-site scripting\*\* 132 0 : 10.217.253.62 392-PPE0 eUljypvLa0BbabwfGVE52Sewg9U0001 pr_ffc http://aaron.stratum8.net/FFC/login.php?login_name=%3CBOB%3E&passwd=&drinking_pref=on &text_area=&loginButton=ClickToLogin&as_sfid=AAAAAAVFqmYL68IGvkrcn2pzehjfIkm5E6EZ9FL8YLvIW_41AvAATuKYe9N7uGThSpEAxbb0iBx55jyvqOZNiVK_XwEPstMYvWHxfUWl62WINwRMrKsEDil-FC4llF \*\*Cross-site script special characters seen in fields <transformed>\*\*
Accéder aux messages du journal à l'aide de l'interface graphique
-
Accédez au pare-feu des applications > Profils, sélectionnez le profil cible et cliquez sur Vérifications de sécurité. Mettez en surbrillance la ligne HTML Cross-Site Scripting, puis cliquez sur Journaux. Lorsque vous accédez aux journaux directement à partir de la vérification HTML Cross-Site Scripting du profil, l'interface graphique filtre les messages de journal et affiche uniquement les journaux relatifs à ces violations de vérification de sécurité.
-
Vous pouvez également accéder à la visionneuse Syslog en accédant à Citrix ADC > Système > Audit. Dans la section Messages d'audit, cliquez sur le lien Messages Syslog pour afficher la visionneuse Syslog, qui affiche tous les messages de journal, y compris les autres journaux de violation des contrôles de sécurité. Ceci est utile pour le débogage lorsque plusieurs violations de vérification de sécurité peuvent être déclenchées pendant le traitement de la demande.
-
Accédez à Application Firewall > Stratégies > Audit. Dans la section Messages d'audit, cliquez sur le lien Messages Syslog pour afficher la visionneuse Syslog, qui affiche tous les messages de journal, y compris les autres journaux de violation des contrôles de sécurité.
Configurer le clic pour déployer la fonctionnalité à l'aide de l'interface graphique
-
Dans la visionneuse Syslog, sélectionnez APPFW dans les options du module .
-
Sélectionnez le script App_cross-site comme Type d'événement pour filtrer les messages de journal correspondants.
-
Activez la case à cocher pour identifier la règle à déployer.
-
Utilisez la liste déroulante d'options Action pour déployer la règle de relaxation.
-
Vérifiez que la règle apparaît dans la section Règle de relaxation correspondante.
Statistiques pour les violations de script inter-site HTML
> sh appfw stats
> **stat appfw profile** <profile name>
Afficher les statistiques de script inter-sites HTML à l'aide de l'interface graphique
-
Accédez à Sécurité > Pare-feu d'application > Profils > Statistiques.
-
Dans le volet droit, accédez au lien Statistiques.
-
Utilisez la barre de défilement pour afficher les statistiques sur les violations et les journaux de script inter-site HTML. Le tableau des statistiques fournit des données en temps réel et est mis à jour toutes les 7 secondes.
Résumé
-
Prise encharge intégrée de la protection contre les attaques par script inter-site HTML : Citrix Web App Firewall protège contre les attaques de script inter-site en surveillant une combinaison d'attributs et de balises autorisés et de modèles refusés dans la charge utile reçue. Toutes les balises autorisées par défaut intégrées, les attributs autorisés et les motifs refusés utilisés par la vérification des scripts inter-sites sont spécifiés dans le fichier /netscaler/default_custom_settings.xml.
-
Personnalisation : vous pouvez modifier la liste par défaut de balises, d'attributs et de modèles pour personnaliser l'inspection de vérification de sécurité des scripts inter-site en fonction des besoins spécifiques de votre application. Effectuez une copie de l'objet signature par défaut, modifiez les entrées existantes ou ajoutez de nouvelles entrées. Liez cet objet signature à votre profil pour utiliser la configuration personnalisée.
-
Modèle de sécurité hybride : les signatures et les protections de sécurité profondes utilisent les modèles de script SQL/cross-site spécifiés dans l'objet signature lié au profil. Si aucun objet de signature n'est lié au profil, les modèles de script SQL/cross-site présents dans l'objet signature par défaut sont utilisés.
-
Transform—Notez ce qui suit à propos de l'opération de transformation :
-
Relaxation et apprentissage à grains fins. Affinez la règle de relaxation pour relâcher un sous-ensemble d'éléments de script intersite de l'inspection de vérification de sécurité, mais détectez le reste. Le moteur d'apprentissage recommande un type de valeur spécifique et des expressions de valeur basées sur les données observées.
-
Cliquez pour déployer : sélectionnez un ou plusieurs messages de journal des violations de script intersite dans la visionneuse syslog et déployez-les en tant que règles de relaxation.
-
Charset—Le jeu de caractères par défaut du profil doit être défini en fonction des besoins de l'application. Par défaut, le jeu de caractères de profil est défini sur Anglais US (ISO-8859-1). Si une demande est reçue sans le jeu de caractères spécifié, le Web App Firewall traite la demande comme si elle était ISO-8859-1. Le caractère ouvert (<) or the close bracket character (>) ne sera pas interprété comme des balises de script inter-sites si ces caractères sont codés dans d'autres jeux de caractères. Par exemple, si une requête contient une chaîne de caractères UTF-8 "%uff1cscript%uff1e**"**mais que le jeu de caractères n'est pas spécifié sur la page de requête, la violation de script intersite peut ne pas être déclenchée sauf si le jeu de caractères par défaut du profil est spécifié comme Unicode.