668 145 480 info@jacekjagusiak.pl

Dziś chciałbym opisać przypadek, który już kilka razy wracał – chodzi o infekcje stron opartych na Joomla. I od razu uprzedzam: nie ma znaczenia, z jakiej wersji korzystacie – nawet najnowsza nie pomoże, jeśli na stronie macie zainstalowany komponent B2J Contact w wersji poniżej 2.1.13. Jeśli tak właśnie jest, to… no cóż, jesteście w niezłych tarapatach – chociaż możecie jeszcze o tym nie wiedzieć.

To co? Sprawdźcie, jaką wersję macie. Już?

Dla tych, którzy nie kojarzą – B2J Contact to popularny komponent do tworzenia formularzy kontaktowych w Joomla. I nie powiem – jest całkiem przyzwoity. Nadal można go znaleźć w oficjalnym repozytorium, a jego licencja kosztuje 29 dolarów. Problem w tym, że aktualizacje są dostępne tylko przez rok od zakupu. Więc jeśli kupiliście go dawno temu, a wersja, którą macie, to coś poniżej 2.1.13 – to prawdopodobnie aktualizacji już nie dostajecie. A to niedobrze.

Dlaczego? Już tłumaczę.

W B2J Contact wykryto poważną lukę bezpieczeństwa, która umożliwia wrzucenie na serwer pliku z rozszerzeniem np. JPG lub PNG (czyli coś niewzbudzającego podejrzeń), a potem – po zmianie jego nazwy i rozszerzenia – przekształcenie go w plik wykonywalny. Dalej już z górki: taki plik może nadpisywać inne, otwierać furtki dla kolejnych szkodników, aż w końcu robi się na stronie totalny bałagan.

Szczególnie warto przyjrzeć się plikowi b2juploader.php w folderze helpers komponentu. W środku znajdziecie m.in. taki kod:

protected function DoUpload()
{
    ...
    $file = JRequest::getVar('b2jstdupload', NULL, 'files', 'array');
    ...
    $upload_directory = JPATH_SITE . "/components/" . $GLOBALS["com_name"] . "/uploads/";
    ...
    $filename = JFile::makeSafe($file['name']);
    $filename = uniqid() . "-" . $filename;
    $dest = $upload_directory . $filename;

Co ciekawe – wcale nie trzeba mieć w formularzu aktywnej opcji uploadu plików. Ten kod sam z siebie umożliwia wrzucenie pliku o przewidywalnej nazwie i lokalizacji (np. JPG lub PNG), a potem – przy odrobinie sprytu – zmianę jego rozszerzenia na coś groźniejszego.

Sprawdź także:  Trzy popularne wtyczki do Wordpressa ze złośliwym kodem - usuń je natychmiast!

Co zrobić? Jeśli korzystacie z wersji starszej niż 2.1.13 – jak najszybciej zaktualizujcie komponent do najnowszej wersji, w której luka została już załatana. A jeśli nie chcecie płacić prawie 30 dolarów – zawsze możecie B2J Contact odinstalować i zastąpić go innym, bezpiecznym rozwiązaniem. Ale zanim to zrobicie, koniecznie przeskanujcie pliki strony – bo może już ktoś zdążył się dobrać do Waszej Joomli i napsuć Wam humor.