Aktywne Wpisy
![OsraneMajtyXD](https://wykop.pl/cdn/c0834752/a6fc93c9405076e8682b6d3193eb65983fde306029443b8f9fa019074a62fa3d,q60.jpg)
OsraneMajtyXD +54
![OsraneMajtyXD - Tylko Polka w niemieckim dresie, Chinka w chińskim, nawet Chorwatka w...](https://wykop.pl/cdn/c3201142/9e73fa383bee0c3bc395aef1bf62dc465300d09548914860e2c37addf369bd08,w150.jpg?author=OsraneMajtyXD&auth=efaa4e8d9f6545542b0e55e7baeafddf)
źródło: temp_file5921212382815663564
Pobierz#primemma NOWY LINK DO PRIME MAM LIMIT WIADOMOŚĆI W KOMENTARZU MOGE WYSŁAC LINKA
Skopiuj link
Skopiuj linkźródło: temp_file5921212382815663564
PobierzWykop.pl
Ukraina
Podróże
Gospodarka
Informacje
Technologia
Motoryzacja
Sport
Rozrywka
Igrzyska
Ciekawostki
Ostatnio rzuciłem kolejne wyzwanie związane z bezpieczeństwem stron internetowych. Strona pod adresem http://hakerium.cba.pl/zad2/ jest podatna na błąd typu Cross-Site Scripting (XSS) i celem zadania było dołączenie pliku z zewnętrznej domeny. Zaproponowałem plik spod adresu http://pastebin.com/raw.php?i=mYM90ckz który po prostu wyświetla alert, ale oczywiście można go dużo bardziej rozwinąć.
Sama strona umożliwiała dodawanie komentarzy o długości co najwyżej 100 znaków. Zacznijmy od analizy jak ta strona działa i dlaczego istnieje na niej podatność. (Sugeruję, żebyście samemu chwilę się stroną pobawili, żeby wiedzieć o czym ja dalej piszę :))
Na wstępie zobaczmy co w ogóle na stronie się dzieje przy dodawaniu komentarza. Zacznijmy od dodania prostego komentarza o treści
abc
. Zajrzyjmy teraz do HTML-a:
abc
Pierwsza rzecz, którą zawsze sprawdzamy to jest czy strona enkoduje znaki, które są istotne z punktu widzenia składni HTML-a, a więc:
" ' < > &
. Wpiszmy więc komentarz
abc"'<>&
i sprawdźmy co się dzieje:
abc"'<>&
Okazuje się więc, że odpada najprostsza metoda ataku czyli dodanie własnego tagu HTML-owego wewnątrz
div
a, ponieważ znak < jest enkodowany do <. Zwracamy jednak uwagę na fakt, że wartość atrybutu
title
nie jest umieszczona w cudzysłowiach. Być może więc możemy w naszym komentarzu dodać spację i stworzyć nowy atrybut? Dodajmy komentarz
abc onmouseover=alert(1)
:
abc onmouseover=alert(1)
Spacja nie została w żaden sposób zenkodowana i dodaliśmy nowy atrybut! Teraz wystarczy przejechać kursorem po komentarzu i zobaczymy, że pojawi się alert o treści "1".
Naszym zadaniem nie było jednak wyświetlanie takich alertów, ale dołączenie pliku JS z zewnętrznej domeny. W tym celu możemy skorzystać z faktu, że strona używa jQuery i użyć metody jQuery.getScript (dzięki @mero3 za to!). Gdybyśmy nie mieli dostępu do jQuery, wówczas można samemu zrobić znacznik
Błąd na tej stronie jest całkiem ciekawy, ponieważ strona enkoduje dane wyjściowe (tj. np. znak
<
jest zamieniany na