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.
Konfigurieren Sie den grammatikbasierten SQL-Schutz mit der CLI
Um die grammatikbasierte SQL-Erkennung zu implementieren, müssen Sie den Parameter “SqLinjectionGrammar” im Web App Firewall-Profil konfigurieren. Standardmäßig 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 an der Eingabeaufforderung 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-Pattern-Match-Schutz und den grammatikbasierten Schutz über die Befehlszeilenschnittstelle
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 an der Eingabeaufforderung 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 SQL Injection Check nur mit grammatikbasiertem Schutz über die Befehlszeilenschnittstelle
Geben Sie an der Eingabeaufforderung 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 Entspannungsregeln für den grammatikbasierten SQL-Schutz über die Befehlszeilenschnittstelle
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 Entspannungsregeln für die Einschleusungsinspektion haben die folgende Syntax. Geben Sie an der Eingabeaufforderung 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 JSON-Nutzlast über die Befehlszeilenschnittstelle
Um die grammatikbasierte SQL-Erkennung für die JSON-Nutzlast zu implementieren, müssen Sie den Parameter “JsonSqLinjectionGrammar” im Web App Firewall-Profil konfigurieren. Standardmäßig 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 an der Eingabeaufforderung 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-Muster-Match-Schutz und den grammatikbasierten Schutz über die Befehlszeilenschnittstelle
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 an der Eingabeaufforderung 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 den grammatikbasierten SQL-Schutz für JSON-Nutzlast über die Befehlszeilenschnittstelle
Geben Sie an der Eingabeaufforderung 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 JSON SQL grammatikbasierten Schutz über die Befehlszeilenschnittstelle
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.
Der JSON
Befehl Entspannungsregeln für die Einschleusungsinspektion haben die folgende Syntax. Geben Sie an der Eingabeaufforderung 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 über die grafische Benutzeroberfläche
Führen Sie die GUI-Prozedur ab, um die grammatikbasierte HTML SQL Injection Erkennung zu konfigurieren
- Navigieren Sie im Navigationsbereich zu Sicherheit > Profile.
- Klicken Sie auf der Seite Profile auf Hinzufügen.
- Klicken Sie auf der Seite Citrix Web App Firewall Profile unter Erweiterte Einstellungen auf Sicherheitsprüfungen.
- Wechseln Sie im Abschnitt Sicherheitsprüfungen zu Einstellungen für HTML SQL Injection .
- Klicken Sie auf das Symbol für die ausführbare Datei neben dem Kontrollkästchen.
-
Klicken Sie auf Aktionseinstellungen, um die Seite Einstellungen für HMTL SQL Injection aufzurufen.
- Aktivieren Sie das Kontrollkästchen Mit SQL-Grammatik prüfen.
- Klicken Sie auf OK.
Konfigurieren Sie den grammatikbasierten SQL-Schutz für JSON-Nutzlast über die grafische Benutzeroberfläche
Führen Sie die GUI-Prozedur ab, um die grammatikbasierte JSON SQL Injection Erkennung zu konfigurieren.
- Navigieren Sie im Navigationsbereich zu Sicherheit > Profile.
- Klicken Sie auf der Seite Profile auf Hinzufügen.
- Klicken Sie auf der Seite Citrix Web App Firewall Profile unter Erweiterte Einstellungen auf Sicherheitsprüfungen.
- Wechseln Sie im Abschnitt Sicherheitsprüfungen zu JSON SQL Injection-Einstellungen .
- Klicken Sie auf das Symbol für die ausführbare Datei neben dem Kontrollkästchen.
- Klicken Sie auf Aktionseinstellungen, um die Seite JSON SQL Injection Settings aufzurufen.
- Aktivieren Sie das Kontrollkästchen Mit SQL-Grammatik prüfen.
-
Klicken Sie auf OK.
In diesem Artikel
- Szenario zur Nutzung des SQL-Grammatikschutzes
- Konfigurieren Sie den grammatikbasierten SQL-Schutz mit der CLI
- Konfigurieren Sie den SQL-Pattern-Match-Schutz und den grammatikbasierten Schutz über die Befehlszeilenschnittstelle
- Konfigurieren Sie SQL Injection Check nur mit grammatikbasiertem Schutz über die Befehlszeilenschnittstelle
- Binden Sie Entspannungsregeln für den grammatikbasierten SQL-Schutz über die Befehlszeilenschnittstelle
- Konfigurieren Sie den grammatikbasierten SQL-Schutz für JSON-Nutzlast über die Befehlszeilenschnittstelle
- Konfigurieren Sie den SQL-Muster-Match-Schutz und den grammatikbasierten Schutz über die Befehlszeilenschnittstelle
- Konfigurieren Sie den grammatikbasierten SQL-Schutz für JSON-Nutzlast über die Befehlszeilenschnittstelle
- Binden Sie URL-basierte Entspannungsregeln für JSON SQL grammatikbasierten Schutz über die Befehlszeilenschnittstelle
- Konfigurieren Sie den grammatikbasierten SQL-Schutz über die grafische Benutzeroberfläche
- Konfigurieren Sie den grammatikbasierten SQL-Schutz für JSON-Nutzlast über die grafische Benutzeroberfläche