Beliebte Beiträge Auf Dem Pc Und Software

Top Artikel Auf Internet - 2018

Testen auf SQL-Injection-Schwachstellen

SQL Injection-Angriffe stellen für Webanwendungen ein enormes Risiko dar, da sie von einem Datenbank-Backend abhängig sind, um dynamischen Inhalt zu generieren. Bei dieser Art von Angriff manipulieren Hacker eine Webanwendung mit dem Versuch, ihre eigenen SQL-Befehle in die von der Datenbank ausgegebenen zu injizieren. Ein Beispiel finden Sie im Artikel SQL Injection Attacks auf Datenbanken. In diesem Artikel untersuchen wir, wie Sie Ihre Webanwendungen testen können, um festzustellen, ob sie anfällig für SQL Injection-Angriffe sind.

Automatisiertes SQL Injection-Scanning

Eine Möglichkeit besteht in der Verwendung eines automatisierten Schwachstellen-Scanners für Webanwendungen. wie HP WebInspect, IBM AppScan oder Cenzics Hailstorm. Diese Tools bieten alle einfache und automatisierte Möglichkeiten zur Analyse Ihrer Webanwendungen auf potenzielle SQL Injection-Schwachstellen. Sie sind jedoch recht teuer und kosten bis zu 25.000 US-Dollar pro Sitz.

Manuelle SQL-Injection-Tests

Was ist ein schlechter Entwickler für Anwendungen? Sie können tatsächlich einige grundlegende Tests durchführen, um Ihre Webanwendungen auf SQL Injection-Schwachstellen mit nur einem Webbrowser zu testen. Zunächst ein Wort der Vorsicht: Die Tests, die ich beschreibe, suchen nur nach grundlegenden SQL-Injection-Fehlern. Sie werden keine fortgeschrittenen Techniken entdecken und sind etwas mühsam zu benutzen. Wenn Sie es sich leisten können, gehen Sie mit einem automatisierten Scanner. Wenn Sie jedoch mit diesem Preis nicht umgehen können, ist das manuelle Testen ein guter erster Schritt.

Der einfachste Weg, um festzustellen, ob eine Anwendung angreifbar ist, besteht darin, mit harmlosen Injektionsattacken zu experimentieren, die Ihrer Datenbank nicht schaden Erfolg haben, aber Ihnen Beweise liefern, dass Sie ein Problem beheben müssen. Angenommen, Sie haben eine einfache Webanwendung, die eine Person in einer Datenbank nachschlägt und als Ergebnis Kontaktinformationen bereitstellt. Diese Seite verwendet möglicherweise das folgende URL-Format:

 //myfakewebsite.com/directory.asp?lastname=chapple&firstname=mike 

Wir können davon ausgehen, dass diese Seite eine Datenbanksuche durchführt, indem sie eine Abfrage ähnlich der folgenden verwendet :

 SELECT Telefon FROM Verzeichnis WHERE Nachname = 'chapple' und Vorname = 'mike' 

Lassen Sie uns ein wenig experimentieren. Mit unserer obigen Annahme können wir eine einfache Änderung an der URL vornehmen, die auf SQL-Injection-Angriffe testet:

 //myfakewebsite.com/directory.asp?lastname=chapple&firstname=mike'+AND+ (select + count (* ) + from + fake) +% 3e0 + OR + '1'% 3d'1 

Wenn die Webanwendung nicht richtig gegen SQL-Injection geschützt ist, wird dieser falsche Vorname einfach in die SQL-Anweisung gesteckt, die gegen die SQL-Anweisung ausgeführt wird Datenbank, resultierend in:

 SELECT Telefon FROM Verzeichnis WHERE Nachname = 'chapple' und Vorname = 'mike' AND (wählen Sie Anzahl (*) von Fälschung)> 0 ODER '1' = '1' 

Sie werden Beachten Sie, dass die obige Syntax ein wenig anders ist als in der ursprünglichen URL. Ich habe mir die Freiheit genommen, die URL-kodierte Variable für ihre ASCII-Äquivalente zu konvertieren, um es einfacher zu machen, dem Beispiel zu folgen. Zum Beispiel ist% 3d die URL-Codierung für das Zeichen "=". Ich habe auch einige Zeilenumbrüche für ähnliche Zwecke hinzugefügt.

Auswertung der Ergebnisse

Der Test kommt, wenn Sie versuchen, die Webseite mit der oben aufgeführten URL zu laden. Wenn sich die Webanwendung gut verhält, werden die einfachen Anführungszeichen aus der Eingabe entfernt, bevor die Abfrage an die Datenbank übergeben wird. Dies führt einfach zu einer seltsamen Suche nach jemandem mit einem Vornamen, der eine Menge SQL enthält! In der Anwendung wird eine Fehlermeldung ähnlich der folgenden angezeigt:

 Fehler: Kein Benutzer mit dem Namen mike + AND + gefunden (wählen Sie + (+) + + + + + 3e0 + OR + 1) % 3d1 Chapple! 

Andererseits, wenn die Anwendung anfällig für SQL-Injection ist, wird die Anweisung direkt an die Datenbank übergeben, was zu einer von zwei Möglichkeiten führt. Erstens, wenn auf Ihrem Server detaillierte Fehlermeldungen aktiviert sind (was Sie nicht sollten!), Sehen Sie etwa Folgendes:

Microsoft OLE DB-Provider für ODBC-Treiberfehler '80040e37' [Microsoft] [ODBC SQL Server-Treiber] [SQL Server] Ungültiger Objektname "Fake". /directory.asp, Zeile 13 

Senden Sie Ihren Kommentar