Spieglein, Spieglein an der Wand...

Mirror 0.2.2 ist ein kleiner Server, der HTTP (Hypertext Transfer Protocol) Requests, die an ihn gerichtet sind, spiegelt. Es ist ein Multithreading Server, der in der interpretierten, objektorientierten und dynamisch typisierten Skriptsprache Ruby geschrieben wurde.

Spiegelung des HTTP Requests an diesen Server:


GET / HTTP/1.1
User-Agent: CCBot/2.0 (https://commoncrawl.org/faq/)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Host: mirror.ping.de:8888
Connection: Keep-Alive
Accept-Encoding: gzip



Bedeutung der Headerzeilen

Ihre genaue Bedeutung und weitere Einzelheiten des HTTP sind in der HTTP/1.1 Spezifikation definiert. Eine grobe Bestimmung der häufiger vorkommenden Headerzeilen erfolgt in dieser Liste:

Der Body des Requests

Im Body eines Requests stehen z.B. die Formulardaten, die mit der POST-Methode vom Client an den Server geschickt werden. Die Formulardaten, welche mit GET verschickt werden, stehen stattdessen in dem URL hinter dem GET.

Quelle dieses Requests:


Client IP Adresse:Portnummer = 52.91.221.160:59830
DNS Name = ec2-52-91-221-160.compute-1.amazonaws.com
Ident Reply = FAILED

Informationen über die Quelle

Die IP Adresse (Internet Protocol) und die Portnummer von der die Verbindung zum Server ausging sind natürlich bekannt. Falls man keinen Proxy verwendet, kann ein Serverbetreiber leicht herausfinden, von welchem Provider aus gesurft wird. Lutz Donnerhackes Whois-Forwarder unter whois.thur.de macht es sogar richtig einfach, den richtigen Eintrag aus der richtigen Datenbank zu fischen. Die IP Adresse des Rechners, von dem sie surfen, bzw. des verwendeten Proxies ergibt dann z.B. dieses Ergebnis.

Desweiteren ist es möglich weitere Informationen herauszufinden, wenn die IP-Adresse eines Hosts erst einmal bekannt ist: Man kann z. B. diverse Portscans an diese Adresse richten.

Der DNS Name (Domain Name System) der zugreifenden IP Adresse ist ebenfalls leicht herauszufinden, falls der Provider des Clientusers DNS Reverse Lookups unterstützt. (Ansonsten wird in der Quelle weiter oben auf dieser Seite noch einmal die IP-Adresse angezeigt.)

Mit dem Ident Protokoll kann man noch andere interessante Information gewinnen, z. B. den Usernamen des anfragenden Benutzers, falls ein identd-Server auf dem Client-Rechner läuft. Unter Umständen erhält man so stattdessen nur ein kryptographisches Token, welches etwas aufwendiger zu entschlüsseln ist.

Portscanning

Es gibt etliche Verfahren herauszufinden, welche Ports eines Hosts "offen" sind und welche nicht. Falls hinter einem offenen Port ein Stück defekte Server-Software läuft, ist es für mehr oder weniger findige Leute möglich einen Remote Exploit auf Ihrem Rechner durchzuführen und entweder nur den entsprechenden Service oder den gesamten Rechner zur Einstellung seines Dienstes zu bewegen. Alternativ kann es für Unbefugte auf diese Weise sogar möglich sein, in Ihren Rechner einzudringen. Es ist deshalb für die Sicherheit eines Systems wichtig, so wenige Ports wie nötig offenstehen zu lassen und diese nach Möglichkeit mit sicherer Software zu betreiben.

Im folgenden können Sie die am häufigsten verwendeten Portscanarten auf den Host anwenden, von dem aus Sie gerade surfen, um von den offenen TCP (Transmission Control Protocol) Ports ihres Hosts einen Eindruck zu erhalten. Alle Scanarten betreffen aus Geschwindigkeitsgründen nur die Ports 1 - 1023.

Achtung! Falls Sie einen Proxy-Server verwenden, wird dieser Rechner statt Ihrem eigenen gescannt werden, so daß Sie nichts über die Sicherheit Ihres Systems erfahren, sondern nur über die des verwendeten Proxy-Rechners. Bitte nur scannen, wenn Ihre IP-Adresse 52.91.221.160 (ec2-52-91-221-160.compute-1.amazonaws.com) ist oder der Betreiber des Proxy-Rechners keine Einwände gegen einen Portscan hat.

Die Scans selbst wurden mit Hilfe von nmap von Fyodor durchgeführt, dem wohl besten Portscanner, der zur Zeit frei verfügbar ist. Man kann ihn als Standalone-Version von hier herunterladen.

Cookies

Ihre Besuche auf diesem Server werden mitgezählt, indem der Server in Ihrem Client ein Cookie namens mirror zu setzen versucht. Hier ist der entsprechende Befehl:

Set-Cookie: mirror=1; path=/; expires=Tue, 02 Apr 2019 01:39:39 GMT

Beim wiederholten Reload der Seite sollte das Cookie oben angezeigt und sein Wert jeweils inkrementiert werden, falls Sie Cookies in Ihrem Browser nicht abgeschaltet haben. Die Zahl Ihrer Besuche auf dieser Website beträgt demnach im Moment: 1.

Im Gegensatz zu dieser recht harmlosen Anwendung können Cookies auch dazu mißbraucht werden, Ihre Besuche auf einer Website zu personalisieren, also Ihre Anonymität aufzuheben. Der Cookie enthält dann einen Schlüssel, der eine eindeutige Zuordnung zu einem User ermöglicht.

Falls Sie auf einer Webseite z. B. einmal etwas gekauft haben sollten und Ihre Anschrift oder Emailadresse angegeben haben, kann es sein, daß Sie unaufgefordert Werbung für bestimmte Produkte erhalten, obwohl Sie sich beim letzten Besuch auf dieser Website nur informieren wollten, aber sehr lange auf bestimmte Seiten geschaut haben. Dies ist besonders bei sehr langlebigen Cookies mit hoher Expiretime eine Gefahr. Der Cookie von dieser Website wird sich allerdings schon nach 14 Tagen selbst vernichten.

Formulare

Formulare dienen dazu, Eingaben des Benutzers vom Client an den Server zu übertragen. Formulare gibt es in zwei Geschmacksrichtungen: Mit der Methode GET und mit der Methode POST. Mit beiden kann man in den Textfeldern unten experimentieren und jeweils Submit Query drücken, um den Request oben gespiegelt zu sehen.

Die GET Methode

Hier wird der URL, die bei einem normalen GET Request verwendet wird, dazu zweckentfremdet, die Formulardaten an den Server zu übertragen. Das hat unter anderem den Nachteil, daß Sie deswegen häufig in Proxy-Logs zu lesen sind.

Wenn Sie in die Felder unten etwas eingeben, werden die Eingaben oben in der Spiegelung des abgesandten Requests zu sehen sein. Aber auch versteckte Eingaben (Hidden Input) sind möglich.

Input:
Hidden Input: Du kannst mich nicht sehen,

Die POST Methode

Mit dieser Methode werden die Formulardaten im Body des Requests übertragen. Auch hier sind wieder versteckte Eingaben möglich. Beide kann man wiederum oben in der Spiegelung des Requests sehen.
Input:
Hidden Input: wenn ich die Augen schließe!

Letzte Worte

Die Idee zu diesem Server ist nicht auf meinem Mist gewachsen, sondern war ursprünglich eine aus dem Kopf rekonstruierte Replika von Pascal Giengers "Pascals Headerecho", welches leider nicht mehr am Netz ist. Inzwischen kann der Server zusätzlich Portscans der connectenden Hosts durchführen, falls das verlangt wird.


© Florian Frank <flori@ping.de>