ADC

SQL-Grammatikschutz für HTML- und JSON-Nutzlast

Citrix Web App Firewall verwendet einen Pattern-Match-Ansatz zum Erkennen von SQL-Injection-Angriffen in HTTP und JSON Payloads. Der Ansatz verwendet eine Reihe von vordefinierten Schlüsselwörtern und (oder ) Sonderzeichen, um einen Angriff zu erkennen und ihn als Verstoß zu kennzeichnen. Obwohl dieser Ansatz effektiv ist, kann dies zu vielen Fehlalarmen führen, was dazu führt, dass eine oder mehrere Entspannungsregeln hinzugefügt werden. Insbesondere wenn häufig verwendete Wörter wie “Select” und “From” in einer HTTP- oder JSON-Anfrage verwendet werden. Wir können Fehlalarme reduzieren, indem wir die Überprüfung des SQL-Grammatikschutzes HTML und die JSON Nutzlast implementieren.

Im bestehenden Pattern-Match-Ansatz wird ein SQL-Injection-Angriff 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 SQL-Anweisung sein. Im grammatikbasierten Ansatz wird jedoch ein SQL-Injection-Angriff nur erkannt, wenn ein Schlüsselwort oder ein Sonderzeichen in einer SQL-Anweisung vorhanden ist oder Teil einer SQL-Anweisung ist, wodurch falsch positive Szenarien reduziert werden.

Szenario zur Nutzung des SQL-Grammatikschutzes

Betrachten Sie eine Erklärung “Wählen Sie meine Tickets aus und treffen wir uns auf der Gewerkschaftsstation” in einer HTTP-Anfrage. Obwohl die Anweisung keine gültige SQL-Anweisung ist, erkennt der vorhandene Pattern-Match-Ansatz die Anforderung als SQL-Injection-Angriff, da die Anweisung Schlüsselwörter wie “Select”, “und” und “Union” verwendet. Im Falle des SQL-Grammatikansatzes wird die Anweisung jedoch nicht als Verstoßangriff erkannt, da die Schlüsselwörter nicht in einer gültigen SQL-Anweisung vorhanden sind oder nicht Teil einer gültigen SQL-Anweisung sind.

Der grammatikbasierte Ansatz kann auch für die Erkennung von SQL-Injection-Angriffen in JSON Payloads konfiguriert werden. Um eine Entspannungsregel hinzuzufügen, können Sie die bestehenden Entspannungsregeln wiederverwenden. Feinkörnige Entspannungsregeln gelten auch für die SQL-Grammatik, für Regeln mit “ValueType” “Schlüsselwort”. In der JSON SQL-Grammatik kann die vorhandene URL-basierte Methode wiederverwendet werden.

Grammatikbasierten SQL-Schutz für HTML mithilfe der CLI konfigurieren

Um die grammatikbasierte SQL-Erkennung zu implementieren, müssen Sie den Parameter “SqLinjectionGrammar” im Web App Firewall-Profil konfigurieren. In der Standardeinstellung ist der Parameter deaktiviert. Alle vorhandenen SQL Injection-Aktionen werden mit Ausnahme des Lernens unterstützt. Jedes neue Profil, das nach einem Upgrade erstellt wurde, unterstützt die SQL-Injection-Grammatik und hat weiterhin den Standardtyp als “Sonderzeichen oder Schlüsselwort” und muss explizit aktiviert sein.

Geben Sie in der Befehlszeile Folgendes ein:

add appfw profile <profile-name> –SQLInjectionAction <action-name> -SQLInjectionGrammar ON/OFF
<!--NeedCopy-->

Beispiel:

add appfw profile profile1 –SQLInjectionAction Block –SQLInjectionGrammar ON

Konfigurieren Sie den SQL-Mustervergleichsschutz und den grammatikbasierten Schutz für HTML mithilfe der CLI

Wenn Sie sowohl Grammatik-basierte als auch Pattern-Match-Ansätze aktiviert haben, führt die Appliance zuerst eine grammatikbasierte Erkennung durch, und wenn eine SQL-Einschleusungserkennung mit dem Aktionstyp auf blockiert festgelegt ist, wird die Anforderung blockiert (ohne die Erkennung mithilfe von Pattern-Match zu überprüfen).

Geben Sie in der Befehlszeile Folgendes ein:

add appfw profile <profile-name> –SQLInjectionAction <action-name> -SQLInjectionGrammar ON –SQLInjectionType <Any action other than ‘None’: SQLSplCharANDKeyword/ SQLSplCharORKeyword/ SQLSplChar/ SQLKeyword>
<!--NeedCopy-->

Beispiel:

add appfw profile p1 –SQLInjectionAction block – SQLInjectionGrammar ON –SQLInjectionType SQLSplChar

Konfigurieren Sie die SQL Injection-Prüfung nur mit grammatikalisiertem Schutz für HTML mithilfe der CLI

Geben Sie in der Befehlszeile Folgendes ein:

add appfw profile <profile-name> –SQLInjectionAction <action-name> -SQLInjectionGrammar ON –SQLInjectionType None
<!--NeedCopy-->

Beispiel:

add appfw profile p1 –SQLInjectionAction block – SQLInjectionGrammar ON –SQLInjectionType None

Binden Sie Relaxationsregeln für den grammatikbasierten SQL-Schutz für HTML mithilfe der CLI

Wenn Ihre Anwendung erfordert, dass Sie die SQL Einschleusungsprüfung für ein bestimmtes “ELEMENT” oder “ATTRIBUT” in der Nutzlast Bypass müssen, müssen Sie eine Entspannungsregel konfigurieren.

Hinweis:

Entspannungsregeln mit ValueType “Schlüsselwort” werden nur ausgewertet, wenn die Appliance mithilfe der SQL Grammatik die Erkennung durchführt.

Der SQL Befehl Injection Inspection Relaxation Rules hat die folgende Syntax. Geben Sie in der Befehlszeile Folgendes ein:

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

Beispiel:

bind appfw profile p1 -sqlinjection abc http://10.10.10.10/ bind appfw profile p1 –sqlinjection 'abc[0-9]+' http://10.10.10.10/ -isregex regEX bind appfw profile p1 –sqlinjection 'name' http://10.10.10.10/ -valueType Keyword 'selec[a-z]+' -isvalueRegex regEX

Konfigurieren Sie den grammatikbasierten SQL-Schutz für HTML mithilfe der GUI

Führen Sie die GUI-Prozedur ab, um die grammatikbasierte HTML SQL Injection Erkennung zu konfigurieren

  1. Navigieren Sie im Navigationsbereich zu Sicherheit > Profile.
  2. Klicken Sie auf der Seite Profile auf Hinzufügen.
  3. Klicken Sie auf der NetScaler Web App Firewall-Profilseite unter ErweiterteEinstellungen auf Sicherheitsprüfungen.
  4. Wechseln Sie im Abschnitt Sicherheitsprüfungen zu Einstellungen für HTML SQL Injection.
  5. Klicken Sie auf das Symbol für die ausführbare Datei neben dem Kontrollkästchen.
  6. Klicken Sie auf Aktionseinstellungen, um die Seite Einstellungen für HMTL SQL Injection aufzurufen.
  7. Aktivieren Sie das Kontrollkästchen Mit SQL-Grammatik prüfen.
  8. Klicken Sie auf OK.

Konfigurieren Sie den grammatikbasierten SQL-Schutz für JSON-Payload mithilfe der CLI

Um die grammatikbasierte SQL-Erkennung für die JSON-Nutzlast zu implementieren, müssen Sie den Parameter “JsonSqLinjectionGrammar” im Web App Firewall-Profil konfigurieren. In der Standardeinstellung ist der Parameter deaktiviert. Alle vorhandenen SQL Injection-Aktionen werden mit Ausnahme des Lernens unterstützt. Jedes neue Profil, das nach einem Upgrade erstellt wurde, unterstützt die SQL-Injection-Grammatik und hat weiterhin den Standardtyp als “Sonderzeichen oder Schlüsselwort” und Sie müssen es explizit aktivieren.

Geben Sie in der Befehlszeile Folgendes ein:

add appfw profile <profile-name> -type JSON –JSONSQLInjectionAction <action-name> -JSONSQLInjectionGrammar ON/OFF
<!--NeedCopy-->

Beispiel:

add appfw profile profile1 –type JSON –JSONSQLInjectionAction Block –JSONSQLInjectionGrammar ON

Konfigurieren Sie den SQL-Mustervergleichsschutz und den grammatikbasierten Schutz für JSON-Nutzdaten mithilfe der CLI

Wenn Sie sowohl Grammatik-basierte als auch Pattern-Match-Prüfungen aktiviert haben, führt die Appliance zuerst eine grammatikbasierte Erkennung durch, und wenn eine SQL-Einschleusungserkennung mit dem Aktionstyp auf blockiert festgelegt ist, wird die Anforderung blockiert (ohne die Erkennung mithilfe von Pattern-Match zu überprüfen).

Hinweis:

Entspannungsregeln mit ValueType “Schlüsselwort” werden nur ausgewertet, wenn die Appliance die Erkennung mithilfe der SQL-Grammatik durchführt.

Geben Sie in der Befehlszeile Folgendes ein:

add appfw profile <profile-name> -type JSON –JSONSQLInjectionAction <action-name> -JSONSQLInjectionGrammar ON –JSONSQLInjectionType <Any action other than ‘None’: SQLSplCharANDKeyword/ SQLSplCharORKeyword/ SQLSplChar/ SQLKeyword>
<!--NeedCopy-->

Beispiel:

add appfw profile p1 –type JSON –JSONSQLInjectionAction block – JSONSQLInjectionGrammar ON –JSONSQLInjectionType SQLSplChar

Konfigurieren Sie mithilfe der CLI den grammatikbasierten Schutz nur für die SQL-Injection-Prüfung für JSON-Nutzdaten

Geben Sie in der Befehlszeile Folgendes ein:

add appfw profile <profile-name> -type JSON –JSONSQLInjectionAction <action-name> -JSONSQLInjectionGrammar ON –JSONSQLInjectionType None
<!--NeedCopy-->

Beispiel:

add appfw profile p1 –type JSON –JSONSQLInjectionAction block – JSONSQLInjectionGrammar ON –JSONSQLInjectionType None

Binden Sie URL-basierte Entspannungsregeln für den grammatikbasierten JSON-SQL-Schutz für JSON-Nutzdaten mithilfe der CLI

Wenn Ihre Anwendung erfordert, dass Sie die JSON-Befehlseinschleusungsprüfung für ein bestimmtes “ELEMENT” oder “ATTRIBUT” in der Nutzlast umgehen müssen, können Sie eine Entspannungsregel konfigurieren. Die Relaxationsregeln für die JSON-Befehlseinschleusungsprüfung haben folgende Syntax. Geben Sie in der Befehlszeile Folgendes ein:

bind appfw profile <profile name> –JSONCMDURL <expression> -comment <string> -isAutoDeployed ( AUTODEPLOYED | NOTAUTODEPLOYED ) -state ( ENABLED | DISABLED )
<!--NeedCopy-->

Beispiel:

bind appfw profile p1 -sqlinjection abc http://10.10.10.10/ bind appfw profile p1 –sqlinjection 'abc[0-9]+' http:// 10.10.10.10/ -isregex regEX bind appfw profile p1 –sqlinjection 'name' http://10.10.10.10/ -valueType Keyword 'selec[a-z]+' -isvalueRegex regEX

Konfigurieren Sie den grammatikbasierten SQL-Schutz für JSON-Payload mithilfe der GUI

Führen Sie die GUI-Prozedur ab, um die grammatikbasierte JSON SQL Injection Erkennung zu konfigurieren.

  1. Navigieren Sie im Navigationsbereich zu Sicherheit > Profile.
  2. Klicken Sie auf der Seite Profile auf Hinzufügen.
  3. Klicken Sie auf der Profilseite der Citrix Web App Firewall unter Erweiterte Einstellungen auf Sicherheitsprüfungen.
  4. Wechseln Sie im Abschnitt Sicherheitsprüfungen zu den JSON-SQL-Einschleusung-Einstellungen.
  5. Klicken Sie auf das Symbol für die ausführbare Datei neben dem Kontrollkästchen.
  6. Klicken Sie auf Aktionseinstellungen, um die Seite JSON SQL Injection Settings aufzurufen.
  7. Aktivieren Sie das Kontrollkästchen Mit SQL-Grammatik prüfen.
  8. Klicken Sie auf OK.