5.07.2010

Atak słownikowy na joomla 1.5.x - część 1

1. Przedwstęp 
Długo zastanawiałem się nad tym czy opublikować ten temat, mam tylko nadzieje że potraktujecie ten wpis jako ciekawostkę a nie jako kompletny poradnik nt. włamań do stron opartych o Joomla przypominam, że nie ponoszę żadnej odpowiedzialności za to jak ludzie wykorzystają tą wiedzę należy jednak wiedzieć, że wykorzystując tą wiedzę do złamania zabezpieczeń cudzej strony narażasz się na poważne konsekwencje prawne.


2. Wstęp
Joomla to bardzo popularny system CMS jednak wiele rozszerzeń jest napisana po macoszemu co powoduje czasem bardzo poważne luki w bezpieczeństwie. Zdarzają się jednak przezorni twórcy stron, którzy nim użyją danego rozszerzenia sprawdzają czy jest ono bezpieczne a także dbają o aktualizację komponentów/modułów. Możemy wykorzystać metodę słownikową do złamania hasła administratora a następnie dostać się do Panelu administracyjnego co dalej zrobimy to już nasza w tym głowa :). A więc do dzieła.


3. Rozpoznanie
Planowanie aplikacji do ataku wymaga pewnej znajomości systemu joomla, jeżeli chodzi o logowanie to może ono być dostępne z kilku miejsc na stronie. Pierwsze miejsce to moduł logowania, następnie mamy komponentu users i widok login i ostatnie miejsce to panel administracyjny. Zajmiemy się atakiem na PA standardowy link do panelu to: http://localhost/joomla/administrator administrator to domyślna nazwa katalogu, w niektórych przypadkach może być ona zupełnie inna ale nie będziemy sobie zawracać tym głowy. skoro już wiemy gdzie atakujemy pora zapoznać się z samym formularzem logowania, otwórzmy stronę logowania widzimy 3 pola, login hasło i język zaplecza. Za pomocą narzędzie firebug możemy sprawdzić co zostaje wysłane po kliknięciu zaloguj oto wynik przykładowego zapytania:

jak możemy zauważyć  w naszym zapytaniu wysyłane są następujące zmienne:

username - nazwa użytkownika (admin)
task - nazwa zadania do wykonania przez system (login - zaloguj)
passwd - hasło wpisane w formularzu
option - nazwa komponentu do którego zostanie skierowane zapytanie (komponent login)
lang - zmienna przechowuje informacje o wybranym języku (może być pusta)
40557..... - token który ma utrudnić nam życie

słów kilka o tokenie, token to specjalna zmienna generowana za każdym razem gdy wyświetlamy formularz logowania, po wysłaniu żądania system sprawdza czy tokeny się zgadzają i jeżeli tak to przystępuje do działania jeżeli nie to kończy pracę.

4. Teoria
Nasza aplikacja powinna pobierać od nas kilka informacji tj.
adres_ofiary - w naszym przypadku będzie to http://localhost/joomla/administrator
plik_slownika - plik z którego będą pobierane kolejne słowa
tekst_bledu - ten parametr ustawiamy tak aby system mógł wykryć kiedy logowanie nie powiodło się np gdy w dokumencie znajdzie się fraza "lub hasło zawiera błąd" program powinien kontynuować zadanie, jeżeli nie będzie tej frazy aplikacja zakończy się i wyświetli nam znalezione hasło.

Po pobraniu parametrów nasz program powinien nawiązać połączenie ze stroną ofiary a następnie podtrzymując sesję pobrać token i spreparować zapytanie POST do strony, po zanalizowaniu odpowiedzi aplikacja powinna zadecydować czy działać dalej czy wyświetlić hasło i zakończyć.

5. CDN
To już koniec części pierwszej teoretycznej, w następnej części zajmiemy się pisaniem odpowiedniego programu, a w 3 części omówimy metody obrony przed takim atakiem. Zapraszam do czytania kolejnych części.

Brak komentarzy:

Prześlij komentarz