Zpět na portfolio
Bezpečnost webů Joomla

Aktivní webshell s úplnou kontrolou nad webem

Anonymizovaný případ kritické kompromitace Joomla webu, při které samotné mazání souborů nestačilo.

Zdravotnický web na Joomle. Klient přišel s tím, že se web chová „divně“ — a přinesl zálohu s prosbou, ať ji nasadíme zpět. Místo toho jsme zálohu nejdřív prověřili offline. Ukázalo se, že právě to rozhodlo o celém průběhu obnovy.

Co jsme našli

V záloze byly dva rozsáhlé PHP webshelly ze známé rodiny administračních shellů, samostatný backdoor umožňující upload souborů a spouštění systémových příkazů, a upravená pravidla v adresářích, které měly obsahovat pouze statické soubory. Bezpečnostní inventář navíc evidoval desítky historických payloadů v náhodně pojmenovaných podadresářích jednoho z rozšíření.

Zajímavé bylo, co jsme nenašli: samotné jádro Joomly bylo obsahově v pořádku a rozšíření byla relativně aktuální. To je situace, ve které běžný sken snadno vyhodnotí web jako „skoro čistý“. Na závažnosti nálezu to ale nic nemění — nalezené soubory dohromady umožňovaly správu souborů, upload, mazání, změnu oprávnění, spouštění příkazů a přístup ke konfiguraci i databázi.

Jak jsme postupovali

Původní zálohu jsme ponechali jako neměnný důkazní zdroj a pracovali jsme na oddělené kopii. Podezřelé PHP soubory a upravená pravidla jsme izolovali, nikoli rovnou smazali — u aktivního shellu je pořadí kroků důležitější než rychlost.

Obnovu jsme postavili jako čistý rebuild z ověřených distribučních balíčků, nikoli jako mazání jednotlivých nálezů. Rozšíření jsme přeinstalovali místo toho, abychom se spoléhali na to, že jsou nedotčená. Následovala kontrola databáze, administrátorských účtů, oprávnění a konfiguračních tajemství, rotace všech přístupů a závěrečné porovnání čisté kopie s produkčním stavem.

Výsledek

Zálohu jsme označili za nevhodnou k přímému nasazení. Doporučená obnova vedla přes čistý rebuild — kdyby se místo toho nasadila původní záloha, web by se vrátil do provozu i s kompletní sadou nástrojů útočníka.

Co si z toho odnést

Aktuální jádro neznamená čistý web. U aktivního shellu je správný předpoklad, že mohl být kompromitován celý webroot, účty i uložená tajemství — a obnova tomu musí odpovídat. Antivirový sken ani smazání jednoho nalezeného souboru není v takové situaci dokončené odvirování.