Webserver, Sicherheit ist realisierbarDiese Facharbeit beschäftigt sich mit dem Herzstück eines Netzwerkes, dem Webserver.
9
10 4.2. Beispiel 2 - Zugang für jedermannWie im Kapitel 3.1.5 beschrieben, sind besonders ASP Seiten zusammen mit dem MS SQL Server durch SQL Injektionen gefährdet. Ein besonders sensibler Punkt sind passwortgeschützte Bereiche.
Ein einfacher Anführungsstrich in einem durch Zufall gefundenen Formular brachte folgende Fehlermeldung: Microsoft OLE DB Provider for SQL Server error '80040e14' Diese Meldung zeigt an, dass die Möglichkeit von SQL Injektionen besteht. Für einen erfolgreichen Einbruch muss man zuerst die Struktur der Abfrage kennen. Hierzu kann man entsprechende Fehlermeldungen des SQL Servers wie folgt provozieren: Die Eingabe von ' having 1=1 -- führte zu folgender Fehlermeldung: Column 'User_Information.User_InformationID' is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause. Es wurde die Tabelle "User_Information" benutzt, um den Login zu verifizieren. Die erste Spalte dieser Tabelle hieß "User_InformationID".Die Eingabe von ' group by User_Information.User_InformationID having 1=1 -- ergab:Column 'User_Information.User_ID' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Die zweite Spalte hieß demnach "User_ID". Die Eingabe von ' group by User_Information.User_InformationID, User_Information.User_ID having 1=1 -- ergab die nächste Spalte usw. Dieses wurde mehrfach ausgeführt, bis die Meldung "Cannot group by a bit column." erschien. Wichtig ist zusätzlich der Typ einer jeden Spalte. Hierzu kann man die Funktion "sum" (Summieren) missbrauchen. Der SQL Server prüft zuerst, ob die entsprechende Felder überhaupt summierbar sind. Nur wenn dieses möglich ist, erhält man eine Fehlermeldung, wonach die Anzahl der Felder nicht stimmt. ' union select sum(User_InformationID) from User_Information -- führte zu All queries in an SQL statement containing a UNION operator must have an equal number of expressions in their target lists. "User_InformationID" muss somit ein numerischer Datentypen sein. ' union select sum(FullName) from User_Information -- führte zu The sum or average aggregate operation cannot take a nvarchar data type as an argument. "FullName" ist demnach eine Zeichenkette.
Mit diesen Angaben hätte ein Angreifer bereits Einträge in die Datenbanktabelle machen können. Um eventuelle Fehleingaben zu umgehen, wurde für dieses Beispiel ein zusätzlicher Weg gewählt. Das System bot jedem Besucher die Möglichkeit an, einen eigenen Account zu erstellen:
Allerdings hatte dieser Account so gut wie keine Rechte, was wünschenswerter Weise geändert werden musste. ' UPDATE User_Information SET SuperUser='1' WHERE User_ID='j0j02' -- Ein erneutes Einloggen zeigte den erwünschten Erfolg. Einem Benutzer mit SuperUser Rechten standen eine Vielzahl von Optionen offen, um das Erscheinungsbild der gesamten Webseite zu verändern.
Unter "Modify User Account" konnte man alle persönlichen Angaben einsehen. Felder, wie "First Name", beeinflussten dabei keine kritische Funktion im System. In diese Felder hätte man alle Rückmeldungen von Datenbankabfragen lenken können.
|
Über den Autor
Tutorial bewertenHat Ihnen dieses Tutorial gefallen? Dann bewerten Sie es jetzt! Fünf Sterne bedeutet "Sehr gut", ein Stern "Unzureichend". aktuelle Artikel
|
||||||||||||||||||||||||||||||||||||||||||||||||||||



|23.06.2006 |






