JSON-SQL-Einschleusungsschutzprüfung
Eine eingehende JSON-Anforderung kann eine SQL-Einschleusung in Form von partiellen SQL-Abfragezeichenfolgen oder nicht autorisierten Befehlen im Code enthalten. Dies führt zum Diebstahl von Daten aus der JSON-Datenbank Ihrer Webserver. Nach Erhalt einer solchen Anfrage blockiert die Appliance eine solche Anfrage zum Schutz Ihrer Daten.
Stellen Sie sich ein Szenario vor, in dem ein Client eine JSON-SQL-Anforderung an eine NetScaler Appliance sendet, der JSON-Parser die Anforderungsnutzlast analysiert und wenn eine SQL-Einschleusung beobachtet wird, setzt die Appliance Einschränkungen für den JSON-SQL-Inhalt durch. Die Einschränkung erzwingt eine Größenbeschränkung für die JSON-SQL-Anforderung. Wenn eine JSON-SQL-Einschleusung beobachtet wird, führt die Appliance daher eine Aktion aus und antwortet mit der JSON-SQL-Fehlerseite.
Konfigurieren des JSON-SQL-Einschleusungsschutz
Um den JSON-SQL-Schutz zu konfigurieren, müssen Sie die folgenden Schritte ausführen:
- Fügen Sie das Anwendungsfirewall-Profil als JSON hinzu.
- Festlegen des Anwendungs-Firewall-Profils für JSON SQL Injection-Einstellungen
- Konfigurieren Sie die JSON-SQL-Aktion, indem Sie das Anwendungs-Firewall-
Anwendungs-Firewall-Profil vom Typ JSON hinzufügen
Sie müssen zuerst ein Profil erstellen, das angibt, wie die Anwendungsfirewall Ihre JSON-Webinhalte vor JSON-SQL-Einschleusung-Angriffen schützen muss. Geben Sie in der Befehlszeile Folgendes ein:
add appfw profile <name> -type (HTML | XML | JSON)
Hinweis:
Wenn Sie den Profiltyp auf JSON festlegen, sind andere Prüfungen wie HTML oder XML nicht anwendbar.
Beispiel
add appfw profile profile1 –type JSON
Konfigurieren der Aktion JSON SQL Injection
Sie müssen eine oder mehrere JSON SQL Injection-Aktionen konfigurieren, um Ihre Anwendung vor JSON-SQL-Einschleusung-Angriffen zu schützen. Geben Sie in der Befehlszeile Folgendes ein:
set appfw profile <name> - JSONSQLInjectionAction [block] [log] [stats] [none]
Die SQL-Einschleusung-Aktionen sind: Blockieren — Verbindungen blockieren, die diese Sicherheitsüberprüfung verletzen. Log - Protokollieren Sie Verstöße gegen diese Sicherheitsprüfung. Statistiken - Generieren Sie Statistiken für diese Sicherheitsüberprüfung. Keine — Deaktiviert alle Aktionen für diese Sicherheitsüberprüfung.
Konfigurieren des Typs JSON SQL Injection
Um den Typ JSON SQL Injection in einem Anwendungs-Firewall-Profil zu konfigurieren, geben Sie an der Eingabeaufforderung Folgendes ein:
set appfw profile <name> - JSONSQLInjectionType <JSONSQLInjectionType>
Beispiel
set appfw profile profile1 -JSONSQLInjectionType SQLKeyword
Wo die verfügbaren SQL Injection-Typen sind: Verfügbare SQL-Einschleusung-Typen. SQLSplChar. Sucht nach SQL-Sonderzeichen, SqlKeyword. Sucht nach SQL-Schlüsselwörtern. SQLSplCharANDKeyword. Prüft auf beides und blockiert, falls gefunden. SQLSplCharORKeyword.. Sperrt, wenn ein SQL-Sonderzeichen oder ein SPL-Schlüsselwort gefunden Mögliche Werte: SQLSplChar, SQLKeyword, SQLSplCharORKeyword, SQLSplCharANDKeyword.
Hinweis: Um eine oder mehrere Aktionen zu aktivieren, geben Sie “set appfw profile - jsonSqlInjectionAction” ein, gefolgt von den zu aktivierenden Aktionen.
Beispiel
set appfw profile profile1 -JSONSQLInjectionAction block log stat
Das folgende Beispiel zeigt eine Beispielnutzlast, die entsprechende Protokollnachricht und Statistikzähler:
Payload:
=======
{
"test": "data",
"username": "waf",
"password": "select * from t1;",
"details": {
"surname": "test",
"age": "23"
}
}
Log Message:
===========
08/19/2019:08:49:46 GMT pegasus121 Informational 0-PPE-0 : default APPFW APPFW_JSON_SQL 6656 0 : 10.217.32.165 18402-PPE0 - profjson http://10.217.32.147/test.html SQL Keyword check failed for object value(with violation="select(;)") starting at offset(52) <blocked>
Counters:
========
1 441083 1 as_viol_json_sql
3 0 1 as_log_json_sql
5 0 1 as_viol_json_sql_profile appfw__(profjson)
7 0 1 as_log_json_sql_profile appfw__(profjson)
<!--NeedCopy-->
Konfigurieren Sie den JSON-SQL-Injection-Schutz mithilfe der GUI
Gehen Sie wie folgt vor, um die JSON-SQL-Einschleusung-Schutzeinstellungen festzulegen.
- Navigieren Sie im Navigationsbereich zu Sicherheit > Profile.
- Klicken Sie auf der Seite Profile auf Hinzufügen.
- Klicken Sie auf der NetScaler Web App Firewall-Profilseite unter ErweiterteEinstellungen auf Sicherheitsprüfungen.
- Wechseln Sie im Abschnitt Sicherheitsprüfungen zu den JSON-SQL-Einschleusung-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.
- Wählen Sie die JSON SQL Injection-Aktionen aus.
- Klicken Sie auf OK.
- Klicken Sie auf der Seite NetScaler Web App Firewall Profile unter Erweiterte Einstellungen auf Ausnahmeregeln.
- Wählen Sie im Abschnitt Entspannungsregeln die JSON SQL Injection-Einstellungen aus und klicken Sie auf Bearbeiten.
- Geben Sie auf der Seite JSON SQL Injection Relaxation Rule die URL ein, an die die Anforderung gesendet werden muss. Alle an diese URL gesendeten Anfragen werden nicht blockiert.
-
Klicken Sie auf Erstellen.
Konfigurieren der Feinkornentspannung für den JSON-SQL-Einschleusungsschutz
Die Web App Firewall bietet Ihnen die Möglichkeit, einen bestimmten JSON-Schlüssel oder -Wert aus der JSON-basierten SQL Injection-Überprüfung zu lockern. Sie können mehrere Optionen zum Entspannen von JSON-Nutzlasten mithilfe von Feinkornrelaxierungsregeln konfigurieren.
Bisher bestand die einzige Möglichkeit, Lockerungen für JSON-Schutzprüfungen zu konfigurieren, darin, die gesamte URL anzugeben, wodurch die Überprüfung der gesamten URL umgangen würde.
Der JSON-basierte SQL-Sicherheitsschutz bietet Entspannung für Folgendes:
- Die wichtigsten Namen
- Die wichtigsten Werte
Mit der JSON-basierten SQL-Schutzprüfung können Sie Entspannungen konfigurieren, die bestimmte Muster zulassen und den Rest blockieren. Beispielsweise verfügt die Web App Firewall derzeit über einen Standardsatz von mehr als 100 SQL-Schlüsselwörtern. Da Hacker diese Schlüsselwörter bei SQL-Einschleusung-Angriffen verwenden können, kennzeichnet die Web App Firewall alle als potenzielle Bedrohungen. Wenn Sie ein oder mehrere Schlüsselwörter lockern möchten, die für den jeweiligen Standort als sicher gelten, können Sie eine Entspannungsregel konfigurieren, die die Sicherheitsüberprüfung Bypass und den Rest blockieren kann. Die in Relaxationen verwendeten Befehle haben optionale Parameter für Werttyp und Werteausdruck. Sie können angeben, ob der Wertausdruck ein regulärer Ausdruck oder eine literale Zeichenfolge ist. Der Werttyp kann leer gelassen werden, oder Sie haben die Möglichkeit, Keyword oder Special String auszuwählen.
Hinweis:
Reguläre Ausdrücke sind leistungsstark. Vor allem, wenn Sie mit regulären Ausdrücken im PCRE-Format nicht genau vertraut sind, überprüfen Sie alle regulären Ausdrücke, die Sie schreiben. Stellen Sie sicher, dass sie genau die URL definieren, die Sie als Ausnahme hinzufügen möchten, und nichts anderes. Die unvorsichtige Verwendung von Platzhaltern und insbesondere der Metazeichen- oder Platzhalterkombination mit Punkt-Sternchen (.*) kann zu Ergebnissen führen, die Sie nicht möchten, z. B. das Blockieren des Zugriffs auf Webinhalte, die Sie nicht blockieren wollten, oder das Zulassen eines Angriffs, den die JSON-SQL-Einschleusung-Prüfung sonst blockiert hätte.
Zu berücksichtigende Punkte
- Der Wertausdruck ist ein optionales Argument. Ein Feldname hat möglicherweise keinen Wertausdruck.
- Ein Schlüsselname kann an Ausdrücke mit mehreren Werten gebunden werden.
- Wertausdrücken muss ein Werttyp zugewiesen werden. Der Werttyp kann sein: 1) Schlüsselwort, 2) SpecialString.
- Sie können mehrere Entspannungsregeln pro Schlüsselname oder URL-Kombination festlegen.
Konfigurieren der JSON-Feinkorn-Entspannung für Befehlseinspritzangriffe mithilfe der Befehlsschnittstelle
Um die JSON-Dateikorn-Entspannungsregel zu konfigurieren, müssen Sie die Feinkornentspannungseinheiten an das Web App Firewall-Profil binden.
Geben Sie in der Befehlszeile Folgendes ein:
bind appfw profile <profile name> -jsoncmdURL <URL> -key <key name> -isregex <REGEX/NOTREGEX> -valueType <keyword/SpecialString> <value Expression> -isvalueRegex <REGEX/NOTREGEX>
<!--NeedCopy-->
Beispiel:
bind appfw profile appprofile1 -jsonsqlurl www.example.com -key stn_name -isRegex NOTREGEX -valueType Keyword “union” -isvalueRegex NOTREGEX
<!--NeedCopy-->
Konfigurieren der Feinkornentspannungsregel für JSON-basierte Befehlseinschleusungsangriffe über die GUI
- Navigieren Sie zu Application Firewall > Profile, wählen Sie ein Profil aus und klicken Sie auf Bearbeiten.
- Klicken Sie im Bereich Erweiterte Einstellungen auf Relaxationsregeln.
- Wählen Sie im Abschnitt Relaxationsregeln einen JSON-SQL-Injection-Datensatz aus und klicken Sie auf Bearbeiten.
- Klicken Sie im Schieberegler für JSON SQL Injection Relaxation Rule auf Hinzufügen
-
Legen Sie auf der Seite JSON SQL Injection Relaxation Rule die folgenden Parameter fest.
- Aktiviert
- Ist Name Regex
- Schlüsselname
- URL
- Werttyp
- Anmerkungen
- Ressourcen-ID
- Klicken Sie auf Erstellen.