Response Header

Hi,

ich habe mal folgende Frage an Euch:

Seit ein paar Tagen wird überall der reddit Header veröffentlicht:

Code:
tycho@alcarin ~ $ curl -I http://www.reddit.com/
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Set-Cookie:  reddit_first=%7B%22organic_pos%22%3A%201%2C%20%22firsttime%22%3A%20%22first%22%7D;  Domain=reddit.com; expires=Thu, 31 Dec 2037 23:59:59 GMT; Path=/
[B]Server: '; DROP TABLE servertypes; --[/B]
Date: Thu, 06 May 2010 23:09:17 GMT
Connection: keep-alive

Hierbei sollen Leute, die mit CURL oder WGet-S die Seite aufrufen Ihr blaues Wunder erleben.

Was bedeutet das?

Also Curl und WGet werden doch dafür genutzt, um komplette Seiten herunterzuladen?!

DROP TABLE ist der SQL Befehl für das Löschen einer Datenbanktabelle.

Was ist denn die servertypes Tabelle? Gehört die zu CURL?

Wird diese Tabelle dann gelöscht, wenn jemand per CURL die Seite aufruft?

Welche Auswirkungen hat das für ihn?

Muss er sich dann curl neu installieren?

Ich finde das höchst interessant, aber möchte gerne verstehen, warum reddit diesen Header gesetzt hat und was er bewirkt.

Wäre es denn dann nicht eigentlich für alle Webseitenbetreiber sinnvoll, einen solchen Header zu setzen?
 
Diesen Header bekommt scheinbar jeder ausgeliefert.
Wobei normale Browser dieses Headerfeld ignorieren sollten, da das Semikolon am Anfang einen ungültigen Wert darstellt.

Offensichtlich versucht sich reddit.com damit gegen SQL-Injections zu wehren. Diese werden meist über Kommandozeilen-Scripte oder -Tools (u.a. mit curl) ausgeführt und unter bestimmten Bedingungen könnte sich so der Angreifer selbst die Tabelle 'servertypes' (falls vorhanden) beim Ausführen des Angriffs löschen.

In meinen Augen nur eine kleine Spielerei und nichts worüber man sich ernsthaft Gedanken machen müsste.

Und nein, wenn du ganz normal die Seite mit curl oder wget anfrägst wird dir nichts passieren, genausowenig wie mit einem Browser.
 
Hi Dresko,

erstmal danke für Deine Antwort.

Soweit habe ich das verstanden, aber was hat ein Response Header mit einem SQL-Befehl zu tun? Wieso wird der SQL ausgeführt?

Die Tabelle servertypes muss ja eine ganz spezielle Bedeutung haben, da reddit versucht, diese zu löschen.

Es wird keine MySql Tabelle sein. Ich vermute, daß dies irgendwie mit curl zusammenhängt, da der Rsponse direkt auf CURL Aufrufe reagiert.
 
also wenn man normal mit wget oder curl 'ne Seite zieht, sollte dieser Header wirklich NICHTS bewirken.

Und wieso sollten das deiner Meinung nach (wenn es was bringen sollte, was es nicht tut) alle so machen?
Es gibt viele Fälle, in denen Zugriff über wget oder curl sogar erwünscht ist.
(z.B. Seiten, bei denen Mirror erwünscht sind oder z.B. Web-Services - wo also andere Scripte z.B. über REST irgendwelche Daten abfragen)

Dieser Header ist an sich nichts weiter als eine SQL-Injection und soll anscheinend irgendwelche Bots ärgern, welche Domain und zugehörigen Server-Infos in 'ner Datenbank abspeichern, um dann z.B. anhand des Server-Strings automatisch mit irgendwelchen Exploits auf die Server zu schießen...
 
Hi beavisbee,

die Erklärung habe ich jetzt verstanden... :thumb_up:

Sorry, wenn meine Fragen ein wenig unbeholfen sind, aber ich beschäftige mich noch nicht lange mit dem Thema IT-Sicherheit, XSS und SQL Injections.

Daß man über den Response Header überhaupt etwas in der Richtung machen kann, wäre mir nie in den Sinn gekommen.

Ich werde mich doch mal ein wenig mehr mit curl und/oder wget auseinandersetzen.

Ich will einfach mal wissen, was damit alles gemacht werden kann... Wenn Du schon exploits ansprichst... dann ist das sicherlich ein heikles Thema.

Es gibt viele Fälle, in denen Zugriff über wget oder curl sogar erwünscht ist.
(z.B. Seiten, bei denen Mirror erwünscht sind oder z.B. Web-Services - wo also andere Scripte z.B. über REST irgendwelche Daten abfragen)

Ich sehe schon, daß ich noch viele viele Sachen lernen muss.

Vielen Dank an Euch
 
Im Grunde hast du aber schon recht, eigentlich ist das ziemlich schwachsinnig. So einen "Schutz" kann man einbauen, wenn man sonst wirklich mal überhaupt gar nichts zutun hat.
 
Nunja, man sollte sich mal folgende Dinge überlegen:

1.) Die meisten SQL-Injections sind skriptgesteuert und voll- oder zumindest teilweise automatisiert.
2.) Diese Skripte sind in der Regel einfach "zusammengehackt" sodass sie irgendwie funktionieren. Strings werden da selten überprüft.
3.) Sehr wahrscheinlich wird das Server-Feld ausgewertet und irgendwie verarbeitet.

Ich finde es also garnicht mal so unwahrscheinlich, dass bei einem automatisiertem, großflächigen Angriff die Serverversionen, IPs oder sonstige Infos über den aktuellen Server in eine Tabelle namens "servertype" eingetragen werden. Wenn diese ausgelesene Variable mit dem Query-String verkettet oder eingesetzt wird, könnte das für den ein oder anderen bös' ins Auge gehen. :P

Schwachsinnig finde ich es daher nicht unbedingt, nur übertrieben und mehr eine techn. Spielerei.
 
erinner mich an diverse sql injectionen über die "user agent" variabel bei statistikscripten
 
2.) Diese Skripte sind in der Regel einfach "zusammengehackt" sodass sie irgendwie funktionieren. Strings werden da selten überprüft.
3.) Sehr wahrscheinlich wird das Server-Feld ausgewertet und irgendwie verarbeitet.

Ich hoffe doch mal nicht, dass jemand die von Aussen kommenden Headers ausführt. Das wäre wirklich peinlich.

Eventuell hat eines der bekannten Frameworks das mal gemacht und Reddit versucht damit jetzt Scriptkiddies zu verarschen, die sich irgendne alte Version zusammengegoogelt haben. :-)
 
Zuletzt bearbeitet:
Zurück
Oben