Citrix ADC

Grammatikbasierter Schutz vor Befehlseinschleusung für HTML-Payload

Citrix Web App Firewall verwendet einen Pattern-Match-Ansatz zur Erkennung von Befehlseinschleusungsangriffen in HTML-Payloads Der Ansatz verwendet eine Reihe vordefinierter Schlüsselwörter und (oder) Sonderzeichen, um einen Angriff zu erkennen und ihn als Verstoß zu kennzeichnen. Obwohl dieser Ansatz effektiv ist, kann er zu vielen Fehlalarmen führen, die dazu führen, dass eine oder mehrere Relaxationsregeln hinzugefügt werden. Insbesondere, wenn ein häufig verwendetes Wort wie “Exit” in einer HTTP-Anfrage verwendet wird. Wir können Fehlalarme reduzieren, indem wir den grammatikbasierten Schutz vor Befehlseinschleusung für die HTML-Payload implementieren.

Beim Pattern-Match-Ansatz wird ein Befehlseinschleusungsangriff identifiziert, wenn ein vordefiniertes Schlüsselwort und (oder) ein Sonderzeichen in einer HTTP-Anforderung vorhanden ist. In diesem Fall muss die Anweisung keine gültige Befehlseinschleusungsanweisung sein. Beim grammatikbasierten Ansatz wird ein Befehlseinschleusungsangriff jedoch nur erkannt, wenn ein Schlüsselwort oder ein Sonderzeichen in einer Befehlseinschleusungsanweisung vorhanden ist. Daher werden falsch positive Szenarien reduziert.

Anwendungsszenario für grammatikbasierten Schutz vor Befehlseinschleusung

Betrachten Sie eine Aussage: “Rush towards the exit!” in einer HTTP-Anfrage. Obwohl die Anweisung keine gültige Befehlseinschleusungsanweisung ist, erkennt der Pattern-Match-Ansatz die Anforderung aufgrund des Schlüsselworts “exit” als Befehlseinschleusungsangriff. Beim grammatikbasierten Ansatz des Befehlseinschleusungsschutz wird die Anweisung jedoch nicht als Angriff erkannt, da die Schlüsselwörter in einer gültigen Befehlseinschleusunganweisung nicht vorhanden sind.

Konfigurieren der grammatikbasierten Schutzparameter gegen Befehlseinschleusungsangriffe über die Befehlszeilenschnittstelle

Um die grammatikbasierte Erkennung von Befehlseinschleusung zu implementieren, müssen Sie den Parameter “CMDInjectionGrammar” im Web App Firewall-Profil konfigurieren. Standardmäßig ist der Parameter deaktiviert. Alle vorhandenen Befehlseinschleusungaktionen außer Lernen werden unterstützt. Jedes nach einem Upgrade neu erstellte Profil unterstützt die Befehlseinschleusungsgrammatik. Das neue Profil hat weiterhin den Standardtyp “Sonderzeichen oder Schlüsselwort”, und die Befehlseinschleusungsgrammatik muss explizit aktiviert sein.

Geben Sie an der Eingabeaufforderung Folgendes ein:

add appfw profile <profile-name> –CMDInjectionAction <action-name> -CMDInjectionGrammar ON/OFF
<!--NeedCopy-->

Beispiel:

add appfw profile profile1 –CMDInjectionAction Block –CMDInjectionGrammar ON
<!--NeedCopy-->

Konfigurieren des Musterübereinstimmungsschutz und des grammatikbasierten Schutz vor Befehlseinschleusung über die CLI

Wenn Sie sowohl grammatikbasierte als auch Musterübereinstimmungsansätze aktiviert haben, führt die Appliance zunächst eine grammatikbasierte Erkennung durch. Wenn eine Befehlseinschleusung erkannt wird, bei der der Aktionstyp auf “Block” gesetzt ist, wird die Anforderung blockiert (ohne Überprüfung der Erkennung über Pattern-Match).

Geben Sie an der Eingabeaufforderung Folgendes ein:

add appfw profile <profile-name> –CMDInjectionAction <action-name> -CMDInjectionGrammar ON –CMDInjectionType <Any action other than ‘None’: CMDSplCharANDKeyword/ CMDSplCharORKeyword/ CMDSplChar/ CMDKeyword>
<!--NeedCopy-->

Beispiel:

add appfw profile p1 –CMDInjectionAction block – CMDInjectionGrammar ON –CMDInjectionType CMDSplChar
<!--NeedCopy-->

Konfigurieren der Befehlseinschleusungsprüfung nur mit grammatikbasiertem Schutz über die CLI

Geben Sie an der Eingabeaufforderung Folgendes ein:

add appfw profile <profile-name> –CMDInjectionAction <action-name> -CMDInjectionGrammar ON –CMDInjectionType None
<!--NeedCopy-->

Beispiel:

add appfw profile p1 –CMDInjectionAction block – CMDInjectionGrammar ON –CMDInjectionType None
<!--NeedCopy-->

Binden Sie Relaxationsregeln für den grammatikbasierten Schutz vor Befehlseinschleusung über die CLI

Wenn Ihre Anwendung erfordert, dass Sie die Befehlseinschleusungsprüfung für ein bestimmtes “ELEMENT” oder “ATTRIBUTE” in der HTML-Payload Bypass müssen, müssen Sie eine Relaxationsregel konfigurieren.

Hinweis:

Relaxationsregeln mit valueType “keyword” werden nur ausgewertet, wenn die Appliance die Erkennung über Befehlseinschleusungsgrammatik durchführt.

Die Relaxationsregeln für die Befehlseinschleusungsprüfung haben folgende Syntax. Geben Sie an der Eingabeaufforderung Folgendes ein:

bind appfw profile <name> -CMDInjection <String> [isRegex(REGEX| NOTREGE)] <formActionURL> [-location <location>] [-valueType (Keywor|SpecialString|Wildchar) [<valueExpression>][-isValueRegex (REGEX | NOTREGEX) ]]
<!--NeedCopy-->

Beispiel:

bind appfw profile p1 -cmdinjection abc http://10.10.10.10/

bind appfw profile p1 –cmdinjection 'abc[0-9]+' http://10.10.10.10/ -isregex regEX

bind appfw profile p1 –cmdinjection 'name' http://10.10.10.10/ -valueType Keyword 'exi[a-z]+' -isvalueRegex regEX
<!--NeedCopy-->

Konfigurieren des grammatikbasierten Schutz vor Befehlseinschleusung über die GUI

Führen Sie die folgenden Schritte aus, um die grammatikbasierte Erkennung von HTML-Befehlseinschleusung zu konfigurieren.

  1. Navigieren Sie zuSicherheit > Citrix Web App Firewall-Profil > Profile.

  2. Wählen Sie ein Profil aus und klicken Sie auf Bearbeiten.

  3. Gehen Sie zum Abschnitt Erweiterte Einstellungen und klicken Sie auf Sicherheitsüberprüfungen.

  4. Aktivieren Sie das Kontrollkästchen HTML Command Injection und klicken Sie auf Aktionseinstellungen.

    Befehlseinschleusung aktivieren

  5. Aktivieren Sie das Kontrollkästchen Mit CMD-Grammatik überprüfen.

  6. Wählen Sie unter Prüfanforderung enthalten die Option Keine

    Befehlseinschleusungsaktionseinstellungen

  7. Klicken Sie auf OK.