Aktywne Wpisy
MakaronowyStwor +103
Tak się zastanawiam czemu baby dużo rzadziej wpuszczają kogoś w #samochody .
Są nieuprzejme czy po prostu nie ogarniają co się dzieje?
#motoryzacja
Są nieuprzejme czy po prostu nie ogarniają co się dzieje?
#motoryzacja
Saddam_Husajn +243
Przypominam że to ten człowiek jest odpowiedzialny za wybuch wojny i jeżeli zostanie wprowadzony obowiązkowy pobór do wojska to ten człowiek jest za niego w 100% odpowiedzialny i to mu dziękujcie za to.
#obowiazkowecwiczeniawojskowe #wojna #rosja
#obowiazkowecwiczeniawojskowe #wojna #rosja
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
<
, a
"
jest zamieniany na
"
). Pomimo tego i tak udaje się znaleźć podatność i wykorzystać błąd. Wynika to z niedostosowania się do pewnych dobrych standardów w HTML-u. W tym przypadku wystarczyło atrybut wartość atrybutu
title
umieścić w cudzysłowach i błędu już by nie było. Wniosek jest