Druhý spis ze stejného týdne vypadal jinak. Hosting web nesundal. Majitel hlásil divné chování administrace a podezření, že „tam někdo je“. Firemní web na Elementoru + Polylang, prefix tabulek opme_.
Když jsme otevřeli dump, bylo jasné proč.
Co sedělo v databázi
1. Pět administrátorů, které nikdo neznal
Účty typu wpsvc_…, wp2_…, w2s_…, yun_11 s e-maily na doménách jako wordpress-svc.internal, wp2shell.invalid, shellcode.lol. Vznikly v okně několika dní v červenci. Klasický persistence kit: i když smažete soubory, útočník se přes admina vrátí.
2. Falešný plugin v active_plugins
V aktivních pluginech seděl wp-smtp-20ca6a774792 — ne WP Mail SMTP. Byl to wp2shell REST backdoor: vzdálené řízení přes WordPress REST API, změny v postech a meta, artefakty s ID v řádu milionů.
3. Šum v posts / postmeta
Útok nechal stopy — changesety, oEmbed šum, odkazy na wp2shell a example.invalid. Obsah webu (stránky, překlady, Elementor data) šel oddělit. Artefakty útoku ne.
Proč nestačí „přehrát WordPress“
Majitel měl čisté jádro. Databáze byla špinavá. Když připojíte fresh WP na kontaminovaný dump:
- aktivuje se falešný SMTP plugin (pokud soubor někde zůstal) nebo aspoň zůstane v options
- falešní admini pořád existují
- první přihlášení útočníka je otázka času
Naopak: čistá DB + chybějící šablona/pluginy na disku = bílá stránka. To jsme řešili odděleně — dočasně vypnout pluginy a přepnout na default theme, pak doinstalovat oficiální balíčky.
Sanitace, kterou jsme použili
- Smazat falešné uživatele a jejich
usermeta. - Přepsat
active_pluginsna legitimní seznam (Elementor, Polylang, cache, analytika…). - Smazat post/postmeta artefakty wp2shell.
- Invalidovat všechny
session_tokens. - Ověřit
siteurl/home. - Čerstvé jádro + pluginy z oficiálních zdrojů — žádné soubory z karantény.
- Rotace všech hesel (WP, DB, FTP, panel).
Až potom dává smysl pouštět web ostrý.
Rozdíl oproti „LitSpeed“ incidentu
| | Blog s LitSpeed-Beta | Firemní web s wp2shell | |--|----------------------|-------------------------| | Hlavní škoda | Malware pro návštěvníky + lock hostingu | Skrytí admini + REST backdoor | | Kde to sedělo | Soubory + aktivní plugin | Hlavně databáze | | SEO spam | Ne | Ne | | Obnova | Čisté WP + vyčištěná DB | Sanitace SQL + fresh disk |
Dva různé kity. Stejná chyba na straně oběti: kompromitovaný přístup a žádná 2FA.
Co doporučujeme po každém takovém zásahu
- 2FA na všechny administrátory
- Kontrolovat seznam uživatelů po každém „divném“ týdnu
active_pluginsbrát jako důkaz — ne jako otravný seznam- Zálohu mít mimo stejný účet; špinavou zálohu neobnovovat naslepo
- Po zásahu změnit všechna hesla, ne jen to „hlavní“
Pokud v administraci přibyli uživatelé, které nepoznáváte, nebo v pluginech svítí SMTP / security kit s náhodným hashem v názvu, pište. To už není „možná cache“.