{"id":986,"date":"2018-01-26T08:38:58","date_gmt":"2018-01-26T08:38:58","guid":{"rendered":"http:\/\/enginsight.com\/?p=986"},"modified":"2023-05-22T08:50:27","modified_gmt":"2023-05-22T06:50:27","slug":"kurz-knackig-sql-injection-session-prediction-und-cross-site-tracing-erklaert","status":"publish","type":"post","link":"https:\/\/enginsight.com\/de\/blog\/kurz-knackig-sql-injection-session-prediction-und-cross-site-tracing-erklaert\/","title":{"rendered":"Kurz &#038; Knackig: SQL-Injection, Session Prediction und Cross-Site-Tracing erkl\u00e4rt"},"content":{"rendered":"<p><em>Die Analysef&#xE4;higkeiten unserer Plattform werden stetig erweitert. Seit kurzem pr&#xFC;fen wir auch 3 neue Angriffszenarien, die im Folgenden erl&#xE4;utert werden. In diesem Artikel erkl&#xE4;ren wir, was hinter SQL-Injection, Session Prediction und Cross-Site-Tracing steckt und was man dagegen tun kann.<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"sqlinjection\">Angriffszenario: SQL-Injection<\/h2>\n\n\n\n<p>SQL steht f&#xFC;r &#x201E;Structured Query Language&#x201C; und ist eine Datenbanksprache. Mit Hilfe von SQL k&#xF6;nnen z.B. Daten in Datenbanken abgefragt, bearbeitet oder gel&#xF6;scht werden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Was ist eine SQL-Injection?<\/h3>\n\n\n\n<p>Sagen wir der fiktive Online-Shop &bdquo;Steine &amp; Unkraut&ldquo; verf&uuml;gt &uuml;ber eine eingebaute Suchfunktion mit der man nach bestimmten Stein- und Unkrautsorten suchen und diese bestellen kann. Ein Benutzer gibt beispielsweise im Suchfeld ein &bdquo;tibetanisches Steppengestr&uuml;pp&ldquo;. Diese Eingabe wird dann zu einer <strong>SQL-Anfrage<\/strong> verarbeitet, die vom sogenannten SQL-Interpreter ausgef&#xFC;hrt wird. Die <a href=\"https:\/\/enginsight.com\/de\/blog\/umgang-mit-datenpannen-was-fordert-die-dsgvo\/\">Produktdatenbank<\/a> wird auf einen Eintrag durchsucht, der &#x201E;tibetanisches Steppengestr&#xFC;pp&#x201C; enth&#xE4;lt. War die Suche erfolgreich, kann der Benutzer sein Gestr&#xFC;pp ausw&#xE4;hlen und bestellen. Bei einer <strong>SQL-Injection<\/strong> versucht der Angreifer &#xFC;ber eine Anwendung, die Zugriff auf die Datenbank hat (z.B. ein Suchfeld oder ein Login-Formular), eigene Datenbankbefehle einzuschleusen. Es gibt n&#xE4;mlich einige Zeichen, z.B. &#x201A; oder \\ die f&#xFC;r den <strong>SQL-Interpreter<\/strong> Sonderfunktionen besitzen. &#xDC;ber diese Zeichen kann man den Interpreter quasi &#x201E;direkt&#x201C; erreichen und ihm Anweisungen geben.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Wie gef&#xE4;hrlich ist SQL-Injection?<\/h3>\n\n\n\n<p>Gelingt eine SQL-Injection, dann k&#xF6;nnte es f&#xFC;r den Angreifer m&#xF6;glich werden, Daten aus der Datenbank auszulesen, zu manipulieren oder sogar die komplette Datenbank zu l&#xF6;schen. Erfolgt die <strong>SQL-Injection z.B. &#xFC;ber ein Login Formular<\/strong> und es wird die zugeh&#xF6;rige Datenbank durchsucht, in der die Benutzernamen, Passw&#xF6;rter und jeweiligen Rechte gespeichert sind, k&#xF6;nnte der Angreifer sich auch Zugang zu <a href=\"https:\/\/enginsight.com\/de\/blog\/vertraulichkeit-integritaet-verfuegbarkeit-einfach-erklaert\/\">gesch&#xFC;tzten Bereichen<\/a> oder sogar Administratorrechte verschaffen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Wie kann ich mich vor SQL-Injection sch&#xFC;tzen?<\/h3>\n\n\n\n<p>Um diese Attacke zu vermeiden, sollten solche speziellen Sonderzeichen in der Benutzereingabe herausgefiltert bzw. umgewandelt oder maskiert werden. Sicherer ist noch, die Benutzereingabe nicht einfach so ohne weiteres in eine SQL-Anweisung einzubauen (z.B. mittels sogenannten <strong>&#x201E;Prepared Statements&#x201C;<\/strong>).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"sessionprediction\">Angriffszenario: Session Prediction<\/h2>\n\n\n\n<p>Bei dieser Attacke, spielt die sogenannte Session ID eine wichtige Rolle. Bleiben wir beim Beispiel unseres &bdquo;Steine &amp; Unkraut&ldquo; Online Shops. Sagen wir ein Benutzer &bdquo;Herbert&ldquo; ist langj&auml;hriger Kunde des Shops und m&ouml;chte seinen Bestand an Unkraut und Steinen auff&uuml;llen. Er loggt sich mit seinem Benutzernamen und seinem geheimen Passwort ein und beweist so der Seite seine Identit&auml;t. Herbert m&ouml;chte sein Passwort pro Besuch des Online Shops nat&uuml;rlich nur einmal eingeben. <\/p>\n\n\n\n<p>Deswegen generiert der Online Shop eine <strong>Session ID<\/strong>, eine Zeichenkette, die Herbert f&#xFC;r die Dauer seines Besuchs zugeordnet wird, z.B. 12433Herbertistda4343. Sie beweist gegen&#xFC;ber dem Online Shop, dass er sich erfolgreich angemeldet hat. Bei jeder weiteren Kommunikation zwischen Herbert und der Website wird die Session ID nun mit &#xFC;bertragen z.B. in der URL:&#xA0;<code>http:\/\/www.SteineundUnkraut.org\/index.php?sid=12433Herbertistda4343<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Was ist Session Prediction?<\/h3>\n\n\n\n<p>Manchmal erfolgt die Vergabe von Session IDs nach einem bestimmten Muster, z.B. bekommt der 1. Besucher die Session ID &#x201E;user01&#x201C;, der 2. die Session ID &#x201E;user02&#x201C;, etc. Dann ist es f&#xFC;r einen Angreifer sehr einfach eine g&#xFC;ltige Session ID zu erraten und er kann sich als derjenige ausgeben, dem die Session ID eigentlich geh&#xF6;rt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Wie gef&#xE4;hrlich ist Session Prediction?<\/h3>\n\n\n\n<p>Sind z.B. Zahlungsinformationen im Kundenkonto hinterlegt, kann der <strong>Angreifer<\/strong> bei Steine &amp; Unkraut auf Kosten seines Opfers einkaufen. Nat&uuml;rlich kann diese Attacke auch dazu verwendet werden, um sich <strong>Zugang zu Webseiten mit sensiblen Inhalten<\/strong> zu verschaffen oder Aktionen mit der Berechtigung des imitierten Nutzers auszuf&#xFC;hren.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Wie kann ich mich vor Session Prediction sch&#xFC;tzen?<\/h3>\n\n\n\n<p>Um Session Prediction zu vermeiden ist es ratsam, die Session ID nicht zu kurz zu w&#xE4;hlen und eine gewisse Form von Zufall zu integrieren, damit man von einer abgefangenen Session ID nicht auf andere Session IDs schlie&#xDF;en kann. Als Benutzer selbst kann man sich kaum gegen Session Prediction sch&#xFC;tzen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"crosssitetracing\">Angriffszenario: Cross-Site-Tracing<\/h2>\n\n\n\n<p>Bei diesem Angriff spielt die sogenannte <a href=\"https:\/\/enginsight.com\/de\/blog\/http-ein-blick-hinter-die-kulissen-des-internets\/\">HTTP-Anfrage<\/a> &#x201E;TRACE&#x201C; eine gro&#xDF;e Rolle. Diese Methode, die eigentlich der Fehlersuche dienen soll, liefert als Antwort die urspr&#xFC;ngliche Anfrage eines Web-Clients zur&#xFC;ck. Hat sich der Benutzer bei dem <strong>Web-Client mit einem Cookie authentifiziert<\/strong>, so wird dieses in der Antwort auch mitgeliefert. Mit Hilfe eines Skripts kann man dieses <strong>Cookie auslesen und anzeigen<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Was ist Cross-Site-Tracing?<\/h3>\n\n\n\n<p>Nehmen wir wieder unseren Benutzer Herbert. Herbert hat mittlerweile sein Lieblingsunkraut, das schmalbl&auml;ttrige Weidenr&ouml;schen nachbestellt und recherchiert nun die besten D&uuml;ngemittel daf&uuml;r. Herbert klickt aus Versehen auf einen kompromittierten Link, der Javascript Code in den &bdquo;Steine &amp; Unkraut&ldquo; Online Shop einschleust. Dieses Skript bewirkt, dass Herberts Computer eine &bdquo;TRACE&ldquo; Anfrage an den &bdquo;Steine &amp; Unkraut&ldquo; Online-Shop sendet. Der Online Shop sendet daraufhin Cookies oder andere <strong>Authentifizierungsdaten<\/strong> zur&#xFC;ck und kann durch das b&#xF6;sartige Javascript an einen externen Server &#xFC;bermittelt werden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Wie gef&#xE4;hrlich ist Cross-Site-Tracing?<\/h3>\n\n\n\n<p><a href=\"https:\/\/enginsight.com\/de\/blog\/cross-site-scripting-oder-wie-einfach-hacker-ihre-kundendaten-stehlen\/\">Cross-Site-Tracing<\/a> kann dazu verwendet werden, die Benutzerdaten des Opfers zu einer beliebigen Website zu erlangen. Eine Attacke hat &#xE4;hnliche Konsequenzen wie eine erfolgreiche Session Prediction Attacke.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Wie kann ich mich vor Cross-Site-Tracing sch&#xFC;tzen?<\/h3>\n\n\n\n<p>Benutzer k&#xF6;nnen Javascript in ihrem Browser deaktivieren, was aber zu Einschr&#xE4;nkungen bei der Ausf&#xFC;hrung mancher Webseiten f&#xFC;hren kann oder den Content-Security-Policy HTTP Header setzen. Eine etwas weniger drastische L&#xF6;sungen kann z.B. sein den Browser so einzustellen, dass Cookies nach dem Ende einer Session automatisch gel&#xF6;scht werden. Server Administratoren k&#xF6;nnen ihre Server so einstellen, dass &#x201E;TRACE&#x201C; standardm&#xE4;&#xDF;ig deaktiviert ist.<\/p>\n\n\n\n<p><strong>Mit Enginsight Sicherheitsl&#xFC;cken erkennen und schlie&#xDF;en<\/strong><\/p>\n\n\n\n<p>Sofern Sie pr&#xFC;fen m&#xF6;chten, inwieweit Sie von diesen drei Angriffen betroffen sind oder Hilfe bei Gegenma&#xDF;nahmen suchen,<strong>&#xA0;registrieren&#xA0;Sie sich einfach und testen Sie unsere Plattform 14 Tage lang kostenlos.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die Analysef&#xE4;higkeiten unserer Plattform werden stetig erweitert. Seit kurzem pr&#xFC;fen wir auch 3 neue Angriffszenarien, die im Folgenden erl&#xE4;utert werden. In diesem Artikel erkl&#xE4;ren wir, was hinter SQL-Injection, Session Prediction und Cross-Site-Tracing steckt und was man dagegen tun kann. Angriffszenario: SQL-Injection SQL steht f&#xFC;r &#x201E;Structured Query Language&#x201C; und ist eine Datenbanksprache. Mit Hilfe von SQL [&#x2026;]<\/p>\n","protected":false},"author":8,"featured_media":987,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"content-type":"","_eb_attr":"","footnotes":""},"categories":[10],"tags":[],"class_list":["post-986","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-endpoint-netzwerksicherheit"],"_links":{"self":[{"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/posts\/986","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=986"}],"version-history":[{"count":0,"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/posts\/986\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/media\/987"}],"wp:attachment":[{"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/media?parent=986"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/categories?post=986"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/tags?post=986"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}