ADC

Überprüfung der XML-SQL-Injektion

Die Prüfung der XML-SQL-Injektion untersucht die Benutzeranforderungen auf mögliche XML SQL Injection-Angriffe. Findet es injiziertes SQL in XML-Payloads, blockiert es die Anfragen.

Ein XML-SQL-Angriff kann Quellcode in eine Webanwendung einschleusen, sodass er interpretiert und als gültige SQL-Abfrage ausgeführt werden kann, um eine Datenbankoperation mit böswilliger Absicht auszuführen. Beispielsweise können XML-SQL-Angriffe gestartet werden, um unbefugten Zugriff auf den Inhalt einer Datenbank zu erhalten oder die gespeicherten Daten zu manipulieren. XML-SQL-Injection-Angriffe sind nicht nur häufig, sondern können auch sehr schädlich und kostspielig sein.

Die Unterteilung der Rechte der Datenbankbenutzer kann dazu beitragen, die Datenbank bis zu einem gewissen Grad zu schützen. Allen Datenbankbenutzern müssen nur die erforderlichen Rechte erteilt werden, um ihre beabsichtigten Aufgaben zu erledigen, sodass sie keine SQL-Abfragen ausführen können, um andere Aufgaben auszuführen. Beispielsweise darf ein schreibgeschützter Benutzer keine Datentabellen schreiben oder manipulieren. Der Web App Firewall XML SQL Injection Check überprüft alle XML-Anfragen, um besondere Schutzmaßnahmen gegen die Injektion von nicht autorisiertem SQL-Code zu bieten, der die Sicherheit gefährden könnte. Wenn die Web App Firewall unbefugten SQL-Code in einer XML-Anfrage eines Benutzers erkennt, kann sie die Anfrage blockieren.

Die NetScaler Web App Firewall überprüft das Vorhandensein von SQL-Schlüsselwörtern und Sonderzeichen, um den XML-SQL-Injection-Angriff zu identifizieren. Ein Standardsatz von Schlüsselwörtern und Sonderzeichen enthält bekannte Schlüsselwörter und Sonderzeichen, die häufig zum Starten von XML-SQL-Angriffen verwendet werden. Die Web App Firewall betrachtet drei Zeichen, ein einfaches gerades Anführungszeichen (‘), einen umgekehrten Schrägstrich () und ein Semikolon (;) als Sonderzeichen für die Verarbeitung von SQL-Sicherheitsprüfungen. Sie können neue Muster hinzufügen und den Standardsatz bearbeiten, um die XML-SQL-Prüfprüfung anzupassen.

Die Web App Firewall bietet verschiedene Aktionsoptionen zur Implementierung des XML-SQL-Injection-Schutzes. Sie können die Anfrage blockieren, in der Datei ns.log eine Nachricht mit Details zu den beobachteten Verstößen protokollieren und Statistiken sammeln, um die Anzahl der beobachteten Angriffe zu verfolgen.

Zusätzlich zu den Aktionen gibt es mehrere Parameter, die für die Verarbeitung von XML-SQL-Injection konfiguriert werden können. Sie können nach SQL-Platzhalterzeichensuchen. Sie können den XML-SQL-Injection-Typ ändern und eine der 4 Optionen (sqlKeyword, sqlSplChar, sqlSplcharAndKeyword**, sqlSplcharOrKeyword**) auswählen, um anzugeben, wie die SQL-Schlüsselwörter und SQL-Sonderzeichenbei der Verarbeitung der XML-Payload ausgewertet werden sollen. Der Parameter zur Verarbeitung von XML-SQL-Kommentaren bietet Ihnen die Möglichkeit, den Typ der Kommentare anzugeben, die bei der Erkennung von XML SQL Injection überprüft oder ausgenommen werden müssen.

Sie können Entspannungen einsetzen, um Fehlalarme zu vermeiden. Die Web App Firewall XML-SQL-Prüfung wird anhand der Payload der eingehenden Anfragen durchgeführt, und Angriffszeichenfolgen werden identifiziert, auch wenn sie über mehrere Zeilen verteilt sind. Die Prüfung sucht nach SQL-Injection-Zeichenketten im Element und den Attributwerten . Unter bestimmten Bedingungen können Sie Lockerungen anwenden, um die Sicherheitskontrolle zu Bypass. Die Protokolle und Statistiken können Ihnen helfen, die erforderlichen Lockerungen zu identifizieren.

Optionen für Aktionen

Eine Aktion wird angewendet, wenn die XML-SQL-Injection-Prüfung eine SQL-Injection-Angriffszeichenfolge in der Anfrage erkennt. Die folgenden Aktionen sind verfügbar, um einen optimierten XML-SQL-Injection-Schutz für Ihre Anwendung zu konfigurieren:

Block— Wenn Sie Block aktivieren, wird die Blockaktion nur ausgelöst, wenn die Eingabe der XML-SQL-Injection-Typspezifikation entspricht. Wenn SqlSplCharAndKeyword beispielsweise als XML-SQL-Injektionstyp konfiguriert ist, wird eine Anfrage nicht blockiert, wenn sie keine Schlüsselwörter enthält, selbst wenn SQL-Sonderzeichen in der Payload erkannt werden. Eine solche Anfrage wird blockiert, wenn der XML-SQL-Injektionstyp entweder aufsqlSplChar oder sqlSplcharOrKeywordgesetzt ist.

Protokoll — Wenn Sie die Protokollfunktionaktivieren, generiert die XML-SQL-Injection-Prüfung Protokollmeldungen, in denen die Aktionen angegeben sind, die ausgeführt werden. Wenn der Block deaktiviert ist, wird für jede Stelle (ELEMENT, ATTRIBUTE), an der die XML-SQL-Verletzung erkannt wurde, eine separate Lognachricht generiert. Allerdings wird nur eine Nachricht generiert, wenn die Anforderung blockiert wird. 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.

Statistiken— Wenn diese Option aktiviert ist, sammelt die Statistikfunktion Statistiken zu Verstößen und Protokollen. Ein unerwarteter Anstieg im Statistikzähler deutet möglicherweise darauf hin, dass Ihre Anwendung angegriffen wird. Wenn legitime Anfragen blockiert werden, müssen Sie möglicherweise die Konfiguration erneut aufrufen, um zu sehen, ob Sie neue Entspannungsregeln konfigurieren oder die vorhandenen ändern müssen.

XML-SQL-Parameter

Zusätzlich zu den Block-, Log- und Statistikaktionen können Sie die folgenden Parameter für die XML-SQL-Injection-Prüfung konfigurieren:

Suchen Sie nach XML-SQL-Platzhalterzeichen — Platzhalterzeichen können verwendet werden, um die Auswahl einer strukturierten Abfragesprache (SQL-SELECT) -Anweisung zu erweitern. Diese Platzhalteroperatoren können zusammen mit den Operatoren LIKE und NOT LIKE verwendet werden, um einen Wert mit ähnlichen Werten zu vergleichen. Die Prozentzeichen (%) und Unterstriche (_) werden häufig als Platzhalter verwendet. Das Prozentzeichen entspricht dem Sternchen-Platzhalterzeichen (*), das mit MS-DOS verwendet wird, und entspricht null, einem oder mehreren Zeichen in einem Feld. Der Unterstrich ähnelt dem MS-DOS-Fragezeichen (?) Platzhalterzeichen. Es stimmt mit einer einzelnen Zahl oder einem Zeichen in einem Ausdruck überein.

Sie können beispielsweise die folgende Abfrage verwenden, um eine Zeichenfolgensuche durchzuführen, um alle Kunden zu finden, deren Namen das D-Zeichen enthalten.

SELECT * from customer WHERE name like "%D%"

Im folgenden Beispiel werden die Operatoren kombiniert, um alle Gehaltswerte zu finden, die 0 als zweites und drittes Zeichen haben.

SELECT * from customer WHERE salary like '_00%

Verschiedene DBMS-Anbieter haben die Platzhalterzeichen um zusätzliche Operatoren erweitert. Die NetScaler Web App Firewall kann vor Angriffen schützen, die durch das Eingeben dieser Platzhalterzeichen gestartet werden. Die 5 Standard-Platzhalterzeichen sind Prozent (%), Unterstrich (_), Caret (^), öffnende eckige Klammer ([) und schließende eckige Klammer (]). Dieser Schutz gilt sowohl für HTML- als auch für XML-Profile.

Die Standard-Platzhalterzeichen sind eine Liste von Literalen, die in der *Standardsignaturen angegeben sind:

-  <wildchar type=”LITERAL”>%</wildchar>
-  <wildchar type=”LITERAL”>_</wildchar>
-  <wildchar type=”LITERAL”>^</wildchar>
-  <wildchar type=”LITERAL”>[</wildchar>
-  <wildchar type=”LITERAL”>]</wildchar>
<!--NeedCopy-->

Platzhalterzeichen in einem Angriff können PCRE sein, wie [^A-F]. Die Web App Firewall unterstützt auch PCRE-Platzhalter, aber die obigen Platzhalterzeichen reichen aus, um die meisten Angriffe zu blockieren.

Hinweis

Die XML-SQL-Platzhalterprüfung unterscheidet sich von der XML-SQL-Sonderzeichenprüfung . Diese Option muss mit Vorsicht verwendet werden, um Fehlalarme zu vermeiden.

Check Request mit SQL-Einschleusung-Typ— Die Web App Firewall bietet 4 Optionen, um die gewünschte Strenge für die SQL Injection-Prüfung basierend auf den individuellen Anforderungen der Anwendung zu implementieren. Die Anforderung wird mit der Spezifikation des Injektionstyps zur Erkennung von SQL-Verletzungen abgeglichen. Die 4 Optionen für den SQL-Einschleusung-Typ sind:

  • SQL-Sonderzeichen und Schlüsselwort— Sowohl ein SQL-Schlüsselwort als auch ein SQL-Sonderzeichen müssen an der untersuchten Stelle vorhanden sein, um eine SQL-Verletzung auszulösen. Diese am wenigsten restriktive Einstellung ist auch die Standardeinstellung.
  • SQL-Sonderzeichen— Mindestens eines der Sonderzeichen muss in der verarbeiteten Payload-Zeichenfolge vorhanden sein, um eine SQL-Verletzung auszulösen.
  • SQL-Schlüsselwort— Mindestens eines der angegebenen SQL-Schlüsselwörter muss in der verarbeiteten Payload-Zeichenfolge vorhanden sein, um eine SQL-Verletzung auszulösen. Wählen Sie diese Option nicht ohne angemessene Berücksichtigung aus. Um Fehlalarme zu vermeiden, stellen Sie sicher, dass keines der Schlüsselwörter in den Eingaben erwartet wird.
  • SQL-Sonderzeichen oder Schlüsselwort— Entweder das Schlüsselwort oder die Sonderzeichenfolge müssen in der Payload vorhanden sein, um die Sicherheitsüberprüfung auszulösen.

Tipp

Wenn Sie die Option SQL-Sonderzeichen auswählen, überspringt die Web App Firewall Zeichenfolgen, die keine Sonderzeichen enthalten. Da die meisten SQL-Server keine SQL-Befehle verarbeiten, denen kein Sonderzeichen vorangestellt ist, kann die Aktivierung dieser Option die Web App Firewall erheblich entlasten und die Verarbeitung beschleunigen, ohne dass Ihre geschützten Websites gefährdet werden.

Behandlung von SQL-Kommentaren— Standardmäßig analysiert und überprüft die Web App Firewall alle Kommentare in XML-Daten auf injizierte SQL-Befehle. Viele SQL-Server ignorieren alles in einem Kommentar, auch wenn ihm ein SQL-Sonderzeichen vorangestellt ist. Wenn Ihr XML-SQL-Server Kommentare ignoriert, können Sie zur schnelleren Verarbeitung die Web App Firewall so konfigurieren, dass Kommentare bei der Untersuchung von Anfragen für injiziertes SQL übersprungen werden. Die Optionen zur Behandlung von XML-SQL-Kommentaren sind:

  • ANSI—Überspringt SQL-Kommentare im ANSI-Format, die normalerweise von UNIX-basierten SQL-Datenbanken verwendet werden.
  • Verschachtelt— Verschachtelte SQL-Kommentare überspringen, die normalerweise von Microsoft SQL Server verwendet werden.
  • ANSI/verschachtelt—Überspringen Sie Kommentare, die sowohl den ANSI- als auch den verschachtelten SQL-Kommentarstandards entsprechen. Kommentare, die nur dem ANSI-Standard oder nur dem verschachtelten Standard entsprechen, werden weiterhin auf injizierte SQL überprüft.
  • Alle Kommentare überprüfen— Prüft die gesamte Anfrage nach injiziertem SQL, ohne etwas zu überspringen. Dies ist die Standardeinstellung.

Tipp

In den meisten Fällen dürfen Sie die Option Nested oder ANSI/Nested nicht wählen, es sei denn, Ihre Back-End-Datenbank läuft auf Microsoft SQL Server. Die meisten anderen Typen von SQL Server-Software erkennen verschachtelte Kommentare nicht. Wenn verschachtelte Kommentare in einer Anfrage erscheinen, die an einen anderen SQL-Servertyp gerichtet ist, deuten sie möglicherweise auf einen Versuch hin, die Sicherheit auf diesem Server zu verletzen.

Regeln zur Entspannung

Wenn Ihre Anwendung verlangt, dass Sie die XML-SQL-Injection-Prüfung für ein bestimmtes ELEMENT oder ATTRIBUT in der XML-Payload Bypass, können Sie eine Relaxationsregel konfigurieren. Die Relaxationsregeln für die XML-SQL-Injection-Prüfung haben die folgenden Parameter:

  • Name: Sie können literale Zeichenketten oder reguläre Ausdrücke verwenden, um den Namen des ELEMENTS oder des ATTRIBUTESzu konfigurieren. Der folgende Ausdruck schließt alle ELEMENTE aus, die mit der Zeichenfolge PurchaseOrder_ beginnen, gefolgt von einer Zahlenfolge, die mindestens zwei und nicht mehr als zehn Zeichen lang ist:

    Kommentar: „XML-SQL-Prüfung für Bestellelemente ausnehmen“

    XMLSQLInjection:  "PurchaseOrder_[0-9A-Za-z]{2,10}"

    IsRegex:  REGEX          Location:  ELEMENT

    State:  ENABLED
<!--NeedCopy-->

Hinweis: Bei den Namen wird zwischen Groß- und Kleinschreibung unterschieden. Doppelte Einträge sind nicht zulässig, aber Sie können die Groß- und Kleinschreibung der Namen und Ortsunterschiede verwenden, um ähnliche Einträge zu erstellen. Zum Beispiel ist jede der folgenden Entspannungsregeln einzigartig:


1)      XMLSQLInjection:  XYZ    IsRegex:  NOTREGEX

        Location:  ELEMENT       State:  ENABLED

2)      XMLSQLInjection:  xyz    IsRegex:  NOTREGEX

        Location:  ELEMENT       State:  ENABLED

3)      XMLSQLInjection:  xyz    IsRegex:  NOTREGEX

        Location:  ATTRIBUTE     State:  ENABLED

4)      XMLSQLInjection:  XYZ    IsRegex:  NOTREGEX

        Location:  ATTRIBUTE     State:  ENABLED
<!--NeedCopy-->
  • Ort: Sie können den Speicherort der XML SQL Inspection-Ausnahme in Ihrer XML-Payload angeben. Die Option ELEMENT ist standardmäßig ausgewählt. Sie können es in ATTRIBUTEändern.
  • Kommentar: Dies ist ein optionales Feld. Sie können eine bis zu 255 Zeichen lange Zeichenfolge verwenden, um den Zweck dieser Entspannungsregel zu beschreiben.

Warnung

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 den Namen definieren, den Sie als Ausnahme hinzufügen möchten, und nichts anderes. Die unvorsichtige Verwendung regulärer Ausdrücke kann zu unerwünschten Ergebnissen führen, z. B. das Blockieren des Zugriffs auf Webinhalte, die Sie nicht blockieren wollten, oder das Zulassen eines Angriffs, den die XML SQL Injection-Inspektion andernfalls blockiert hätte.

Verwenden der Befehlszeile zur Konfiguration des XML SQL Injection Check

Gehen Sie wie folgt vor, um XML SQL Injection-Aktionen und andere Parameter mithilfe der Befehlszeile zu konfigurieren:

In der Befehlszeilenschnittstelle können Sie entweder den Befehl set appfw profile oder den Befehl add appfw profileverwenden, um den XML-SQL-Injection-Schutzzu konfigurieren. Sie können die Aktion (en) blockieren, protokollieren und Statistiken aktivieren. Wählen Sie den Typ des SQL-Angriffsmusters (Schlüsselwörter, Platzhalterzeichen, spezielle Zeichenketten) aus, das Sie in den Payloads erkennen möchten. Verwenden Sie den Befehlunset appfw profile, um die konfigurierten Einstellungen auf ihre Standardeinstellungen zurückzusetzen. Jeder der folgenden Befehle legt nur einen Parameter fest, aber Sie können mehrere Parameter in einen einzelnen Befehl aufnehmen:

  • set appfw profile <name> **-XMLSQLInjectionAction** (([block] [log] [stats]) | [none])
  • set appfw profile <name> -XMLSQLInjectionCheckSQLWildChars (ON |OFF)
  • set appfw profile <name> -XMLSQLInjectionType ([SQLKeyword] | [SQLSplChar] | [SQLSplCharANDKeyword] | [SQLSplCharORKeyword])
  • set appfw profile <name> -XMLSQLInjectionParseComments ([checkall] | [ansi|nested] | [ansinested])

So konfigurieren Sie eine Relaxationsregel für SQL Injection mithilfe der Befehlszeile

Verwenden Sie den Befehl bind oder unbind, um Relaxationsregeln wie folgt hinzuzufügen oder zu löschen:

-  bind appfw profile <name> -XMLSQLInjection <string> [isRegex (REGEX | NOTREGEX)] [-location ( ELEMENT | ATTRIBUTE )] –comment <string> [-state ( ENABLED | DISABLED )]
-  unbind appfw profile <name> -XMLSQLInjection <String>
<!--NeedCopy-->

Beispiel:

> bind appfw profile test_profile -XMLSQLInjection "PurchaseOrder_[0-9A-Za-z]{2,15}" -isregex REGEX -location ATTRIBUTE

> unbind appfw profile test_profile –XMLSQLInjection "PurchaseOrder_[0-9A-Za-z]{2,15}" -location ATTRIBUTE
<!--NeedCopy-->

Verwenden der GUI zur Konfiguration der XMLSQL-Injection-Sicherheitsprüfung

In der GUI können Sie die XML-SQL-Injection-Sicherheitsprüfung im Bereich für das Ihrer Anwendung zugeordnete Profil konfigurieren.

Um die XML-SQL-Injection-Prüfung mit der GUI zu konfigurieren oder zu ändern

  1. Navigieren Sie zu Web App Firewall > Profile, markieren Sie das Zielprofil und klicken Sie auf Bearbeiten.
  2. Klicken Sie im Bereich Erweiterte Einstellungen auf Sicherheitsprüfungen.

In der Tabelle zur Sicherheitsüberprüfung werden die aktuell konfigurierten Aktionseinstellungen für alle Sicherheitsüberprüfungen angezeigt. Sie haben 2 Möglichkeiten für die Konfiguration:

a. Wenn Sie nur die Aktionen Block, Log und Stats für XML SQL Injection aktivieren oder deaktivieren möchten, können Sie die Kontrollkästchen in der Tabelle aktivieren oder deaktivieren, auf OK klicken und dann auf Speichern und Schließen klicken, um den Bereich Sicherheitsüberprüfung zu schließen.

b. Wenn Sie zusätzliche Optionen für diese Sicherheitsüberprüfung konfigurieren möchten, doppelklicken Sie auf XML SQL Injection, oder wählen Sie die Zeile aus und klicken Sie auf Aktionseinstellungen, um die folgenden Optionen anzuzeigen:

AufSQL-Platzhalterzeichen prüfen— Betrachten Sie SQL-Platzhalterzeichen in der Nutzlast als Angriffsmuster.

Überprüfen Sie die Anforderung mit—Type der SQL-Einschleusung (SqlKeyword, SqlSplChar, SqlSplcharandKeyword oder SqlSplcharorKeyword), die überprüft werden soll.

SQL Comments Handling— Art der zu prüfenden Kommentare (Alle Kommentare prüfen, ANSI, Verschachtelt oder ANSI/verschachtelt).

Nachdem Sie eine der obigen Einstellungen geändert haben, klicken Sie auf OK, um die Änderungen zu speichern und zur Tabelle Sicherheitsüberprüfungen zurückzukehren. Sie können bei Bedarf weitere Sicherheitsprüfungen konfigurieren. Klicken Sie auf OK, um alle Änderungen zu speichern, die Sie im Abschnitt Sicherheitsprüfungen vorgenommen haben, und klicken Sie dann auf Speichern und Schließen, um den Bereich Sicherheitsüberprüfung zu schließen.

So konfigurieren Sie eine Relaxationsregel für XML-SQL-Injection mithilfe der GUI

  1. Navigieren Sie zu Web App Firewall > Profile, markieren Sie das Zielprofil und klicken Sie auf Bearbeiten.
  2. Klicken Sie im Bereich Erweiterte Einstellungen auf Relaxationsregeln.
  3. Doppelklicken Sie in der Tabelle Relaxation Rules auf den Eintrag XML SQL Injection, oder wählen Sie ihn aus und klicken Sie auf Bearbeiten.
  4. Führen Sie im DialogfeldRelaxationsregeln für XML SQL Injectiondie Operationen Hinzufügen, Bearbeiten, Löschen, Aktivierenoder Deaktivieren für Relaxationsregeln aus.

So verwalten Sie Relaxationsregeln für XML SQL Injection mithilfe des Visualizers

Für eine konsolidierte Ansicht aller Relaxationsregeln können Sie die Zeile XML SQL Injection in der Tabelle Relaxation Rules markieren und auf Visualizerklicken. Der Visualizer für bereitgestellte Relaxationen bietet Ihnen die Möglichkeit, eine neue Regel hinzuzufügen oder eine vorhandene zu bearbeiten . Sie können auch eine Gruppe von Regeln aktivieren oder deaktivieren, indem Sie einen Knoten auswählen und auf die entsprechenden Schaltflächen im Relaxationsvisualizer klicken.

Um die SQL Injection-Muster mithilfe der GUI anzuzeigen oder anzupassen:

Sie können die GUI verwenden, um die SQL-Muster anzuzeigen oder anzupassen.

Die Standard-SQL-Muster sind unter Web App Firewall > Signaturen > *Standardsignaturenangegeben. Wenn Sie kein Signaturobjekt an Ihr Profil binden, werden die im Objekt Standardsignaturen angegebenen Standard-SQL-Muster vom Profil für die Verarbeitung der XML-SQL-Injection-Sicherheitsprüfung verwendet. Die Regeln und Muster im Default Signatures-Objekt sind schreibgeschützt. Sie können sie nicht bearbeiten oder ändern. Wenn Sie diese Muster ändern oder ändern möchten, erstellen Sie ein benutzerdefiniertes Signaturobjekt, indem Sie eine Kopie des Standardsignaturobjekts erstellen und die SQL-Muster ändern. Verwenden Sie das benutzerdefinierte Signaturobjekt in dem Profil, das den Datenverkehr verarbeitet, für den Sie diese benutzerdefinierten SQL-Muster verwenden möchten.

Weitere Informationen finden Sie unter Signaturen.

So zeigen Sie SQL-Standardmuster an:

a. Navigieren Sie zu Web App Firewall > Signaturen, wählen Sie *Standardsignaturenaus und klicken Sie auf Bearbeiten. Klicken Sie anschließend auf SQL/Cross-Site-Scripting-Muster verwalten.

Die Tabelle „SQL/Cross-Site Scripting-Pfade verwalten“ enthält die folgenden vier Zeilen, die sich auf SQL Injection beziehen:

Injection (not_alphanum, SQL)/ Keyword

Injection (not_alphanum, SQL)/ specialstring

Injection (not_alphanum, SQL)/ transformrules/transform

Injection (not_alphanum, SQL)/ wildchar
<!--NeedCopy-->

b. Wählen Sie eine Zeile aus und klicken Sie auf Elemente verwalten, um die entsprechenden SQL-Muster (Schlüsselwörter, spezielle Zeichenketten, Transformationsregeln oder Platzhalterzeichen) anzuzeigen, die bei der SQL Injection-Prüfung der Web App Firewall verwendet werden.

Um SQL-Muster anzupassen: Sie können ein benutzerdefiniertes Signaturobjekt bearbeiten, um die SQL-Schlüsselwörter, Sonderzeichenfolgen und Platzhalterzeichen anzupassen. Sie können neue Einträge hinzufügen oder vorhandene entfernen. Sie können die Transformationsregeln für die SQL-Spezialzeichenketten ändern.

a. Navigieren Sie zu Web App Firewall > Signaturen, markieren Sie die benutzerdefinierte Zielsignatur und klicken Sie auf Bearbeiten. Klicken Sie auf SQL/Cross-Site-Scripting-Musterverwalten, um die Tabelle SQL/Cross-Site-Scripting-Pfade verwalten anzuzeigen.

b. Wählen Sie die Ziel-SQL-Zeile aus.

i. Klicken Sie auf Elemente verwalten, um das entsprechende SQL-Element hinzuzufügen, zu bearbeiten oder zu entfernen .

ii. Klicken Sie auf Entfernen, um die ausgewählte Zeile zu entfernen.

Warnung

Sie müssen sehr vorsichtig sein, wenn Sie ein Standard-SQL-Element entfernen oder ändern oder den SQL-Pfad löschen, um die gesamte Zeile zu entfernen. Die Signaturregeln sowie die XML-SQL-Injection-Sicherheitsprüfung stützen sich auf diese Elemente, um SQL-Injection-Angriffe zu erkennen und Ihre Anwendungen zu schützen. Das Anpassen der SQL-Muster kann Ihre Anwendung anfällig für XML-SQL-Angriffe machen, wenn das erforderliche Muster während der Bearbeitung entfernt wird.

Verwendung der Log-Funktion mit der XML-SQL-Injection-Prüfung

Wenn die Protokollaktion aktiviert ist, werden die Verstöße gegen die XML SQL Injection-Sicherheitsprüfung im Audit-Log als APPFW_XML_SQL-Verstöße protokolliert. Die Web App Firewall unterstützt sowohl native als auch CEF-Protokollformate. Sie können die Protokolle auch an einen Remote-Syslog-Server senden.

Gehen Sie wie folgt vor, um über die Befehlszeile auf die Protokollmeldungen zuzugreifen:

Wechseln Sie zur Shell und verfolgen Sie die ns.logs im Ordner /var/log/, um auf die Protokollmeldungen zuzugreifen, die sich auf die Verstöße gegen XML Cross-Site Scripting beziehen:

> Shell

> tail -f /var/log/ns.log | grep APPFW_XML_SQL
<!--NeedCopy-->

So greifen Sie mit der GUI auf die Protokollmeldungen zu

Die GUI enthält ein nützliches Tool (Syslog Viewer) zur Analyse der Logmeldungen. Sie haben mehrere Optionen für den Zugriff auf den Syslog Viewer:

  • Navigieren Sie zu Web App Firewall > Profile, wählen Sie das Zielprofil aus und klicken Sie auf Security Checks. Markieren Sie die Zeile XML SQL Injection und klicken Sie auf Logs. Wenn Sie direkt von der XML-SQL-Injection-Prüfung des Profils aus auf die Protokolle zugreifen, filtert die GUI die Protokollmeldungen heraus und zeigt nur die Protokolle an, die sich auf diese Sicherheitsüberprüfungsverstöße beziehen.

  • Sie können den Syslog-Viewer auch aufrufen, indem Sie zuSystem> Auditing navigieren. Klicken Sie im Abschnitt Prüfmeldungen auf den Link Syslog-Meldungen, um den Syslog-Viewer aufzurufen, in dem alle Protokollmeldungen angezeigt werden, einschließlich anderer Protokolle von Verstößen gegen die Sicherheitsüberprüfung. Dies ist nützlich für das Debuggen, wenn während der Anforderungsverarbeitung mehrere Sicherheitsüberprüfungen ausgelöst werden können.

  • Navigieren Sie zu Web App Firewall > Richtlinien > Überwachung. Klicken Sie im Abschnitt Prüfmeldungen auf den Link Syslog-Meldungen, um denSyslog-Viewer**aufzurufen, in dem alle Protokollmeldungen angezeigt werden, einschließlich anderer Protokolle von Verstößen gegen die Sicherheitsüberprüfung.

Der XML-basierte Syslog-Viewer bietet verschiedene Filteroptionen, um nur die Protokollmeldungen auszuwählen, die für Sie von Interesse sind. Um Protokollnachrichten für dieXML-SQL-Injection-Prüfungauszuwählen, filtern Sie, indem Sie in den Dropdown-Optionen für ModulAPPFWauswählen. Die Liste Ereignistyp bietet eine Reihe von Optionen, um Ihre Auswahl weiter zu verfeinern. Wenn Sie beispielsweise das Kontrollkästchen APPFW_XML_SQL aktivieren und auf die Schaltfläche Anwenden klicken, werden im Syslog-Viewer nur Protokollmeldungen angezeigt, die sich auf Verstöße gegen die XML SQL Injection-Sicherheitsprüfung beziehen.

Wenn Sie den Cursor in die Zeile für eine bestimmte Protokollmeldung setzen, werden unter der Protokollmeldung mehrere Optionen wie Modul, Ereignistyp, Ereignis-IDundClient-IP angezeigt. Sie können eine dieser Optionen auswählen, um die entsprechenden Informationen in der Protokollmeldung hervorzuheben.

Statistiken für die XML-SQL-Injection-Verstöße

Wenn die Statistikaktion aktiviert ist, wird der Zähler für die XML-SQL-Injection-Prüfung erhöht, wenn die Web App Firewall eine Aktion für diese Sicherheitsüberprüfung ergreift. Die Statistiken werden für Rate und Gesamtanzahl für Traffic, Verletzungen und Protokolle gesammelt. Die Größe eines Inkrements des Protokollzählers kann abhängig von den konfigurierten Einstellungen variieren. Wenn beispielsweise die Block-Aktion aktiviert ist, erhöht eine Anfrage für eine Seite, die drei XML-SQL-Injection-Verstöße enthält, den Statistikzähler um eins, da die Seite blockiert wird, sobald der erste Verstoß erkannt wird. Wenn der Block jedoch deaktiviert ist, erhöht die Verarbeitung derselben Anforderung den Statistikindikator für Verletzungen und Protokolle um drei, da jede Verletzung eine separate Protokollmeldung generiert.

Um XML SQL Injection anzuzeigen, überprüfen Sie die Statistiken mithilfe der Befehlszeile

Geben Sie in der Befehlszeile Folgendes ein:

> sh appfw stats

Verwenden Sie den folgenden Befehl, um Statistiken für ein bestimmtes Profil anzuzeigen:

> stat appfw profile <profile name>

So zeigen Sie XML-SQL-Injection-Statistiken mithilfe der GUI an

  1. Navigieren Sie zu System > Sicherheit > Web App Firewall.
  2. Greifen Sie im rechten Bereich auf den Statistik-Link zu.
  3. Verwenden Sie die Scrollleiste, um die Statistiken zu Verstößen und Protokollen von XML SQL Injection einzusehen . Die Statistiktabelle enthält Echtzeitdaten und wird alle 7 Sekunden aktualisiert.