Thorsten Hammerz: HTTP_REFERER selbst senden

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!

  1. 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

    1. 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.

      1. Ich gebe ihm gleich mal über ICQ bescheid, daß er das an Deine Mailadresse schicken soll.

        Danke.

  2. 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

    1. 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.

      1. 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

  3. 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

  4. 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. :)

    1. 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

  5. Hi,

    http://www.yaos.de/tut/lwp1/

    funktioniert aber (zumindest bei mir) nicht.

    1. Hi,

      Hallo Linksetzer

      http://www.yaos.de/tut/lwp1/

      funktioniert aber (zumindest bei mir) nicht.

      das waren die ersten Worte, seit ich dich kenne :-)

      Gruß,
      Benne

  6. 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