HTTP_REFERER selbst senden
Thorsten Hammerz
- cgi
0 Rol0 Thorsten Hammerz0 Rol
0 mech0 Benne0 Sven Rautenberg0 Linksetzer0 Benne
0 Michael Schröpl
Hallo Freunde!
Die CGI-Variable HTTP_REFERER kann ja problemlos mit jeder Sprache ausgelesen werden.
Nun habe ich vor kurzem ein Tutorial über das Spoofen diese Referrers gelesen und weiß, daß es sogar extra "Spoofbrowser" gibt, wo man den HTTP_REFERER selbst eingeben kann (z.B. DSpoof oder ZSpoof oder M*Spoofer).
Daraufhin habe ich mich gefragt, wie das ganze funktioniert und habe versucht, diese Variable mittel PHP, PYTHON und PERL zu setzen.
Das hat nicht funktioniert. Vielleicht habe ich es falsch gemacht.
Kann mir jemand sagen, ob das möglich ist, dies irgendwie über ein CGI-Script zu realisieren (und wenn ja: wie macht man dieses dann)?
Ich habe schon stundenlang gegoogled, allerdings nichts mir hilfreiches entdecken können.
Einen freundlichen Gruß aus Dresden sendt Euch, Thorsten!
Hi Thorsten,
Nun habe ich vor kurzem ein Tutorial über das Spoofen diese Referrers gelesen...
Ich kann dir leider nicht weiterhelfen. Mich interessiert aber die ganze Referrer-Sache auch, könntest du mal den link von dem Tutorial posten?
Danke.
Viele Grüße
Rol
Ich kann dir leider nicht weiterhelfen. Mich interessiert aber die ganze Referrer-Sache auch, könntest du mal den link von dem Tutorial posten?
Danke.
Das stammt aus einem nicht öffentlichen Board. Da kommst Du also leider nicht rauf.
Es handelt über das Spoofen des Referrers, um kostenlos auf XXX-Seiten zu kommen.
Ich habe das Tutorial mal bei einem Bekannten gelesen.
Ich gebe ihm gleich mal über ICQ bescheid, daß er das an Deine Mailadresse schicken soll.
Jedenfalls interessiert mich die Sache jetzt brennend, doch ich kann nichst darüber finden. Man empfahl mir die Profis in diesem Forum zu fragen.
Ich gebe ihm gleich mal über ICQ bescheid, daß er das an Deine Mailadresse schicken soll.
Danke.
moin
also rein von der logik her kann man diese nicht verändern, denn sie seite fragt diese variable vom user ab, bzw. vom browser des users
d.h. wenn es über eine scriptsprache geht, dann über eine clientseitige und die muss in der lage sein den browser soweit zu beeinflussen, dass man die variabl des browsers ändert, und das ist denke ich mal nicht möglich
ich hoffe ich habe dein problem richtig verstanden
gurß
the mech | code:nc01
also rein von der logik her kann man diese nicht verändern, denn sie seite fragt diese variable vom user ab, bzw. vom browser des users
d.h. wenn es über eine scriptsprache geht, dann über eine clientseitige und die muss in der lage sein den browser soweit zu beeinflussen, dass man die variabl des browsers ändert, und das ist denke ich mal nicht möglich
ich hoffe ich habe dein problem richtig verstanden
Ja, das hast Du korrekt verstanden. Ja, es muß wohl logischerweise clientseitig sein, ich habe aber nur an Perl und PHP gedacht. Damit konnte es dann ja wohl auch nicht gehen.
Danke soweit.
Wie könnte man das nun angehen. Ist Javascript dazu in der Lage? In SelfHTML steht nur etwas über das Abfragen.
Vielleicht geht es mit VBS oder anderem? Ich suche auf jeden Fall nach einer Scriptlösung und nicht nach Webwasher oder Spoofbrowser.
Hi Thorsten,
Ja, das hast Du korrekt verstanden. Ja, es muß wohl logischerweise
clientseitig sein, ich habe aber nur an Perl und PHP gedacht. Damit
konnte es dann ja wohl auch nicht gehen.
doch, natürlich.
Was ein Client und was ein Server ist, das ist immer eine Frage der
Perspektive.
Du kannst sehr wohl in PHP oder Perl einen HTTP-Request absetzen, genau
wie das ein Browser tut. Auf diese Weise funktionieren beispielsweise
Web-Angebote, die einen Links-Check über eine Website durchführen - und
nicht zuletzt auch praktisch alle Suchmaschinen-Spider.
Wie könnte man das nun angehen. Ist Javascript dazu in der Lage?
Nein. JavaScript ist nicht befugt, in einer realen Umwelt des Rechners
zu arbeiten, d. h. so etwas wie TCP/IP-sockets direkt anzusprechen.
Die Kommunikation innerhalb des Browser-Universums macht immer noch
der Browser und nicht der Seitenanbieter.
Vielleicht geht es mit VBS oder anderem?
Das halte ich schon eher für möglich - bei M$ weiß man nie, was geht
und was nicht. ;-)
Ich suche auf jeden Fall nach einer Scriptlösung und nicht nach
Webwasher oder Spoofbrowser.
So ganz habe ich Dein Einsatz-Szenario noch nicht verstanden ... ich
glaube, da wären noch ein paar Teile Deiner Aufgabenstellung nützlich.
Viele Grüße
Michael
Hi Thorsten,
wenn ich das richtig verstanden habe, dann willst du doch nur den HTTP_REFERER von deinem Browser ändern!?
Dazu kannst du doch einfach ein Programm wie Webwasher benutzen!?
Gruß,
Benne
Aloha!
Die CGI-Variable HTTP_REFERER kann ja problemlos mit jeder Sprache ausgelesen werden.
Nun habe ich vor kurzem ein Tutorial über das Spoofen diese Referrers gelesen und weiß, daß es sogar extra "Spoofbrowser" gibt, wo man den HTTP_REFERER selbst eingeben kann (z.B. DSpoof oder ZSpoof oder M*Spoofer).
Daraufhin habe ich mich gefragt, wie das ganze funktioniert und habe versucht, diese Variable mittel PHP, PYTHON und PERL zu setzen.
Das hat nicht funktioniert. Vielleicht habe ich es falsch gemacht.
Hast du mit PHP eine Webseite von einem Server abgerufen? Nur dann kannst du den Referrer selbst bestimmen.
Üblicherweise nimmt man bei Perl LWP::Simple, bei dem man u.a. auch den User-Agent setzen (also selbst bestimmen) kann - vermutlich kann man den Referrer auf die gleiche Weise setzen.
Bei PHP muß man zum Abruf einer URL mit fsockopen() arbeiten. Bei php.net ist zu diesem Befehl ein Beispiel angegeben, welches genau das tut. Du mußt lediglich zusätzlich zum bereits mit fputs() ausgegebenen HTTP-Request noch eine Zeile Referrer hinzufügen (und das natürlich an der richtigen Stelle - eine einzelne Leerzeile kennzeichnet nämlich das Ende des Requests, und der Server antwortet).
- Sven Rautenberg
PS: Ich bin sicher, der "20-Uhr-Schröpl" ;) antwortet so zwischen 20 und 21 Uhr auch noch - bleib also dran. :)
Hallo Sven,
Üblicherweise nimmt man bei Perl LWP::Simple, bei dem man u.a. auch
den User-Agent setzen (also selbst bestimmen) kann - vermutlich kann
man den Referrer auf die gleiche Weise setzen.
LWP::Simple kann das nicht - da geht nur get($url) und sonst fast nichts.
Die nächst tiefere Schicht ist LWP::UserAgent, mit dem man eben einen
UserAgent aufbaut und diesen dann den Request ausführen läßt; damit
kann man dann beliebige HTTP-Header erzeugen und senden, von denen
"Referer" eben auch einer ist. So etwas braucht man z. B., wenn man
serverseitig Cookies senden will (auch das ist ein HTTP-Header, wenn-
gleich keiner, der in der HTTP-Spezifikation beschrieben ist).
PS: Ich bin sicher, der "20-Uhr-Schröpl" ;) antwortet so zwischen 20
und 21 Uhr auch noch - bleib also dran. :)
Weia - ich streue heute sehr.
Viele Grüße
Michael
Hi,
Hallo Linksetzer
funktioniert aber (zumindest bei mir) nicht.
das waren die ersten Worte, seit ich dich kenne :-)
Gruß,
Benne
Hi Thorsten,
Die CGI-Variable HTTP_REFERER kann ja problemlos mit jeder Sprache
ausgelesen werden.
mit dem Begriff "CGI-Variable" bin ich nicht so ganz glücklich.
Also mal ganz von vorn:
Ein HTTP-Request wird von einem Client an einen Server gesendet.
Dieser Request besteht aus (bis zu) zwei Teilen:
a) Einer Liste von Header-Zeilen (beendet mit einer Leerzeile) und
b) einem Body (der ggf. leer sein kann).
Der Webserver interpretiert diese Header-Zeilen _auch_ so, daß er den
Namen des jeweiligen Header-Feldes in Großbuchstaben umsetzt, '-' nach
'_' abbildet, "HTTP_" davor klebt und unter dem so entstandenen Namen
eine Environment-Variable anlegt. Aus dem HTTP-Header "Referer" wird
nun also eine Environment-Variable "HTTP_REFERER".
Dieses Verhalten ist in der Spezifikation der CGI-Schnittstelle fest-
gelegt (http://hoohoo.ncsa.uiuc.edu/cgi/env.html).
Diese Environment-Variable wiederum kann von einer serverseitigen
Anwendung angesprochen werden, wenn sie das Environment überhaupt
ansprechen kann.
Dies kann übrigens auch eine Datei sein, welche vom Handler für Server
Side Includes interpretiert wird - es muß kein CGI-Programm sein.
Apache bietet da eine ganze Menge selbst.
Nun habe ich vor kurzem ein Tutorial über das Spoofen diese
Referrers gelesen und weiß, daß es sogar extra "Spoofbrowser" gibt,
wo man den HTTP_REFERER selbst eingeben kann (z.B. DSpoof oder
ZSpoof oder M*Spoofer).
Jeder Client stellt einen Satz von HTTP-Headern nach seiner Wahl
zusammen. Er muß dabei bestimmte Anforderungen erfüllen (je nach
der verwendeten HTTP-Version), aber er hat weitgehende Freiheit,
was genau er sendet und was nicht.
Referrer beispielsweise sind Schall und Rauch - da ist es reiner
Zufall, wenn Browser A dasselbe tut wie Browser B. (Das gilt bei-
spielsweise nicht mal für Netscape 4 gegenüber M$IE 5.)
Daraufhin habe ich mich gefragt, wie das ganze funktioniert und
habe versucht, diese Variable mittel PHP, PYTHON und PERL zu setzen.
Das hat nicht funktioniert. Vielleicht habe ich es falsch gemacht.
Falls Du damit eine via CGI gestartete Perl-Anwendung etc meinst,
bist Du gerade am falschen Ende der Leitung. Dort ist der Request
ja bereits angekommen - da ist es zu spät, um noch daran zu drehen.
Du mußt vielmehr dort ansetzen, wo der Request gesendet wird. Das
_kann_ durchaus wiederum ein CGI/Perl- oder PHP-Programm sein, welches
in diesem Falle _sowohl_ Server- _als auch_ Client-Funktionen ausübt.
Kann mir jemand sagen, ob das möglich ist, dies irgendwie über ein
CGI-Script zu realisieren (und wenn ja: wie macht man dieses dann)?
Was _möglich_ ist, kannst Du Dir beispielsweise unter
http://www.schroepl.net/cgi-bin/http_trace.pl
ansehen und ausprobieren.
Das ist ein CGI-Skript (in Perl geschrieben, unter Verwendung von
LWP::UserAgent), welches Deinen HTTP-Request empfängt (über die oben
beschriebenen Environment-Variablen), dann selbst einen minimal
geänderten Request an den eigentlichen Ziel-Server sendet, dessen
Antwort empfängt und Dir über die gesamte Unterhaltung eine Ergebnis-
seite ausgibt.
Da die Funktion dieses Skripts ein Trace ist, übernimmt es die emp-
fangenen HTTP-Header so genau wie möglich - es könnte aber genauso
gut alles irgendwie umschreiben.
Ich habe schon stundenlang gegoogled, allerdings nichts mir
hilfreiches entdecken können.
Es gibt eine ganze Menge von Clients, die selbst HTTP-Requests
absetzen.
Das Beispiel, welches Deinem Szenario am ähnlichsten sein dürfte,
sind sogenannte Anonymizer. Die funktionieren im Prinzip genau wie
mein HTTP-Trace, mit zwei Unterschieden:
1. Sie liefern Dir die Seite des Ziel-Servers vollständig zurück,
ohne "Verzierungen" drum herum, und
2. sie parsen den Inhalt eines eventuellen HTML-Dokuments und
schreiben alle darin gefundenen Links in Aufrufe des Anony-
mizers mit entsprechenden Query-Strings um. Auf diese Weise
kannst Du Links in den empfangenen Seiten anklicken, ohne Dir
so recht bewußt zu werden, daß Du eigentlich gar nicht die
"echte" Seite vor Dir hast ... Du läßt den Anonymizer für Dich
surfen und schaust ihm praktisch nur über die Schulter.
Viele Grüße
Michael