JSON-Befehlseinschleusungsprüfung
Die JSON-Befehlseinschleusungsprüfung untersucht den eingehenden JSON-Datenverkehr auf nicht autorisierte Befehle, die die Systemsicherheit beeinträchtigen oder das System modifizieren. Wenn bei der Untersuchung des Datenverkehrs schädliche Befehle erkannt werden, blockiert die Appliance die Anforderung oder führt die konfigurierte Aktion aus.
Bei einem Befehlseinschleusungsangriff zielt der Angreifer darauf ab, nicht autorisierte Befehle auf dem NetScaler-Betriebssystem oder dem Backend-Server auszuführen. Um dies zu erreichen, schleust der Angreifer Betriebssystembefehle über eine anfällige Anwendung ein. Die Back-End-Anwendung ist anfällig für Einschleusungsangriffe, wenn die Appliance eine Anfrage einfach ohne Sicherheitsüberprüfung weiterleitet. Daher ist es sehr wichtig, eine Sicherheitsüberprüfung zu konfigurieren, damit die NetScaler-Appliance Ihre Webanwendung schützen kann, indem sie unsichere Daten blockiert.
So funktioniert der Befehlseinschleusungsschutz
- Bei einer eingehenden JSON-Anforderung untersucht WAF den Datenverkehr auf Schlüsselwörter oder Sonderzeichen. Wenn die JSON-Anforderung keine Muster enthält, die mit einem der verweigerten Schlüsselwörter oder Sonderzeichen übereinstimmen, ist die Anforderung zulässig. Andernfalls wird die Anforderung basierend auf der konfigurierten Aktion blockiert, verworfen oder umgeleitet.
- Wenn Sie es vorziehen, ein Schlüsselwort oder ein Sonderzeichen von der Liste auszunehmen, können Sie eine Entspannungsregel erstellen, um die Sicherheitsüberprüfung unter bestimmten Bedingungen zu Bypass.
- Sie können die Protokollierung aktivieren, um Protokollmeldungen zu generieren Sie können die Protokolle überwachen, um festzustellen, ob Antworten auf legitime Anfragen blockiert werden. Ein starker Anstieg der Anzahl der Protokollmeldungen kann auf Versuche hinweisen, einen Angriff zu starten.
- Sie können die Statistikfunktion auch aktivieren, um statistische Daten zu Verstößen und Protokollen zu sammeln. Ein unerwarteter Anstieg im Statistikzähler deutet möglicherweise darauf hin, dass Ihre Anwendung angegriffen wird. Wenn legitime Anforderungen blockiert werden, müssen Sie möglicherweise die Konfiguration erneut aufrufen, um festzustellen, ob Sie die neue Entspannungsregel konfigurieren oder die vorhandene ändern müssen.
Schlüsselwörter und Sonderzeichen, die für die Befehlseinschleusung verweigert werden
Zum Erkennen und Blockieren von JSON-Befehlseinschleusungsangriffen hat die Appliance über eine Reihe von Mustern (Schlüsselwörter und Sonderzeichen), die in der Standardsignaturdatei definiert sind. Es folgt eine Liste der blockierten Schlüsselwörter beim Erkennen von Befehlseinschleusungsverstößen
<commandinjection>
<keyword type="LITERAL" builtin="ON">7z</keyword>
<keyword type="LITERAL" builtin="ON">7za</keyword>
<keyword type="LITERAL" builtin="ON">7zr</keyword>
…
</commandinjection>
<!--NeedCopy-->
In der Signaturdatei definierte Sonderzeichen sind:
| ; & $ > < ' \ ! >> #
Hinweis:
Die Liste der Schlüsselwörter und Muster finden Sie in der Datei /netscaler/default_signatures.xml.
Konfigurieren der JSON-Befehlseinschleusungsprüfung über die CLI
Sie können entweder den Befehl set appfw profile
verwenden oder den Befehl appfw profile
hinzufügen, um die Einstellungen für die JSON-Befehlseinschleusung zu konfigurieren. Sie können die Block-, Protokoll- und Statistikaktionen aktivieren. Sie müssen auch den Befehlseinschleusungstyp wie Schlüsselwörter und Zeichenfolgenzeichen festlegen, die Sie in den Nutzdaten erkennen möchten.
Geben Sie in der Befehlszeile Folgendes ein:
set appfw profile <profile-name> –cmdInjectionAction <action-name> -CMDInjectionType <CMDInjectionType>]
Hinweis:
Standardmäßig ist die Aktion zur Befehlseinschleusung auf Block, Log und Stats festgelegt. Außerdem wird der Standardeinschleusungsstyp des Befehls als festgelegt
CmdSplCharANDKeyWord
. Nach einem Upgrade ist für die vorhandenen Web App Firewall-Profile die Aktion auf Keine festgelegt.
Beispiel:
set appfw profile profile1 -JSONCMDInjectionAction block -JSONCMDInjectionType CmdSplChar
Dabei sind die verfügbaren JSON-Befehlseinschleusungsaktionen:
Keine — Deaktiviert den Befehlseinschleusungsschutz. Log — Protokollieren von Befehlseinschleusungsverstößen für die Sicherheitsprüfung Blockieren - blockiert Datenverkehr, der gegen die Befehlseinschleusungsüberprüfung verstößt. Statistik - Generiert Statistiken für Sicherheitsverletzungen durch Befehlseinschleusung.
Dabei sind die verfügbaren JSON-Befehlseinschleusungstypen:
Cmd SplChar
- Prüft Sonderzeichen
CmdKeyWord
- Prüft Schlüsselwörter zur Befehlseinschleusung
CmdSplCharANDKeyWord
- Dies ist die Standardaktion. Die Aktion prüft Sonderzeichen und Befehlseinschleusung. Schlüsselwörter und Blöcke nur, wenn beide vorhanden sind.
CmdSplCharORKeyWord
- Überprüft Sonderzeichen und Befehlseinschleusungsschlüsselwörter und blockiert, wenn gefunden.
Konfigurieren der Entspannungsregeln für die JSON-Befehlseinschleusungsprüfung
Wenn Ihre Anwendung erfordert, dass Sie die JSON-Befehlseinschleusungsprüfung für ein bestimmtes ELEMENT oder ATTRIBUTE in der Nutzlast umgehen müssen, können Sie eine Entspannungsregel konfigurieren.
Die Entspannungsregeln für die JSON-Befehlseinschleusungsprüfung haben folgende Syntax.
bind appfw profile <profile name> –JSONCMDURL <expression> -comment <string> -isAutoDeployed ( AUTODEPLOYED | NOTAUTODEPLOYED ) -state ( ENABLED | DISABLED )
Beispiel für Relaxationsregel für Regex im Header
bind appfw profile abc_json -jsoncmDURL http://1.1.1.1/hello.html
Im Folgenden werden Anfragen von allen auf 1.1.1.1 gehosteten URLs gelockert:
bind appfw profile abc_json -jsoncmDURL http://1.1.1.1/*”
Um die Entspannung zu entfernen, verwenden Sie “unbind”.
unbind appfw profile abc_json -jsoncmDURL “ http://1.1.1.1/*”
Konfigurieren der JSON-Befehlseinschleusungsprüfung über die GUI
Führen Sie die folgenden Schritte aus, um die JSON-Befehlseinschleusungsprüfung zu konfigurieren.
- Navigieren Sie zu Sicherheit > NetScaler Web App Firewall und Profile.
- Wählen Sie auf der Seite Profile ein Profil aus, und klicken Sie auf Bearbeiten.
- Wechseln Sie auf der NetScaler Web App Firewall Profilseite zum Abschnitt Erweiterte Einstellungen und klicken Sie auf Sicherheitsprüfungen.
- Wählen Sie im Abschnitt Sicherheitsüberprüfungen die Option JSON-Befehlseinschleusung aus und klicken Sie aufAktion.
-
Stellen Sie auf der Seite JSON-Befehlseinschleusungseinstellungen die folgenden Parameter ein
- Aktionen. Wählen Sie eine oder mehrere Aktionen für die Sicherheitsüberprüfung der JSON-Befehlseinschleusung aus.
- Überprüfen Sie die Anfrage enthält. Wählen Sie ein Befehlseinschleusungsmuster, um zu überprüfen, ob die eingehende Anforderung das Muster enthält.
- Klicken Sie auf OK.
Anzeigen von Statistiken zum Befehlseinschleusungsdatenverkehr und -verletzungen
Auf der Seite NetScaler Web App Firewall Statistics werden Details zum Sicherheitsdatenverkehr und zu Sicherheitsverletzungen in tabellarischer oder grafischer Form angezeigt.
So zeigen Sie Sicherheitsstatistiken mithilfe der Befehlszeilenschnittstelle an.
Geben Sie in der Befehlszeile Folgendes ein:
stat appfw profile profile1
Appfw-Profil Verkehrsstatistiken | Geschwindigkeit (/s) | Gesamt |
---|---|---|
Anfragen | 0 | 0 |
Byte anfragen | 0 | 0 |
Antworten | 0 | 0 |
Antwort Byte | 0 | 0 |
Bricht ab | 0 | 0 |
Leitet | 0 | 0 |
Langfristige Reaktionszeit (ms) | – | 0 |
Letzte Reaktionszeit von Ave (ms) | – | 0 |
Statistiken zu HTML/XML/JSON-Verstößen | Geschwindigkeit (/s) | Gesamt |
---|---|---|
Start-URL | 0 | 0 |
URL verweigern | 0 | 0 |
Referer-Header | 0 | 0 |
Pufferüberlauf | 0 | 0 |
Cookie-Konsistenz | 0 | 0 |
Cookie-Entführung | 0 | 0 |
CSRF-Formular-Tag | 0 | 0 |
Site-übergreifendes HTML | 0 | 0 |
HTML SQL injection | 0 | 0 |
Feld-Format | 0 | 0 |
Field consistency | 0 | 0 |
Kreditkarte | 0 | 0 |
Sicheres Objekt | 0 | 0 |
Verstöße gegen die Signatur | 0 | 0 |
Inhaltstyp | 0 | 0 |
JSON-Denial-of-Service-Angriff | 0 | 0 |
JSON-SQL-Einschleusung | 0 | 0 |
JSON-Cross-Site Scripting | 0 | 0 |
Dateiuploadtyp | 0 | 0 |
Ableiten der XML-Nutzlast für Inhaltstypen | 0 | 0 |
HTML-Befehlseinschleusung | 0 | 0 |
XML-Format | 0 | 0 |
XML-Denial-of-Service-Angriff (XDoS) | 0 | 0 |
XML-Nachrichtenüberprüfung | 0 | 0 |
Interoperabilität der Webdienste | 0 | 0 |
XML SQL Injection | 0 | 0 |
Site-übergreifende XML-Skrip | 0 | 0 |
XML-Anhang | 0 | 0 |
SOAP-Fehlerverletzungen | 0 | 0 |
Generische XML-Verstöße | 0 | 0 |
Verstöße insgesamt | 0 | 0 |
HTML/XML/JSON-Protokollstatistiken | Geschwindigkeit (/s) | Gesamt |
---|---|---|
Starten der URL-Protokolle | 0 | 0 |
URL-Protokolle verweigern | 0 | 0 |
Referer-Header-Protokolle | 0 | 0 |
Pufferüberlauf-Protokolle | 0 | 0 |
Protokolle zur Cookie-Konsistenz | 0 | 0 |
Protokolle zur Cookie-Entführung | 0 | 0 |
CSRF aus Tag-Protokollen | 0 | 0 |
HTML-Cross-Site Scripting-Protokolle | 0 | 0 |
HTML Cross-Site Scripting-Transformationsprotokolle | 0 | 0 |
HTML SQL-Einschleusungsprotokolle | 0 | 0 |
HTML SQL Transformationsprotokolle | 0 | 0 |
Protokolle im Feldformat | 0 | 0 |
Protokolle zur Feldkonsistenz | 0 | 0 |
Kreditkarten | 0 | 0 |
Protokolle zur Kreditkarten-Transformation | 0 | 0 |
Sichere Objektprotokolle | 0 | 0 |
Signatur-Protokolle | 0 | 0 |
Inhalts-Typ-Protokolle | 0 | 0 |
JSON-Denial-of-Service-Protokolle | 0 | 0 |
JSON SQL-Einschleusungsprotokolle | 0 | 0 |
JSON-Site-Scripting-Protokolle | 0 | 0 |
Protokolle zum Hochladen von Dateien | 0 | 0 |
Ableiten der XML-Nutzlast des Inhaltstyps L | 0 | 0 |
JSON-CMD-Einschleusung | 0 | 0 |
HTML-Befehlseinschleusungsprotokolle | 0 | 0 |
Protokolle im XML-Format | 0 | 0 |
XML Denial of Service (XDoS) -Protokolle | 0 | 0 |
Protokolle zur XML-Nachrichtenüberprüfung | 0 | 0 |
WSI-Protokolle | 0 | 0 |
XML SQL Injection-Protokolle | 0 | 0 |
XML-Cross-Site Scripting-Protokolle | 0 | 0 |
Protokolle für XML-Anhänge | 0 | 0 |
SOAP-Fehlerlogs | 0 | 0 |
Generische XML-Protokolle | 0 | 0 |
Gesamtzahl der Protokollmeldungen | 0 | 0 |
Statistikrate der Serverfehlerantwort (/s) | Gesamt | |—|–|–| HTTP Client Errors (4xx Resp) | 0 | 0| HTTP Server Errors (5xx Resp) | 0 | 0 |
HTML/XML/JSON-Protokollstatistiken | Geschwindigkeit (/s) | Gesamt |
---|---|---|
JSON-Command Injection- | 0 | 0 |
Protokolle im XML-Format | 0 | 0 |
Anzeigen von JSON-Befehlseinschleusungsstatistiken über die NetScaler GUI
Führen Sie die folgenden Schritte aus, um Befehlseinschleusungsstatistiken anzuzeigen:
- Navigieren Sie zu Sicherheit > NetScaler Web App Firewall > Profile.
- Wählen Sie im Detailbereich ein Web App Firewall-Profil aus und klicken Sie auf Statistik.
- Auf der Seite NetScaler Web App Firewall Statistics werden die Details zum JSON-Befehlseinschleusungsverkehr und Verstößen angezeigt.
- Sie können die Tabellarische Ansicht wählen oder zur grafischen Ansicht wechseln, um die Daten in einem tabellarischen oder grafischen Format anzuzeigen.
JSON-Befehlseinschleusungverkehrsstatistiken
Statistiken zu JSON-Befehlseinschleusungsverstößen
Konfigurieren der feingesteuerten Lockerung für JSON-Befehlseinschleusungsprüfung
Die Web App Firewall bietet Ihnen die Möglichkeit, einen bestimmten JSON-Schlüssel oder -Wert aus der JSON-basierten Befehlseinschleusungsprüfung zu lockern. Sie können die Inspektion für ein oder mehrere Felder vollständig Bypass, indem Sie feingesteuert die Lockerungsregeln 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 Sicherheitsschutz gegen Befehlseinschleusung bietet Lockerungen für Folgendes:
- Die wichtigsten Namen
- Die wichtigsten Werte
Mit dem JSON-basierten Befehlseinschleusungsschutz 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 Befehlseinschleusungsangriffen 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 bei Relaxationen verwendeten Befehle haben optionale Parameter für Werttyp und Wertausdruck. 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/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> -valueType <keyword/SpecialString> <value Expression>
<!--NeedCopy-->
Beispiel:
bind appfw profile appprofile1 -jsoncmdurl www.example.com -key blg_cnt -isRegex NOTREGEX -valueType Keyword “cat” -isvalueRegex NOTREGEX
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 Entspannungsregeln einen JSON Command Injection -Datensatz aus und klicken Sie auf Bearbeiten.
- Klicken Sie im Schieberegler für die JSON-Befehlseinspritzung auf Hinzufügen.
-
Legen Sie auf der Seite “ Relaxationsregel für die JSON-Befehlseinschleusung “
- Aktiviert
- Ist Name Regex
- Schlüsselname
- URL
- Werttyp
- Kommentare
- Ressourcen-ID
- Klicken Sie auf Erstellen.
In diesem Artikel
- So funktioniert der Befehlseinschleusungsschutz
- Schlüsselwörter und Sonderzeichen, die für die Befehlseinschleusung verweigert werden
- Konfigurieren der JSON-Befehlseinschleusungsprüfung über die CLI
- Konfigurieren der Entspannungsregeln für die JSON-Befehlseinschleusungsprüfung
- Konfigurieren der JSON-Befehlseinschleusungsprüfung über die GUI
- Anzeigen von Statistiken zum Befehlseinschleusungsdatenverkehr und -verletzungen
- Anzeigen von JSON-Befehlseinschleusungsstatistiken über die NetScaler GUI
- Konfigurieren der feingesteuerten Lockerung für JSON-Befehlseinschleusungsprüfung
- Zu berücksichtigende Punkte