{"id":6918,"date":"2020-09-21T13:10:05","date_gmt":"2020-09-21T11:10:05","guid":{"rendered":"https:\/\/enginsight.com\/?p=6918"},"modified":"2023-06-05T09:06:58","modified_gmt":"2023-06-05T07:06:58","slug":"sql-injection","status":"publish","type":"post","link":"https:\/\/enginsight.com\/de\/blog\/sql-injection\/","title":{"rendered":"Wie funktioniert SQL-Injection und wie kann ich mich sch\u00fctzen?"},"content":{"rendered":"<p>Immer wieder landen gro&#xDF;e Datens&#xE4;tze an Kundendaten im Darknet und werden zum Verkauf angeboten. Betroffen sind sowohl kleinere Unternehmen, Mittelst&#xE4;ndler, <a href=\"https:\/\/www.golem.de\/news\/sql-injection-sicherheitsluecke-erlaubt-zugriff-auf-sony-kundendaten-1410-110199.html\" target=\"_blank\" rel=\"noreferrer noopener\">aber auch Global Player wie beispielsweise Sony zeigten sich schon anf&#xE4;llig<\/a>. Meist gelangen Hacker durch SQL-Injections an die sensiblen Daten. Eine SQL-Injection nutzt eine Sicherheitsl&#xFC;cke, die bei fehlerhafter Konfiguration der Verbindung zwischen Webanwendung und Datenbank entsteht. <\/p>\n\n\n\n<p>Auf der Datenbank gespeicherte Datens&#xE4;tze lassen sich so abgreifen. Deshalb listet das gemeinn&#xFC;tzige <a href=\"https:\/\/owasp.org\/www-project-top-ten\/\" target=\"_blank\" rel=\"noreferrer noopener\">&#x201E;Open Web Application Security Project&#x201C; Injections als Top-Sicherheitsrisiko von Webanwendungen<\/a>. Wir erkl&#xE4;ren die Funktionsweise von SQL-Injections und wie man sich sch&#xFC;tzen kann.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Nach welchem Prinzip funktionieren SQL-Injections?<\/h2>\n\n\n\n<p>Bei einer SQL-Injection wird die Kommunikation der Webanwendung mit der Datenbank manipuliert. Dazu werden zus&#xE4;tzliche Befehle in Datenbankabfragen injiziert und so die Logik der Abfrage ver&#xE4;ndert. SQL ist die Sprache, die verwendet wird, um mit der Datenbank zu kommunizieren. Sie wird (in leicht abgewandelter Form) bei verschiedenen relationalen Datenbanksystemen verwendet (z.B. MySQL oder MariaDB).<\/p>\n\n\n\n<p>Genutzt werden f&#xFC;r die Injektion Eingabem&#xF6;glichkeiten f&#xFC;r Benutzer auf der Webseite, zum Beispiel ein Such- oder Login-Feld. Anstatt der vorgesehenen Eingabe wird ein SQL-Befehl eingeben. Wie dies in der Praxis aussieht und funktioniert, verdeutlicht das folgende vereinfachte Beispiel:<\/p>\n\n\n\n<p>Durch die Benutzereingabe eines Login-Feldes wird folgender SQL-Befehl ausgef&#xFC;hrt:<\/p>\n\n\n\n<div class=\"wp-block-group is-layout-flow wp-block-group-is-layout-flow\">\n<p style=\"font-family: monospace;\"><strong>SELECT ID FROM nutzer WHERE login = &#x2018;<font style=\"color: #3cbd70;\">Benutzername<\/font>&#x2019; AND pwd = &#x2018;<font style=\"color: #3cbd70;\">Passwort<\/font>&#x2019;<\/strong><\/p>\n<\/div>\n\n\n\n<p>Die gr&#xFC;n markierten Stellen sind die Eingaben, die der Benutzer in das Login-Formular eingibt, wenn er es wie vorgesehen nutzt. Ein Login wird genehmigt, wenn Benutzername und Passwort &#xFC;bereinstimmen. Der Angreifer erweitert nun seine Eingabe durch den rot markierten Code:<\/p>\n\n\n\n<p style=\"font-family: monospace;\"><strong>SELECT ID FROM nutzer WHERE login = &#x2018;<font style=\"color: #3cbd70;\">Benutzername<\/font><font style=\"color: #E83A3A;\">&#x2019; OR 1=1;<\/font>&#x2019; AND pwd = &#x2018;<font style=\"color: #3cbd70;\">Passwort<\/font>&#x2019;<\/strong><\/p>\n\n\n\n<p>Durch die Erweiterung wird die Logik der Datenbankabfrage ver&#xE4;ndert. Mit dem Hochkomma beendet er die Bedingung und f&#xFC;gt einen neuen Befehl an. Die Bedingung 1=1 ist immer wahr, ein Login wird also genehmigt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Welche Sch&#xE4;den lassen sich durch eine SQL-Injection anrichten?<\/h2>\n\n\n\n<p>Mit SQL-Injections l&#xE4;sst sich nicht nur die Authentifizierung eines Logins umgehen. Die M&#xF6;glichkeiten k&#xF6;nnen sehr umfassend sein. Durch geschickte Injektionen lassen sich s&#xE4;mtliche Inhalte der Datenbank auslesen und kopieren, weshalb ein gro&#xDF;er Teil der Datenleaks der letzten Jahre auf erfolgreichen SQL-Injections basiert. Indem Daten aus der Datenbank gel&#xF6;scht werden, l&#xE4;sst sich auch der Betrieb von Anwendungen lahmlegen. Hat der Betreiber der Datenbank kein Backup angelegt, ist zudem ein Datenverlust zu beklagen.<\/p>\n\n\n\n<p>Es besteht dar&#xFC;ber hinaus die M&#xF6;glichkeit, eigenen Code in die Datenbank einzuschleusen und auf diesem Weg das angegriffene System zum Beispiel f&#xFC;r die Verbreitung von Schadcode zu missbrauchen. In einigen F&#xE4;llen sind &#xFC;ber SQL-Injections sogar Zugriffe auf die Shell des Servers m&#xF6;glich, sodass die gesamte Kontrolle &#xFC;ber den Server &#xFC;bernommen werden kann.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wer ist gef&#xE4;hrdet?<\/h2>\n\n\n\n<p>Ein gro&#xDF;er Teil der heutigen Angriffe via SQL-Injection findet nicht manuell statt, sondern wird vollkommen automatisiert ausgef&#xFC;hrt. Bot-Netze durchk&#xE4;mmen das gesamte Internet, um Webseiten mit Standard-Attacken anzugreifen. Daher ist jede Webseite, die relationale Datenbanksysteme im Einsatz hat, potenziell f&#xFC;r SQL-Injections gef&#xE4;hrdet. Die Gr&#xF6;&#xDF;e des beispielsweise hinter der Webseite stehenden Unternehmens ist irrelevant.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wie kann man sich vor SQL-Injections sch&#xFC;tzen?<\/h2>\n\n\n\n<p>Zum Gl&#xFC;ck gibt es effektive Methoden, die eigenen Webanwendungen vor SQL-Injections effektiv abzusichern. Der erste Schritt lautet, den Daten der Benutzereingaben nicht bedingungslos zu vertrauen und stattdessen die Eingabedaten auf erwartete Werte zu &#xFC;berpr&#xFC;fen. Spezielle Sonderzeichen sollten aus Benutzereingaben herausgefiltert oder maskiert werden.<\/p>\n\n\n\n<p>Grunds&#xE4;tzlich vor SQL-Attacken absichern lassen sich Webseiten, indem man die Benutzereingaben vom SQL-Interpreter fernh&#xE4;lt. Erm&#xF6;glicht wird der Schutzmechanismus durch den Einsatz von Prepared Statements. Dabei handelt es sich um eine spezielle Form von Templates f&#xFC;r Datenbankabfragen, die durch variable Parameter angepasst werden. Zus&#xE4;tzlich zum Sicherheitsbonus erh&#xF6;ht dies auch die Performance der Datenbank.<\/p>\n\n\n\n<p>Dar&#xFC;ber hinaus lassen sich auch auf Seite der Datenbank Sicherheitsma&#xDF;nahmen ergreifen. Sollte ein Einbruch doch von Erfolg gekr&#xF6;nt sein, l&#xE4;sst sich so verhindern, dass gr&#xF6;&#xDF;ere Sch&#xE4;den angerichtet werden k&#xF6;nnen. Hier ist insbesondere die Einschr&#xE4;nkung von Benutzer-Privilegien zu nennen. Lese-, Ausf&#xFC;hrungs- und L&#xF6;schberechtigungen sollten immer m&#xF6;glichst sparsam vergeben werden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wie l&#xE4;sst sich herausfinden, ob die eigene Webseite f&#xFC;r SQL-Injections anf&#xE4;llig ist?<\/h2>\n\n\n\n<p>SQL-Injections sind seit langer Zeit ein Klassiker erfolgreicher Hackerattacken, die Gegenma&#xDF;nahmen bekannt und Standard in der Webentwicklung. Dennoch sind immer wieder Webseiten, auch gro&#xDF;er Unternehmen und Institutionen anf&#xE4;llig f&#xFC;r den Angriffsvektor.<\/p>\n\n\n\n<p>Denn das Wissen &#xFC;ber SQL-Injection allein sch&#xFC;tzt nicht vor der Attacke. Durch Unachtsamkeiten im Entwicklungsprozess, Anpassungen und Programmierfehler k&#xF6;nnen stetig neue Schwachstellen entstehen. Regelm&#xE4;&#xDF;ige Checks auf die Anf&#xE4;lligkeit f&#xFC;r SQL-Injections erm&#xF6;glichen, die Schwachstellen schnell aufzudecken und beheben, bevor sie von Hackern ausgenutzt werden.<\/p>\n\n\n\n<p><strong>Mehr im Blog<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/enginsight.com\/de\/blog\/kurz-knackig-sql-injection-session-prediction-und-cross-site-tracing-erklaert\/\"><strong>Kurz &amp; Knackig: SQL-Injection, Session Prediction und Cross-Site-Tracing erkl&auml;rt<\/strong><\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.asscompact.de\/nachrichten\/%E2%80%9Ehackerattacken-nutzen-fehler-im-kleinen-einmaleins-der-it-sicherheit%E2%80%9C\" target=\"_blank\" rel=\"noreferrer noopener\">Hackerattacken nutzen Fehler im kleinen Einmaleins der IT-Sicherheit<\/a><\/li>\n<\/ul>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><strong>Wie Sie mit Enginsight SQL-Injections verteidigen <\/strong><\/p>\n\n\n\n<p>Deshalb haben wir bei Enginsight SQL-Injection in die Attacken unserer Softwarekomponente Hacktor integriert, mit der sich <a href=\"https:\/\/enginsight.com\/de\/pentest\/\">automatisierte Penetrationstest<\/a> u.a. auf Webseiten durchf&#xFC;hren lassen. <\/p>\n\n\n\n<p>Mit einer kostenlosen Demoversion k&#xF6;nnen Sie noch heute Ihre Webseite auf Schwachstellen testen und pr&#xFC;fen, ob Ihre Webseite f&#xFC;r SQL-Injections anf&#xE4;llig ist.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Immer wieder landen gro&#xDF;e Datens&#xE4;tze an Kundendaten im Darknet und werden zum Verkauf angeboten. Meist gelangen Hacker durch SQL-Injections an die sensiblen Daten. Wir erkl&#xE4;ren die Funktionsweise von SQL-Injections und wie man sich sch&#xFC;tzen kann.<\/p>\n","protected":false},"author":8,"featured_media":6920,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"content-type":"","_eb_attr":"","footnotes":""},"categories":[10],"tags":[146,75,68,117,140],"class_list":["post-6918","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-endpoint-netzwerksicherheit","tag-hacking","tag-it-security","tag-it-sicherheit","tag-mysql","tag-websecurity"],"_links":{"self":[{"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/posts\/6918","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/comments?post=6918"}],"version-history":[{"count":0,"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/posts\/6918\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/media\/6920"}],"wp:attachment":[{"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/media?parent=6918"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/categories?post=6918"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/tags?post=6918"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}