de.phhsnews.com


de.phhsnews.com / Wie Hacker Websites mit SQL Injection und DDoS übernehmen

Wie Hacker Websites mit SQL Injection und DDoS übernehmen


Auch wenn Sie die Ereignisse der Hacker-Gruppen Anonymous und LulzSec nur lückenlos verfolgt haben, haben Sie wahrscheinlich schon von Websites und Dienste werden gehackt, wie die berüchtigten Sony Hacks. Hast du dich jemals gefragt, wie sie das machen?

Es gibt eine Reihe von Werkzeugen und Techniken, die diese Gruppen benutzen, und während wir nicht versuchen, dir ein Handbuch zu geben, um das selbst zu machen, ist es nützlich zu verstehen, was vor sich geht. Zwei der Angriffe, die Sie regelmäßig über sie hören, sind "(Distributed) Denial of Service" (DDoS) und "SQL Injections" (SQLI). So funktionieren sie.

Bild von xkcd

Denial-of-Service-Angriff

Was ist das?

Ein "Denial of Service" (manchmal als "Distributed Denial of Service" oder DDoS bezeichnet) Wenn ein System, in diesem Fall ein Webserver, so viele Anfragen gleichzeitig erhält, dass die Serverressourcen überlastet sind, stürzt das System einfach ab und fährt herunter. Ziel und Ergebnis eines erfolgreichen DDoS-Angriffs ist, dass die Websites auf dem Zielserver für legitime Traffic-Anfragen nicht verfügbar sind.

Wie funktioniert es?

Die Logistik einer DDoS-Attacke lässt sich am besten mit einem Beispiel erklären.

Stellen Sie sich vor, eine Million Menschen (die Angreifer) würden sich zusammenschließen, um das Geschäft von Unternehmen X zu behindern, indem sie ihr Call-Center ausschalten. Die Angreifer koordinieren, so dass sie am Dienstag um 9 Uhr morgens die Telefonnummer von Firma X anrufen. Höchstwahrscheinlich wird das Telefonsystem von Firma X nicht in der Lage sein, eine Million Anrufe gleichzeitig zu verarbeiten, so dass alle eingehenden Leitungen von den Angreifern gebunden werden. Das Ergebnis ist, dass legitime Kundenanrufe (d. H. Diejenigen, die nicht die Angreifer sind) nicht durchkommen, weil das Telefonsystem mit den Anrufen der Angreifer verbunden ist. Im Grunde genommen verliert Unternehmen X aufgrund der legitimen Anfragen, die nicht durchkommen können, möglicherweise Geschäft.

Ein DDoS-Angriff auf einen Webserver funktioniert genauso. Da es praktisch keine Möglichkeit gibt zu wissen, welcher Datenverkehr von legitimen Anfragen gegen Angreifer stammt, bis der Webserver die Anfrage verarbeitet, ist diese Art von Angriff typischerweise sehr effektiv.

Ausführen des Angriffs

Aufgrund des "Brute Erzwingen Sie die Natur eines DDoS-Angriffs, Sie müssen viele Computer gleichzeitig koordinieren, um gleichzeitig anzugreifen. Bei einem erneuten Besuch unseres Call-Center-Beispiels müssten alle Angreifer wissen, dass sie um 9:00 Uhr anrufen und zu diesem Zeitpunkt tatsächlich anrufen. Während dieses Prinzip sicherlich funktioniert, wenn es darum geht, einen Webserver anzugreifen, wird es wesentlich einfacher, wenn Zombie-Computer anstelle von tatsächlich bemannten Computern verwendet werden.

Wie Sie wahrscheinlich wissen, gibt es viele Varianten von Malware und Trojanern , einmal auf Ihrem System, schlafen und gelegentlich "Telefon nach Hause" für Anweisungen. Eine dieser Anweisungen könnte beispielsweise sein, wiederholte Anfragen um 9 Uhr an den Webserver von Firma X zu senden. Mit einem einzigen Update auf den Home-Standort der jeweiligen Malware kann ein einzelner Angreifer sofort Hunderttausende von kompromittierten Computern koordinieren, um eine massive DDoS-Attacke durchzuführen.

Die Schönheit der Verwendung von Zombie-Computern ist nicht nur in ihrer Effektivität, sondern auch in seiner Anonymität, da der Angreifer seinen Computer eigentlich gar nicht benutzen muss, um den Angriff auszuführen.

SQL Injection Attack

Was ist das?

Ein "SQL injection" (SQLI) Angriff ist ein Nutzen, das sich aus schlechten Web-Entwicklungstechniken und typischerweise in Kombination mit fehlerhafter Datenbanksicherheit ergibt. Das Ergebnis eines erfolgreichen Angriffs kann von der Identität eines Benutzerkontos bis zu einer vollständigen Kompromittierung der jeweiligen Datenbank oder des Servers reichen. Im Gegensatz zu einem DDoS-Angriff ist eine SQLI-Attacke vollständig und leicht vermeidbar, wenn eine Webanwendung entsprechend programmiert wird.

Ausführen des Angriffs

Immer wenn Sie sich auf einer Website anmelden und Ihren Benutzernamen und Ihr Passwort eingeben, können Sie Ihre Anmeldeinformationen Die Webanwendung kann eine Abfrage wie die folgende ausführen:

SELECT BenutzerID FROM Benutzer WHERE Benutzername = "myuser" UND Passwort = "mypass";

Hinweis: Zeichenfolgenwerte in einer SQL-Abfrage müssen in einfache Anführungszeichen eingeschlossen sein, weshalb sie um die vom Benutzer eingegebenen Werte herum erscheinen.

Die Kombination aus dem eingegebenen Benutzernamen (myuser) und dem Kennwort (mypass) muss mit einem Eintrag in der Benutzertabelle, damit eine UserID zurückgegeben wird. Wenn keine Übereinstimmung vorhanden ist, wird keine Benutzer-ID zurückgegeben, sodass die Anmeldedaten ungültig sind. Während eine bestimmte Implementierung anders sein kann, sind die Mechaniken ziemlich Standard.

Nun schauen wir uns eine Template-Authentifizierungsabfrage an, die wir durch die Werte ersetzen können, die der Benutzer in das Webformular eingibt:

SELECT UserID FROM Users WHERE UserName = " [user] "AND Password =" [pass] "

Auf den ersten Blick mag dies ein einfacher und logischer Schritt für die einfache Validierung von Benutzern sein, wenn jedoch eine einfache Ersetzung der vom Benutzer eingegebenen Werte für diese Vorlage durchgeführt wird anfällig für einen SQLI-Angriff.

Angenommen, "myuser'-" wird in das Feld "Benutzername" eingegeben und "falsepass" in das Kennwort eingegeben. Mit einer einfachen Ersetzung in unserer Template-Abfrage erhalten wir folgendes:

SELECT UserID FROM Benutzer WHERE UserName = "myuser" - 'AND Password = "falsepass"

Ein Schlüssel zu dieser Aussage sind die zwei Bindestriche(-). Dies ist das Begin-Kommentar-Token für SQL-Anweisungen. Daher wird alles, was nach den zwei Bindestrichen (einschließlich) angezeigt wird, ignoriert. Im Wesentlichen wird die obige Abfrage von der Datenbank wie folgt ausgeführt:

SELECT UserID FROM Benutzer WHERE UserName = "myuser"

Das eklatante Fehlen hier ist das Fehlen der Passwortprüfung. Durch die Einbindung der beiden Bindestriche in das Benutzerfeld haben wir die Passwortüberprüfung vollständig umgangen und konnten uns als "myuser" anmelden, ohne das entsprechende Passwort zu kennen. Diese Manipulation der Abfrage, um unbeabsichtigte Ergebnisse zu erzeugen, ist ein SQL-Injection-Angriff.

Welcher Schaden kann verursacht werden?

Ein SQL-Injection-Angriff wird durch nachlässige und unverantwortliche Anwendungscodierung verursacht und ist vollständig vermeidbar (auf die wir später eingehen werden) ein Moment), aber das Ausmaß des Schadens, der durchgeführt werden kann, hängt von der Datenbankeinrichtung ab. Damit eine Webanwendung mit der Back-End-Datenbank kommunizieren kann, muss die Anwendung eine Anmeldung an die Datenbank liefern (beachten Sie, dass sich dies von einer Benutzeranmeldung auf der Website selbst unterscheidet). Je nachdem, welche Berechtigungen die Webanwendung benötigt, kann dieses Datenbankkonto von Lese- / Schreibberechtigungen in vorhandenen Tabellen nur bis zum vollständigen Datenbankzugriff reichen. Wenn das jetzt nicht klar ist, sollten einige Beispiele zur besseren Übersicht beitragen.

Anhand des obigen Beispiels sehen Sie, dass zB"youruser '-", "admin" - "oder ein anderer Benutzername, wir können uns sofort als Benutzer anmelden, ohne das Passwort zu kennen. Sobald wir im System sind, wissen wir nicht, dass wir nicht wirklich dieser Benutzer sind, so dass wir vollen Zugriff auf das entsprechende Konto haben. Datenbankberechtigungen bieten kein Sicherheitsnetz dafür, da eine Website normalerweise mindestens Lese- / Schreibzugriff auf ihre jeweilige Datenbank haben muss.

Nun nehmen wir an, dass die Website die volle Kontrolle über ihre jeweilige Datenbank hat, die die Möglichkeit bietet Löschen von Datensätzen, Hinzufügen / Entfernen von Tabellen, Hinzufügen neuer Sicherheitskonten usw. Es ist wichtig zu beachten, dass einige Webanwendungen diese Art von Berechtigung benötigen, so dass es nicht automatisch schlecht ist, dass die volle Kontrolle gewährt wird.

So Um den Schaden zu verdeutlichen, der in dieser Situation möglich ist, verwenden wir das obige Beispiel, indem Sie Folgendes in das Feld für den Benutzernamen eingeben:"Robert"; DROP TABLE Benutzer; - ".After einfache Substitution die Authentifizierungsabfrage wird:

SELECT UserID FROM Benutzer WHERE UserName = "Robert"; DROP TABLE Benutzer; - 'AND Password = "falsepass"

Hinweis: das Semikolon ist in einer SQL-Abfrage wird verwendet, um das Ende einer bestimmten Anweisung und den Beginn einer neuen Anweisung zu bezeichnen.

Was wird von ausgeführt die Datenbank als:

SELECT UserID FROM Benutzer WHERE UserName = "Robert"

DROP TABLE Benutzer

So haben wir einen SQLI-Angriff verwendet, um die gesamte Users-Tabelle zu löschen.

Natürlich kann viel Schlimmeres erreicht werden, da der Angreifer abhängig von den erlaubten SQL-Berechtigungen Werte ändern, Tabellen (oder die gesamte Datenbank selbst) in eine Textdatei ablegen, neue Anmeldekonten erstellen oder sogar die gesamte Datenbankinstallation übernehmen kann.

Einen SQL-Injection-Angriff verhindern

Wie bereits mehrfach erwähnt, ist ein SQL-Injection-Angriff leicht vermeidbar. Eine der Hauptregeln der Webentwicklung ist, dass Sie niemals blind auf Benutzereingaben vertrauen, wie wir es taten, als wir in unserer obigen Template-Abfrage eine einfache Substitution durchführten.

Eine SQLI-Attacke wird leicht durch die so genannte Bereinigung Ihrer Eingaben vereitelt. Der Bereinigungsvorgang ist eigentlich ziemlich trivial, da er im Grunde nur irgendwelche Inline-Anführungszeichen (') so behandelt, dass sie nicht dazu verwendet werden können, einen String innerhalb einer SQL-Anweisung vorzeitig zu beenden.

Zum Beispiel wenn Sie möchten Nachschlagen "O'neil" in einer Datenbank, konnten Sie einfache Substitution nicht verwenden, da das einfache Anführungszeichen nach dem O die Zeichenfolge vorzeitig beenden würde. Stattdessen bereinigen Sie es mithilfe des Escape-Zeichens der entsprechenden Datenbank. Nehmen wir an, dass das Escape-Zeichen für ein Inline-Anführungszeichen jedem Anführungszeichen ein -Symbol vorangestellt ist. So würde "O'neal" als "O 'neil" bereinigt werden.

Dieser einfache Vorgang der Hygiene verhindert ziemlich genau einen SQLI-Angriff. Um dies zu verdeutlichen, lassen Sie uns unsere vorherigen Beispiele noch einmal ansehen und die resultierenden Abfragen sehen, wenn die Benutzereingabe bereinigt wird.

myuser '- / falsepass :

SELECT BenutzerID FROM Benutzer WHERE Benutzername = " myuser "- 'AND Password =" falsepass "

Da das einfache Anführungszeichen nach myuser maskiert ist (dh als Teil des Zielwerts betrachtet wird), sucht die Datenbank nach dem Benutzernamen von" myuser ". - ".Da die Bindestriche zusätzlich in den String-Wert und nicht in die SQL-Anweisung selbst eingeschlossen sind, werden sie als Teil des Zielwerts betrachtet und nicht als SQL-Kommentar interpretiert.

Robert '; DROP TABLE Benutzer; - / falsepass :

SELECT BenutzerID FROM Benutzer WHERE Benutzername = "Robert "; DROP TABLE Benutzer; - 'AND Password = "falsepass"

Durch einfaches Umgehen des einfachen Anführungsstrichs nach Robert sind das Semikolon und die Bindestriche in der UserName-Suchzeichenfolge enthalten, so dass die Datenbank wortwörtlich nach"Robert" sucht. ; DROP TABLE Benutzer; - "anstelle des Löschens der Tabelle.

Zusammenfassung

Während sich Webangriffe weiterentwickeln und raffinierter werden oder sich auf einen anderen Einstiegspunkt konzentrieren, ist es wichtig, sich zu schützen gegen erprobte und echte Angriffe, die die Inspiration für mehrere frei verfügbare "Hacker-Tools" waren, die sie ausnutzen sollten.

Bestimmte Arten von Angriffen, wie DDoS, können nicht einfach vermieden werden, während andere wie SQLI es können. Der Schaden, der durch diese Arten von Angriffen verursacht werden kann, kann jedoch in Abhängigkeit von den getroffenen Vorkehrungen von Unannehmlichkeiten bis hin zu Katastrophen reichen.


Wie Windows ein Geräusch wiedergibt, wenn Sie Caps Lock, Num Lock oder Scroll Lock drücken

Wie Windows ein Geräusch wiedergibt, wenn Sie Caps Lock, Num Lock oder Scroll Lock drücken

Haben Sie die Feststelltaste während des Tippens versehentlich gedrückt? Oder die Num-Taste versehentlich ausgeschaltet und dann versucht, die Zifferntasten zu benutzen? Keine Bange. Es gibt eine Einstellung in Windows, die Sie mit einem Ton benachrichtigen kann, wenn Sie eine dieser Tasten drücken. Die Einstellung der Tastenkombination in Windows bietet die Möglichkeit, einen Ton zu spielen, wenn Sie die Tasten Feststelltaste, Num Lock oder Rollen drücken .

(how-to)

So richten Sie Apple TV für die Wiedergabe Ihrer persönlichen iTunes-Mediathek ein

So richten Sie Apple TV für die Wiedergabe Ihrer persönlichen iTunes-Mediathek ein

Wenn Sie bereits viele Musik- und Heimvideos in Ihrer iTunes-Mediathek gespeichert haben, können Sie sie einfach auf Ihr Apple TV streamen und damit die Ausgangsquellen, mit denen es verbunden ist. Für ein Medien-Streaming-Gerät, das relativ lang ist, hat das Apple TV viel zu bieten und bei 69 $ ist es ein guter Deal, wenn Sie einen Apple-centric haben Zuhause.

(how-to)