Case study
Ratowanie i migracja zainfekowanego serwisu Joomla 3 do Joomla 6
Oczyściliśmy rozbudowany serwis jednostki publicznej z ponad 150 złośliwych skryptów, przeprowadziliśmy bezpieczną migrację przez kolejne generacje Joomla i zachowaliśmy blisko 900 artykułów, menu, moduły oraz dotychczasowy wygląd.
Podsumowanie
Zainfekowany i niewspierany serwis Joomla 3 został oczyszczony, zabezpieczony i etapowo przeniesiony do Joomla 6. Projekt objął także modernizację PHP i MySQL, odtworzenie wyglądu na aktualnym szablonie, zastąpienie niewspieranych rozszerzeń oraz poprawę dostępności bez utraty rozbudowanej bazy treści.
Sytuacja wyjściowa
Serwis jednostki publicznej działał na Joomla 3, która nie otrzymywała już poprawek bezpieczeństwa, oraz na starszych wersjach PHP i MySQL. W instalacji znajdowało się ponad 150 ukrytych skryptów i furtek po włamaniu. Dotychczasowy szablon i część rozszerzeń nie miały wersji zgodnych z aktualną generacją systemu.
Problem biznesowy
Strona publikowała dużą liczbę ważnych informacji i musiała zachować ciągłość treści, menu, modułów oraz powiązań między artykułami. Jednocześnie dalsze działanie na niewspieranej platformie zwiększało ryzyko kolejnego incydentu i uniemożliwiało bezpieczne korzystanie z aktualnego środowiska serwerowego.
Ryzyka
Projekt wymagał usunięcia trwałych mechanizmów dostępu pozostawionych po włamaniu, zachowania blisko 900 artykułów i blisko 100 pozycji menu oraz zastąpienia trzech niewspieranych rozszerzeń używanych łącznie w ponad 10 tys. miejsc. Dodatkowym ryzykiem była osobna, starsza aplikacja informacyjna, której nie można było zmodernizować w ramach aktualizacji głównego serwisu.
Zakres odpowiedzialności
Odpowiadaliśmy za kopie bezpieczeństwa, analizę i oczyszczenie instalacji, zamknięcie wektora ataku, etapową migrację Joomla, aktualizację PHP i MySQL, rozszerzenia i pakiet językowy, rekonstrukcję szablonu, własne zamienniki wycofanych modułów, poprawki dostępności, migrację środowiska oraz testy całej witryny.
Rozwiązanie
Usunęliśmy złośliwe skrypty i furtki, zabezpieczyliśmy mechanizm wykorzystany przy włamaniu oraz zablokowaliśmy wykonywanie kodu w katalogach przeznaczonych na pliki użytkowników. Joomla została zaktualizowana kolejno przez wersje 4 i 5 do wersji 6, a środowisko przeniesiono do PHP 8.3 i MySQL 8. Dotychczasowy wygląd odtworzyliśmy na wspieranym szablonie. Trzy niewspierane rozszerzenia zastąpiliśmy własnymi rozwiązaniami zachowującymi prezentację galerii, belki informacyjnej i kafelków. Dodaliśmy także usprawnienia dostępności: logiczny nagłówek strony, odnośnik do treści, opisy elementów dla czytników, poprawiony kontrast i opisy zdjęć.
Architektura i integracje
Docelowe środowisko opiera się na Joomla 6, PHP 8.3, MySQL 8 i Apache. Serwis wykorzystuje aktualny szablon oraz własne, utrzymywalne zamienniki wycofanych rozszerzeń. Mechanizmy plików i mediów mają ograniczone uprawnienia wykonawcze, a administratorzy otrzymują automatyczne powiadomienia o aktualizacjach. Osobna starsza aplikacja informacyjna została zabezpieczona w dostępnym zakresie i wskazana do odrębnej wymiany.
Rezultaty
Wszystkie sprawdzone pozycje menu, blisko 900 opublikowanych artykułów, moduły i galerie pozostały dostępne. Panel administracyjny, widok komputerowy i mobilny działają prawidłowo, a sprzątanie nieużywanych rozszerzeń nie zmieniło zachowania serwisu. Końcowy ponowny przegląd instalacji nie wykazał pozostałości złośliwego oprogramowania, a witryna korzysta obecnie ze wspieranej wersji Joomla.
Technologie
Joomla 3, 4, 5 i 6, PHP 7.4 i 8.3, MySQL 5.7 i 8, Apache, własne rozszerzenia Joomla, audyt malware, hardening plików, dostępność cyfrowa i testy responsywne.
Dalsze kroki
Zarekomendowaliśmy zmianę wszystkich haseł administracyjnych, monitoring serwisu po incydencie, bieżące instalowanie aktualizacji oraz zaplanowanie wymiany osobnej niewspieranej aplikacji informacyjnej. Warto także uporządkować niepublikowaną pozycję menu i zaplanować modernizację pozostałych starszych baz danych na koncie hostingowym.
