Błędy na JoeMonsterze – Bo niedopatrzenie zabija powoli

Tytuł wpisu parafrazujący znane wszystkim motto JoeMonstera. Mogłoby się wydawać, że tak duży i popularny serwis, po kilku przejściach z bezpieczeństwem w przeszłości (a raczej jego brakiem) będzie dzisiaj wolny od trywialnych błędów. Niestety, po zalogowaniu, spędzając trochę minut na stronie znalazłem kilka „perełek”.

Logowanie, edytujemy profil

Trzeba przyznać, że podczas edycji profilu wszystkie inputy są w jakiś sposób filtrowane. Ze wszystkich, prócz sygnatury forumowej, wycinane zostają wszelkie znaczniki HTML. Nie przechodzi tam jednak słówko script. Kod wycinający je wygląda prawdopodobnie następująco:

<?php
$var = strtolower($_POST['sygnatura']);
$var = str_replace("script", "*", $var);
?>

Jak można zauważyć ciąg <scr ipt> przejdzie omijając filtrowanie. Nie to jednak jest problemem. JM przepuszcza wszystkie znaczniki HTML wraz z atrybutami, także stylów CSS.

Przyszły mi do głowy dwie metody wykorzystania tego niedopatrzenia. Pierwsza to zakrycie całej strony divem absolutnym z pozdrowieniami dla mamy, a druga to dodanie takim samym absolutnym divem „linku konkursowego” gdzieś w okolicach menu. Do stworzenia wspomnianego linku można także wykorzystać bardziej rzucający się w oczy panel boczny z pozycją fixed.

Warto zaznaczyć, że tak spreparowana sygnatura wyświetla się zarówno w naszym profilu jak i pod każdym postem na forum.

Otwórzmy szaffe

Szaffa to specjalne miejsce, gdzie przechowywane są pliki użytkowników. Umożliwia ona dodatkowo sortowanie ich w albumach. Docelowo plik *.php nie ma prawa przejść walidacji, jednak po próbie jego wrzucenia (poprzez uploader standardowy, nie ten domyślny) dostajemy ciekawy komunikat ze ścieżką do tego pliku w katalogu /tmp/.

Dobrze jednak, skupmy się na plikach graficznych i albumach. Jak się okazało  żaden tytuł, nazwa albumu, czy tagi nie są filtrowane przed zastosowaniem w nich znaczników HTML. Tutaj ważna uwaga – tytuł ostatnio wrzuconych plików wyświetlany jest na stronie głównej.

Ciekawie wygląda także zawartość skryptu perform_upload.php odpowiadający za walidacje wrzucanych plików. Oczywiście wiem, bo udało mi się go pobrać dodając tyldę na końcu nazwy, o zgrozo!

Słowem zakończenia

Administracja JoeMonster.org została poinformowana o niedopatrzeniach i zostały one naprawione. Zaznaczam, że w trakcie testowania zabezpieczeń nie wyciekły żadne dane osobowe, ani nie został uzyskany dostęp do bazy danych i sesji użytkowników.

Z podziękowaniami dla Administratora za przedłużenie konta 😉

One thought on “Błędy na JoeMonsterze – Bo niedopatrzenie zabija powoli

Dodaj komentarz

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