Przejdź do głównej treści
Anatomia ataku web shell

Popularny edytor JCE w Joomla zaatakowany. Sprawdź, czy Twoja strona nie ma webshella


Jeżeli Twoja strona Joomla korzysta z edytora JCE, potraktuj ten temat jako pilny. W czerwcu 2026 roku opisano aktywnie wykorzystywany atak na JCE, w którym napastnik może dodać fałszywy profil edytora, dopuścić upload plików PHP i zostawić na serwerze webshell. Problem jest szczególnie groźny, bo kluczowa luka CVE-2026-48907 dotyczyła nieautoryzowanego importu profilu edytora, czyli scenariusza bez logowania do panelu.

Najważniejsza rekomendacja jest prosta: sprawdź wersję JCE na wszystkich stronach Joomla i zaktualizuj JCE do wersji 2.9.99.6 lub nowszej. Sama aktualizacja zamyka wejście, ale nie usuwa plików, które mogły zostać wcześniej wgrane. Jeśli strona była już zaatakowana, potrzebne jest czyszczenie, analiza plików, kontrola logów, zmiana haseł i dodatkowy audyt.

Joomla Guru zajmuje się zarówno czyszczeniem zainfekowanych stron Joomla, jak i opieką techniczną, która ma zapobiegać takim wypadkom: aktualizacjami, kopiami zapasowymi, monitoringiem, kontrolą rozszerzeń i reakcją na alerty bezpieczeństwa.

Co się stało z JCE?

JCE, czyli Joomla Content Editor, to jedno z najpopularniejszych rozszerzeń instalowanych na stronach Joomla. Jest wygodne, rozbudowane i przez lata stało się standardem w wielu serwisach. Właśnie dlatego podatność w tak popularnym edytorze ma duże znaczenie: jeden błąd może dotknąć ogromnej liczby stron, także tych, które na pierwszy rzut oka wyglądają na zadbane.

Według analizy mySites.guru oraz komunikatu autora JCE, problem polegał na tym, że wcześniejsze wersje JCE pozwalały na import profilu edytora bez właściwej kontroli dostępu. Profil edytora w JCE nie jest tylko kosmetycznym ustawieniem paska narzędzi. Określa również, jakie typy plików mogą być wgrywane i do jakich katalogów użytkownik może mieć dostęp.

Jeżeli atakujący może wgrać własny profil, może przygotować go tak, aby dopuszczał upload niebezpiecznych plików, na przykład PHP lub PHTML. Następnie taki profil może zostać wykorzystany do umieszczenia na serwerze webshella, czyli małego skryptu dającego napastnikowi zdalną kontrolę nad plikami lub poleceniami wykonywanymi na serwerze.

Dlaczego CVE-2026-48907 jest tak groźne?

Luka CVE-2026-48907 została załatana w JCE 2.9.99.5, wydanym 3 czerwca 2026 roku. Była groźniejsza niż wcześniejsze poprawki, ponieważ nie wymagała zalogowanego konta. To oznacza, że argument "u nas nie ma publicznej rejestracji" nie wystarcza. Jeżeli podatny JCE był dostępny w publicznej stronie Joomla, automatyczny skaner mógł próbować wykorzystać lukę.

8 czerwca 2026 roku pojawiła się wersja JCE 2.9.99.6. To wydanie nie było tylko kosmetyczną poprawką. Zostało opisane jako dodatkowe utwardzenie po audycie bezpieczeństwa: ograniczenie punktów wejścia i wzmocnienie walidacji danych. Dlatego praktyczna rekomendacja brzmi: nie zatrzymuj się na 2.9.99.5, tylko aktualizuj bezpośrednio do 2.9.99.6 albo nowszej wersji.

Sytuację pogorszyło opublikowanie działającego kodu exploita. Od tego momentu problem przestał być wyłącznie ryzykiem teoretycznym albo domeną wąskiej grupy atakujących. Gdy exploit jest publiczny, rośnie liczba automatycznych prób wykorzystania podatności na stronach, które nie zostały zaktualizowane.

Jak wygląda atak na fałszywe profile JCE?

Mechanizm ataku można opisać w kilku krokach:

  1. Atakujący wysyła żądanie do podatnego endpointu JCE odpowiedzialnego za import profilu edytora.
  2. Na stronie pojawia się nowy, nieautoryzowany profil edytora.
  3. Profil jest ustawiony tak, aby dopuszczał upload plików skryptowych, na przykład PHP lub PHTML.
  4. Atakujący używa takiego profilu do wgrania webshella lub innych plików pomocniczych.
  5. Na serwerze zostają ślady: podejrzane profile JCE, pliki PHP w katalogach na media, ukryte pliki, znaczniki infekcji albo zaciemniony kod PHP.

W analizach wskazywano między innymi na profile o losowo wyglądających nazwach, profile typu "Pwned" z opisem sugerującym RCE, bardzo niską wartość sortowania wymuszającą pierwszeństwo profilu oraz listę dozwolonych rozszerzeń zawierającą PHP lub PHTML. Samo ustawienie allow_php nie musi jeszcze oznaczać infekcji. Kluczowe jest to, czy profil pozwala wgrywać pliki wykonywalne przez przeglądarkę plików JCE.

Jak sprawdzić, czy strona Joomla mogła zostać zaatakowana?

Najpierw sprawdź wersję JCE. Jeżeli strona działa na JCE starszym niż 2.9.99.5, trzeba potraktować ją jako podatną. Jeżeli jest starsza niż 2.9.99.6, nadal warto zaktualizować ją do wydania utwardzonego po audycie.

Następnie sprawdź profile edytora w panelu Joomla: Components -> JCE Editor -> Editor Profiles. Szukaj profili, których nie tworzył administrator, dziwnych nazw, profili ustawionych na samej górze listy, profili przypisanych zbyt szeroko oraz konfiguracji, która pozwala wgrywać pliki PHP, PHTML albo inne skrypty.

Drugi obszar to pliki na serwerze. Szczególnie podejrzane są pliki PHP w katalogach, które normalnie powinny przechowywać obrazy, multimedia, tymczasowe pliki lub zasoby statyczne. Warto sprawdzić między innymi katalogi images, media, tmp, media/system/js oraz nietypowe pliki w strukturze bibliotek. Podejrzenie powinny wzbudzić również nazwy udające XML, pliki typu .xml.php, zaciemnione fragmenty z eval, base64_decode, gzinflate albo proste panele wykonujące komendy systemowe.

Trzeci element to logi serwera. Autor JCE wskazuje, że wiarygodnym potwierdzeniem są żądania do index.php?option=com_jce&task=profiles.import. W logach mogą też pojawić się późniejsze żądania związane z uploadem przez plugin JCE. Warto działać szybko, bo wiele hostingów przechowuje logi tylko przez ograniczony czas.

Aktualizacja nie wystarczy, jeśli strona była już zainfekowana

To bardzo ważne: aktualizacja JCE zamyka podatność, ale nie sprząta po atakującym. Jeżeli webshell został już wgrany, po aktualizacji nadal może leżeć na serwerze. Dlatego czyszczenie powinno obejmować co najmniej:

  • wykonanie kopii strony i podejrzanych plików przed usuwaniem,
  • aktualizację JCE do wersji 2.9.99.6 lub nowszej,
  • usunięcie fałszywych profili JCE,
  • usunięcie webshelli, importerów profili i plików pomocniczych,
  • skan plików strony i katalogów poza publicznym web rootem,
  • sprawdzenie kont administratorów i uprawnień użytkowników,
  • zmianę haseł do Joomla, hostingu, FTP/SFTP, bazy danych i poczty technicznej,
  • sprawdzenie konfiguracji serwera, plików .htaccess, zadań CRON i wpisów w bazie danych,
  • kontrolę logów, aby ustalić przybliżony moment włamania.

Usunięcie samego pliku z webshell'em bez aktualizacji JCE jest tylko chwilową poprawą. Jeżeli wejście pozostanie otwarte, automatyczny atak może wrócić. Z drugiej strony sama aktualizacja bez czyszczenia również jest niepełna, bo pozostawiony webshell może nadal umożliwiać dostęp do strony.

JCE włamanie profile

Przykładowe włamanie z profilami.

Co zrobić, jeśli strona działa na starej Joomla albo starym PHP?

JCE 2.9.99.6 wymaga Joomla 3.10 lub nowszej oraz PHP 7.4 lub nowszego. Dla stron, które naprawdę nie mogą od razu przejść na tę wersję, autor JCE przygotował bezpłatny pakiet łatający podatność w gałęziach JCE 2.7.x, 2.8.x i 2.9.x. To jednak rozwiązanie awaryjne, a nie docelowe.

Jeżeli strona nadal działa na starym Joomla, przestarzałym PHP albo nieaktualnych rozszerzeniach, problem JCE jest tylko jednym z ryzyk. Taka strona wymaga planu technicznego: kopii, środowiska testowego, aktualizacji rozszerzeń, migracji Joomla, sprawdzenia szablonu i dopiero potem bezpiecznego wdrożenia zmian na produkcji.

Dlaczego opieka techniczna jest tańsza niż gaszenie pożaru?

Ataki na JCE pokazują coś, co w administracji Joomla powtarza się od lat: największym problemem nie jest sama luka, tylko czas między publikacją poprawki a jej wdrożeniem. Automatyczne boty nie sprawdzają, czy strona należy do małej firmy, fundacji, sklepu czy instytucji. Sprawdzają, czy da się wykorzystać podatność.

Stała opieka techniczna zmienia sytuację. Zamiast reagować dopiero wtedy, gdy strona pokazuje błędy, przekierowuje użytkowników albo trafia na blacklistę, administrator regularnie sprawdza aktualizacje, wykonuje kopie zapasowe, monitoruje dostępność, kontroluje rozszerzenia i reaguje na komunikaty bezpieczeństwa. To nie daje magicznej odporności na wszystko, ale znacząco skraca czas ekspozycji.

W Joomla Guru pomagamy w dwóch scenariuszach. Pierwszy to czyszczenie strony po włamaniu: diagnoza, usunięcie infekcji, aktualizacje, kontrola użytkowników, haseł, plików i logów. Drugi to opieka techniczna Joomla, czyli regularne działania, które mają zmniejszyć ryzyko podobnych incydentów w przyszłości.

Praktyczna lista działań dla właściciela strony

  • Sprawdź, czy na stronie jest zainstalowany JCE.
  • Sprawdź wersję JCE na każdej stronie, którą administrujesz.
  • Jeżeli JCE jest starszy niż 2.9.99.6, zaplanuj natychmiastową aktualizację.
  • Jeżeli JCE był starszy niż 2.9.99.5 po 3 czerwca 2026 roku, sprawdź stronę pod kątem fałszywych profili i webshelli.
  • Przejrzyj profile JCE i usuń tylko te, które faktycznie są nieautoryzowane.
  • Przeskanuj pliki w katalogach images, media i tmp.
  • Sprawdź logi serwera pod kątem żądań do profiles.import.
  • Zmień hasła po potwierdzonej infekcji.
  • Nie odkładaj migracji starej Joomla i starego PHP, jeśli blokują aktualizacje bezpieczeństwa.

Źródła i dalsza lektura

FAQ

Czy każda strona Joomla z JCE jest zagrożona?

Zagrożone były strony z JCE w wersjach starszych niż 2.9.99.5, ponieważ luka CVE-2026-48907 pozwalała na nieautoryzowany import profilu edytora. Praktycznie warto aktualizować do 2.9.99.6 lub nowszej, bo 2.9.99.6 jest dodatkowym wydaniem utwardzającym po audycie.

Czy wystarczy zaktualizować JCE?

Aktualizacja jest konieczna, ale nie zawsze wystarczy. Jeżeli strona została zaatakowana przed aktualizacją, na serwerze mogą nadal znajdować się fałszywe profile, webshell'e lub inne pliki. Wtedy potrzebne jest czyszczenie i pełna kontrola bezpieczeństwa.

Jak rozpoznać fałszywy profil JCE?

Podejrzane są profile, których administrator nie tworzył, mają dziwne lub automatycznie wygenerowane nazwy, bardzo wysokie pierwszeństwo na liście, nietypowe przypisanie do grup użytkowników albo pozwalają na wgrywanie plików PHP, PHTML lub podobnych skryptów.

Czy problem dotyczy WordPressa?

Nie. JCE jest rozszerzeniem dla Joomla. WordPress nie korzysta z tego samego mechanizmu profili JCE. Jeżeli jednak firma ma kilka systemów CMS, warto przy okazji sprawdzić również aktualizacje i stan bezpieczeństwa pozostałych stron.

Co zrobić, jeśli moja strona działa na starej Joomla i nie mogę zaktualizować JCE?

Autor JCE udostępnił awaryjną łatkę dla wybranych starszych gałęzi JCE, ale to rozwiązanie tymczasowe. Docelowo strona powinna zostać przeniesiona na wspieraną wersję Joomla i PHP, aby można było instalować bieżące aktualizacje bezpieczeństwa.

Czy Joomla Guru może pomóc w usunięciu infekcji?

Tak. Joomla Guru zajmuje się czyszczeniem zainfekowanych stron Joomla: analizą plików, usuwaniem webshelli, aktualizacją rozszerzeń, kontrolą kont, haseł, logów i konfiguracji. Po czyszczeniu można też wdrożyć opiekę techniczną, aby zmniejszyć ryzyko podobnych problemów w przyszłości.

Na czym polega opieka techniczna Joomla?

Opieka techniczna Joomla obejmuje regularne aktualizacje Joomla i rozszerzeń, kopie zapasowe, monitoring działania strony, kontrolę bezpieczeństwa, reagowanie na alerty oraz planowanie migracji, gdy starsza wersja systemu lub PHP przestaje być bezpieczna.

FAQ


Na czym polega opieka techniczna Joomla?

Opieka techniczna Joomla obejmuje regularne aktualizacje Joomla i rozszerzeń, kopie zapasowe, monitoring działania strony, kontrolę bezpieczeństwa, reagowanie na alerty oraz planowanie migracji, gdy starsza wersja systemu lub PHP przestaje być bezpieczna.

Czy problem dotyczy WordPressa?

Nie. JCE jest rozszerzeniem dla Joomla. WordPress nie korzysta z tego samego mechanizmu profili JCE. Jeżeli jednak firma ma kilka systemów CMS, warto przy okazji sprawdzić również aktualizacje i stan bezpieczeństwa pozostałych stron.

Co zrobić, jeśli moja strona działa na starej Joomla i nie mogę zaktualizować JCE?

Autor JCE udostępnił awaryjną łatkę dla wybranych starszych gałęzi JCE, ale to rozwiązanie tymczasowe. Docelowo strona powinna zostać przeniesiona na wspieraną wersję Joomla i PHP, aby można było instalować bieżące aktualizacje bezpieczeństwa.

Czy wystarczy zaktualizować JCE?

Aktualizacja jest konieczna, ale nie zawsze wystarczy. Jeżeli strona została zaatakowana przed aktualizacją, na serwerze mogą nadal znajdować się fałszywe profile, webshell'e lub inne pliki. Wtedy potrzebne jest czyszczenie i pełna kontrola bezpieczeństwa.

Jak rozpoznać fałszywy profil JCE?

Podejrzane są profile, których administrator nie tworzył, mają dziwne lub automatycznie wygenerowane nazwy, bardzo wysokie pierwszeństwo na liście, nietypowe przypisanie do grup użytkowników albo pozwalają na wgrywanie plików PHP, PHTML lub podobnych skryptów.

Czy każda strona Joomla z JCE jest zagrożona?

Zagrożone były strony z JCE w wersjach starszych niż 2.9.99.5, ponieważ luka CVE-2026-48907 pozwalała na nieautoryzowany import profilu edytora. Praktycznie warto aktualizować do 2.9.99.6 lub nowszej, bo 2.9.99.6 jest dodatkowym wydaniem utwardzającym po audycie.

Czy Joomla Guru może pomóc w usunięciu infekcji?

Tak. Joomla Guru zajmuje się czyszczeniem zainfekowanych stron Joomla: analizą plików, usuwaniem webshelli, aktualizacją rozszerzeń, kontrolą kont, haseł, logów i konfiguracji. Po czyszczeniu można też wdrożyć opiekę techniczną, aby zmniejszyć ryzyko podobnych problemów w przyszłości.

Aktualizacja: 18.06.2026 | 15:23
Zapisz się do newslettera