Citrix ADC

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 Citrix ADC-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 Citrix ADC-Appliance Ihre Webanwendung schützen kann, indem sie unsichere Daten blockiert.

So funktioniert der Befehlseinschleusungsschutz

  1. 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.
  2. 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.
  3. 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.
  4. 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: | ; & $ > < ' \ ! >> #

Konfigurieren der JSON-Befehlseinschleusungsprüfung über die CLI

In der Befehlszeilenschnittstelle können Sie entweder den Befehl set appfw profile verwenden oder einen appfw-Profilbefehl hinzufügen, um die JSON-Befehlseinschleusungseinstellungen 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 an der Eingabeaufforderung Folgendes ein:

set appfw profile <profile-name> –cmdInjectionAction <action-name> -CMDInjectionType <CMDInjectionType>]

Hinweis:

Standardmäßig ist die Befehlseinschleusungsaktion auf “Protokollstatistiken blockieren” 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.

  1. Navigieren Sie zu Sicherheit > Citrix Web App Firewall und Profile.
  2. Wählen Sie auf der Seite Profile ein Profil aus, und klicken Sie auf Bearbeiten.
  3. Wechseln Sie auf der Citrix Web App Firewall Profilseite zum Abschnitt Erweiterte Einstellungen und klicken Sie auf Sicherheitsprüfungen.

Zugriff auf die JSON-Sicherheitsprüfung für Sicherheitseinstellungen

  1. Wählen Sie im Abschnitt Sicherheitsüberprüfungen die Option JSON-Befehlseinschleusung aus und klicken Sie aufAktion.
  2. Stellen Sie auf der Seite JSON-Befehlseinschleusungseinstellungen die folgenden Parameter ein

    1. Aktionen. Wählen Sie eine oder mehrere Aktionen für die Sicherheitsüberprüfung der JSON-Befehlseinschleusung aus.
    2. Überprüfen Sie die Anfrage enthält. Wählen Sie ein Befehlseinschleusungsmuster, um zu überprüfen, ob die eingehende Anforderung das Muster enthält.
  3. Klicken Sie auf OK.

Konfigurieren Sie die Einstellungen für die JSON-Befehlseinschleusungsprüfung

Anzeigen von Statistiken zum Befehlseinschleusungsdatenverkehr und -verletzungen

Auf der Seite “ Citrix Web App Firewall Statistics “ werden Details zu Sicherheitsdatenverkehr und Sicherheitsverletzungen in einem tabellarischen oder grafischen Format angezeigt.

So zeigen Sie Sicherheitsstatistiken mithilfe der Befehlszeilenschnittstelle an.

Geben Sie an der Eingabeaufforderung 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 Citrix ADC GUI

Führen Sie die folgenden Schritte aus, um Befehlseinschleusungsstatistiken anzuzeigen:

  1. Navigieren Sie zu Sicherheit > Citrix Web App Firewall > Profile.
  2. Wählen Sie im Detailbereich ein Web App Firewall-Profil aus und klicken Sie auf Statistiken.
  3. Auf der Seite Citrix Web App Firewall Statistics werden die Details zum JSON-Befehlseinschleusungsverkehr und Verstößen angezeigt.
  4. Sie können Tabellarische Ansicht wählen oder zur grafischen Ansicht wechseln, um die Daten in einem tabellarischen oder grafischen Format anzuzeigen.

JSON-Befehlseinschleusungverkehrsstatistiken

Abschnitt "JSON Command Injection Traffic Statistics GUI"

Statistiken zu JSON-Befehlseinschleusungsverstößen

Abschnitt "JSON Command Injection Traffic Statistics GUI"

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 in Relaxationen verwendeten Befehle haben optionale Parameter für Value Type und Value Expression. 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 an der Eingabeaufforderung 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

  1. Navigieren Sie zu Application Firewall > Profile, wählen Sie ein Profil aus und klicken Sie auf Bearbeiten.
  2. Klicken Sie im Bereich Erweiterte Einstellungen auf Relaxationsregeln.
  3. Wählen Sie im Abschnitt Entspannungsregeln einen JSON Command Injection -Datensatz aus und klicken Sie auf Bearbeiten.
  4. Klicken Sie im Schieberegler für die JSON-Befehlseinspritzung auf Hinzufügen.
  5. Legen Sie auf der Seite “ Relaxationsregel für die JSON-Befehlseinschleusung

    1. Aktiviert
    2. Ist Name Regex
    3. Schlüsselname
    4. URL
    5. Werttyp
    6. Anmerkungen
    7. Ressourcen-ID
  6. Klicken Sie auf Erstellen.

JSON-Feinkörnige Entspannung für Cross-Site-Scripting