Skip to content
Atac WordPress mu-plugins 2026: detectare, eliminare completă și prevenire

Atac WordPress mu-plugins 2026: detectare, eliminare completă și prevenire

O campanie activă de atac vizează în 2026 mii de site-uri WordPress simultan, folosind o combinație de trei acțiuni: plasarea de fișiere malițioase în directorul mu-plugins, golirea fișierului functions.php al temei active și instalarea forțată a pluginului WP File Manager pentru acces persistent la sistemul de fișiere. Campania a fost documentată inițial de cercetătorii Sucuri în februarie 2025 și continuă să afecteze site-uri neprotejate.

Dacă site-ul dumneavoastră WordPress redirecționează vizitatorii spre site-uri externe, afișează conținut necunoscut sau funcționează neobișnuit, este posibil să fie victima acestui atac. Acest ghid vă explică pas cu pas cum să detectați compromiterea, cum să o eliminați complet și cum să preveniți reinfectarea.

Dacă aveți nevoie de servicii SEO de calitate, există soluții complete pentru creșterea vizibilității online.

Atac WordPress mu-plugins 2026: detectare, eliminare completă și prevenire

Înainte de orice altceva: nu intrați în panică și nu ștergeți fișiere aleatoriu. O curățare precipitată poate șterge date importante sau poate lăsa backdoor-uri active care vor permite reinfectarea în câteva ore. Urmați pașii în ordinea prezentată.

Acest ghid presupune că aveți acces la cPanel sau la terminalul serverului prin SSH. Dacă nu aveți acces la server, contactați furnizorul de hosting și solicitați asistență înainte de a continua.

Cum funcționează atacul: ce face hackerul pe site-ul dumneavoastră

Înțelegerea mecanismului atacului este esențială pentru o curățare completă. Atacatorul urmează o secvență specifică după obținerea accesului inițial.

Pasul 1 al atacatorului: obținerea accesului

Vectorii de acces cel mai frecvent utilizați în această campanie sunt plugin-urile WordPress cu vulnerabilități cunoscute nepatched, credențialele de administrator slabe sau compromise, credențialele FTP/cPanel obținute din breșe anterioare și serverele de hosting cu configurații nesigure.

Pasul 2 al atacatorului: plasarea fișierelor în mu-plugins

Directorul wp-content/mu-plugins conține plugin-uri care se execută automat la fiecare încărcare WordPress, fără să fie activate și fără să apară în lista normală de plugin-uri din dashboard. Atacatorul plasează în acest director trei fișiere malițioase:

  • redirect.php – verifică dacă vizitatorul este bot sau administrator și, dacă nu este, îl redirecționează spre un site extern malițios care afișează un fake browser update prompt. Administratorii și botii (inclusiv Googlebot) văd site-ul normal, ceea ce face atacul dificil de detectat din panoul de administrare.
  • index.php – un webshell care descarcă și execută cod PHP dintr-un repository GitHub controlat de atacator. Codul descărcat se poate schimba oricând fără modificarea fișierului local, permițând atacatorului să injecteze orice payload fără să lase urme noi pe server.
  • custom-js-loader.php – înlocuiește toate imaginile de pe site cu conținut explicit și hijackuiește toate linkurile externe, deschizând popup-uri malițioase. Afectează grav reputația site-ului și SEO.

Pasul 3 al atacatorului: golirea functions.php

Fișierul functions.php al temei active este golit sau codul său este înlocuit cu un backdoor minimal. Aceasta elimină orice cod de securitate customizat și poate rupe funcționalități ale temei, ceea ce poate fi primul semn vizibil al compromiterii.

Pasul 4 al atacatorului: instalarea WP File Manager

WP File Manager este un plugin legitim cu peste 1 milion de instalări active care permite accesul la sistemul de fișiere WordPress direct din browser, fără FTP sau SSH. Atacatorul îl instalează pentru a-și asigura un acces persistent, chiar dacă accesul inițial prin care a intrat este descoperit și blocat. WP File Manager are 11 vulnerabilități documentate în baza de date WPScan, inclusiv un Directory Traversal critic cu scor CVSS 9.9.

Simptomele unui site compromis prin acest atac

  • Vizitatorii raportează redirecționări spre site-uri externe necunoscute, dar dumneavoastră nu vedeți nimic anormal când accesați site-ul ca administrator.
  • Google Search Console afișează avertizări de securitate sau site-ul apare în Google cu descrieri în limbi străine sau cu conținut spam.
  • Pluginul WP File Manager apare în lista de plugin-uri instalate, deși nu l-ați instalat dumneavoastră.
  • Fișierul functions.php al temei active este gol sau mult mai mic decât ar trebui să fie.
  • Consumul de resurse pe server (CPU, memorie) este neobișnuit de ridicat fără o cauză identificabilă.
  • Utilizatorii văd imagini înlocuite cu conținut explicit sau linkurile externe deschid popup-uri nedorite.

Pasul 1: Faceți un backup înainte de orice altceva

Chiar dacă site-ul este compromis, un backup al stării curente este esențial. Veți avea nevoie de el pentru referință în timpul curățării și ca protecție în cazul în care ceva merge greșit în procesul de eliminare.

Creați un backup complet din cPanel (Backup Wizard sau JetBackup) sau prin WP-CLI dacă aveți acces SSH:

cd ~
tar -czf backup-infectat-$(date +%Y%m%d).tar.gz public_html/
wp db export backup-db-$(date +%Y%m%d).sql --path=~/public_html/

Descărcați backup-ul pe calculatorul local. Nu îl stocați doar pe server, deoarece este posibil ca accesul la server să fie compromis ulterior.

Pasul 2: Puneți site-ul în modul mentenanță

Activați un mesaj de mentenanță pentru a opri redirecționarea vizitatorilor spre site-uri malițioase pe durata curățării:

echo '<?php $upgrading = time(); ?>' > ~/public_html/.maintenance

WordPress va afișa automat un mesaj de mentenanță. Alternativ, din cPanel puteți configura o parolă temporară pe directorul public_html.

Pasul 3: Eliminarea fișierelor malițioase din mu-plugins

Acesta este cel mai urgent pas. Verificați directorul mu-plugins și eliminați orice fișier nerecunoscut:

# Listati toate fisierele din mu-plugins
ls -la ~/public_html/wp-content/mu-plugins/

# Vizualizati continutul fiecarui fisier PHP suspect
cat ~/public_html/wp-content/mu-plugins/redirect.php
cat ~/public_html/wp-content/mu-plugins/index.php
cat ~/public_html/wp-content/mu-plugins/custom-js-loader.php

# Stergeti fisierele malitioase confirmate
rm ~/public_html/wp-content/mu-plugins/redirect.php
rm ~/public_html/wp-content/mu-plugins/index.php
rm ~/public_html/wp-content/mu-plugins/custom-js-loader.php

Dacă directorul mu-plugins nu ar trebui să existe pe site-ul dumneavoastră, ștergeți tot conținutul. Dacă aveți mu-plugins legitime, comparați lista cu ce știți că ați instalat și ștergeți doar fișierele necunoscute.

Pasul 4: Dezinstalarea WP File Manager

Dezinstalați complet WP File Manager dacă nu îl utilizați în mod legitim. Dezactivarea nu este suficientă, deoarece fișierele rămân pe server:

wp plugin deactivate wp-file-manager --path=~/public_html/
wp plugin delete wp-file-manager --path=~/public_html/

# Verificare ca a fost sters complet
ls ~/public_html/wp-content/plugins/ | grep file-manager

Pasul 5: Restaurarea fișierului functions.php

Verificați mai întâi starea fișierului functions.php al temei active:

# Verificati dimensiunea
wc -l ~/public_html/wp-content/themes/TEMA-ACTIVA/functions.php

# Vizualizati primele linii
head -50 ~/public_html/wp-content/themes/TEMA-ACTIVA/functions.php

Dacă fișierul este gol sau conține doar câteva linii suspecte, restaurați-l din backup sau reinstalați tema:

# Reinstalati tema din WordPress.org (inlocuieste toate fisierele cu versiunea curata)
wp theme install SLUG-TEMA --force --path=~/public_html/

Pasul 6: Verificarea și curățarea directorului uploads

Atacatorii plasează frecvent fișiere PHP în directorul uploads. WordPress nu plasează niciodată fișiere PHP acolo în mod normal:

# Gasiti toate fisierele PHP din uploads
find ~/public_html/wp-content/uploads -name "*.php" -type f

# Stergeti toate fisierele PHP din uploads (verificati mai intai lista!)
find ~/public_html/wp-content/uploads -name "*.php" -type f -delete

Pasul 7: Căutarea backdoor-urilor ascunse

Atacatorul poate fi plantat backdoor-uri și în alte fișiere ale site-ului:

# Cauta functii suspecte folosite frecvent in malware
grep -r --include="*.php" -l "eval(base64_decode" ~/public_html/ 2>/dev/null

# Cauta indicatori specifici acestei campanii
grep -r --include="*.php" -l "updatesnow\|BypassBest\|starkvps" ~/public_html/ 2>/dev/null

# Cauta fisiere PHP modificate recent (ultimele 30 de zile)
find ~/public_html/ -name "*.php" -mtime -30 -not -path "*/cache/*" -type f

Investigați fiecare fișier identificat. Dacă găsiți cod obfuscat cu base64_decode sau eval() în fișiere care nu ar trebui să îl conțină, este un backdoor. Restaurați fișierul din backup sau din sursa oficială.

Pasul 8: Verificarea integrității WordPress core

# Verifica integritatea fisierelor core WordPress
wp core verify-checksums --path=~/public_html/

# Daca gaseste fisiere modificate, reinstalati core-ul
wp core download --force --skip-content --path=~/public_html/

# Verifica integritatea plugin-urilor din WordPress.org
wp plugin verify-checksums --all --path=~/public_html/

Comanda verify-checksums compară fișierele de pe server cu versiunile oficiale din WordPress.org și raportează orice diferență. Fișierele adăugate în directoarele core sau modificate față de versiunea oficială sunt semne clare de compromitere.

Pasul 9: Verificarea bazei de date

Malware-ul poate injecta cod și în baza de date WordPress. Verificați opțiunile și conținutul postărilor prin phpMyAdmin sau WP-CLI:

# Verifica URL-urile de baza ale site-ului
wp option get siteurl --path=~/public_html/
wp option get home --path=~/public_html/

Dacă valorile returnate conțin URL-uri necunoscute sau cod JavaScript, baza de date este compromisă. Restaurați din backup sau curățați manual intrările afectate prin phpMyAdmin, căutând în tabela wp_options valori care conțin eval(, base64_decode sau redirect spre domenii necunoscute.

Pasul 10: Verificarea utilizatorilor administratori

Atacatorul creează frecvent conturi de administrator ascunse pentru acces persistent:

# Listeaza toti utilizatorii administrator, ordonati dupa data crearii
wp user list --role=administrator     --fields=ID,user_login,user_email,user_registered     --orderby=user_registered --order=DESC     --path=~/public_html/

# Stergeti contul suspect
wp user delete ID_SUSPECT --reassign=ID_ADMIN_LEGITIM --path=~/public_html/

Pasul 11: Schimbarea tuturor credențialelor

Toate credențialele care ar fi putut fi expuse trebuie schimbate. Aceasta este o etapă obligatorie:

# Regenerati cheile de securitate WordPress
wp config shuffle-salts --path=~/public_html/

# Resetati parola tuturor administratorilor
wp user reset-password     $(wp user list --role=administrator --field=ID --path=~/public_html/)     --path=~/public_html/

Schimbați și parola cPanel, FTP și MySQL. Dacă aceleași credențiale sunt folosite pe alte site-uri, schimbați-le și acolo.

Pasul 12: Actualizarea tuturor componentelor

wp core update --path=~/public_html/
wp plugin update --all --path=~/public_html/
wp theme update --all --path=~/public_html/

Dezinstalați complet plugin-urile inactive și cele pe care nu le folosiți. Identificați plugin-ul prin care atacatorul a obținut accesul inițial și dezinstalați-l dacă nu mai este necesar sau actualizați-l dacă există patch.

Pasul 13: Hardening post-curățare

Protejarea directorului mu-plugins

Dacă nu folosiți must-use plugins în mod legitim, blocați execuția PHP în acest director. Adăugați în wp-content/.htaccess:

<FilesMatch "\.php$">
    Order Deny,Allow
    Deny from all
</FilesMatch>

Alternativ, setați permisiunile directorului la read-only dacă serverul permite:

chmod 555 ~/public_html/wp-content/mu-plugins/

Blocarea execuției PHP în uploads

Adăugați în wp-content/uploads/.htaccess:

<Files "*.php">
    Order Deny,Allow
    Deny from all
</Files>

Dezactivarea XML-RPC

<Files xmlrpc.php>
    Order Deny,Allow
    Deny from all
</Files>

Script de monitorizare automată

Configurați monitorizarea zilnică a directorului mu-plugins. Salvați scriptul următor ca ~/monitor-wp.sh:

#!/bin/bash
WP_PATH=~/public_html
EMAIL=admin@site-vostru.ro

NEW_MU=$(find $WP_PATH/wp-content/mu-plugins -name "*.php"     -newer $WP_PATH/wp-config.php -type f 2>/dev/null)

if [ -n "$NEW_MU" ]; then
    echo "ALERTA: Fisiere PHP noi in mu-plugins: $NEW_MU"         | mail -s "Alerta securitate WordPress" $EMAIL
fi

CHECKSUM=$(wp core verify-checksums --path=$WP_PATH 2>&1     | grep -E "CHECKSUM_MISMATCH|FILE_ADDED")

if [ -n "$CHECKSUM" ]; then
    echo "ALERTA: $CHECKSUM"         | mail -s "Alerta integritate WordPress" $EMAIL
fi

Adăugați în crontab pentru rulare zilnică:

crontab -e
# Adaugati:
0 6 * * * /bin/bash ~/monitor-wp.sh

Pasul 14: Verificarea finală și redeschiderea site-ului

# Stergeti fisierul de mentenanta
rm ~/public_html/.maintenance

# Verificare finala
wp core verify-checksums --path=~/public_html/
wp plugin verify-checksums --all --path=~/public_html/
ls -la ~/public_html/wp-content/mu-plugins/
wp plugin list --path=~/public_html/ | grep file-manager

Accesați site-ul dintr-un browser în care nu sunteți autentificat ca administrator, pentru a verifica că redirecționările nu mai sunt active pentru vizitatorii obișnuiți. Testați din mai multe dispozitive dacă este posibil.

Solicitarea revizuirii Google după curățare

Dacă site-ul a fost marcat de Google ca periculos, solicitați o revizuire după curățare:

  1. Accesați Google Search Console pentru site-ul dumneavoastră.
  2. Navigați la Security Issues în meniul din stânga.
  3. Verificați că problemele identificate de Google nu mai sunt prezente pe site.
  4. Faceți clic pe Request Review și descrieți pe scurt acțiunile de curățare efectuate.

Google procesează de obicei cererile de revizuire în 1-3 zile lucrătoare pentru site-urile cu probleme de securitate confirmate.

Cum să preveniți reinfectarea

  • Actualizați constant – configurați actualizări automate pentru WordPress core și plugin-urile de securitate. Verificați săptămânal actualizările disponibile pentru plugin-urile care nu se actualizează automat.
  • Autentificare cu doi factori – activați 2FA pentru toate conturile de administrator. Un atacator cu parola corectă nu poate intra fără dispozitivul 2FA.
  • Parolă puternică și unică – folosiți un manager de parole pentru a genera parole de minimum 20 de caractere, diferite pentru fiecare serviciu.
  • Monitorizarea integrității fișierelor – instalați Wordfence sau configurați scriptul de monitorizare de mai sus pentru a primi alerte imediate la modificări ale fișierelor critice.
  • Backup-uri zilnice offsite – backup-urile stocate doar pe server pot fi compromise împreună cu site-ul. Folosiți un serviciu extern.
  • Limitați numărul de plugin-uri – dezinstalați complet plugin-urile inactive sau neutilizate. Fiecare plugin este o potențială suprafață de atac.
  • WAF activ – un Web Application Firewall (Cloudflare, Wordfence, ModSecurity) poate bloca tentativele de exploatare înainte să ajungă la WordPress.

Concluzie

Campania de atac prin mu-plugins este periculoasă tocmai pentru că exploatează caracteristici legitime WordPress: directorul must-use plugins pentru persistență, fișierul functions.php pentru eliminarea apărărilor și WP File Manager pentru acces persistent. Redirecționarea este invizibilă administratorilor autentificați, ceea ce permite atacului să rămână nedetectat zile sau săptămâni.

Dacă ați urmat toți pașii din acest ghid, site-ul dumneavoastră ar trebui să fie curat și mai bine protejat decât înainte. Dacă problemele persistă sau dacă nu vă simțiți confortabil cu oricare dintre pașii tehnici, serviciile noastre de curățare malware WordPress vă stau la dispoziție pentru o remediere profesională și completă.

Despre autor

Dorel Tănase este specialist în optimizarea site-urilor pentru motoarele de căutare. Lucrează în online din 1997 și în SEO din 2007, iar activitatea se desfășoară prin GO SEO MARKETING S.R.L. din Alba Iulia. Se ocupă de audit tehnic, arhitectura site-urilor, conținut și construirea legăturilor.

Sus