Joomla atak tokenem - solucja

2008-12-31 , Papiewski Łukasz , Tips & Tricks / Tipy

Sprawdźmy czy nasza Joomla nie jest na ten typ ataku narażona.
Po nazwie naszej strony głównej podajmy takie zapytanie
index.php?option=com_user&view=reset&layout=confirm
przykładowo:
http://papiewski.pl/index.php?option=com_user&view=reset&layout=confirm
Pojawi się monit o potwierdzenie konta tokenem. W niezabezpieczonej Joomla'i wpisanie apostrofu powoduje że zapytanie do bazy z pliku php znajdującego się w components/com_user/models/reset.php
$db->setQuery('SELECT id FROM #__users WHERE block = 0 AND 
activation = '.$db->Quote($token));
przyjmuje postać
SELECT id
FROM jos_users
WHERE block =0
zwracając tablicę wszystkich użytkowników w tym na pierwszym miejscu Administratora, jako tego, któremu możemy teraz zmienić hasło.
Czyli jeśli pojawia się teraz strona zmiany hasła to jeśli nikt nam jeszcze nie wykasował całej bazy i nie podmienił strony na inną to mieliśmy szczęście. ( Jeśli informacja że token jest nieprawidłowy to znaczy że na ten hak jesteśmy zabezpieczeni, ale niech to nie usypia naszej czujności ;)

Jak temu zaradzić?


Przed sformułowaniem zapytania do bazy sprawdzamy czy zmienna token ma 32 znaki
if (strlen($token) != 32){
            $this->SetError(JText::_('INVALID_TOKEN'));
            return false;
    }
Dodatkowym zabezpieczeniem jest zmiana domyślnej nazwy administratora 'admin' na jakąś, która przez włamującego nam się lamera nie zostanie odkryta. Uniemożliwi tym samym powyższy atak.

Cytaty

- Simplicity is the ultimate sophistication. - Leonardo da Vinci,
- Popularny człowiek wzbudza zawiść potężnych - Thufir Hawat o Leto Atrydzie (na Kaladanie),
- Szczęście następuje po smutku, a smutek po szczęściu; człowiek jest naprawdę wolny, gdy przestaje rozróżniać między smutkiem a szczęściem, między dobrem a złem - Aforyzmy buddyjskie.