WordPress 7.1.1 a adus o remediere critică pentru vulnerabilitatea denumită „Click2Shell”, un defect de securitate care permitea atacatorilor să instaleze și să previzualizeze automat teme maleabile, deschizând calea către execuție de cod la distanță (RCE). Descoperită de echipa de securitate pwn.ai și recompensată cu 300 de dolari prin programul de bug bounty al WordPress, această vulnerabilitate afectează toate versiunile începând cu 4.7 — acoperind aproape opt ani de lansări. Pentru furnizorii de hosting gestionat, administratori de servere dedicate și echipe DevOps care întrețin instanțe WordPress la scară largă, înțelegerea vectorului de atac și aplicarea patch-urilor retroactive reprezintă o prioritate operațională imediată.
Mecanismul de Exploatare: Cum Funcționează Click2Shell
Vulnerabilitatea se bazează pe o validare insuficientă în fluxul de instalare și previzualizare a temelor din directorul oficial WordPress.org. Un atacator autentificat cu privilegiile de a instala teme (de obicei roluri de Administrator sau Editor) poate submite o cerere manipulată care forțează WordPress să descarce, instaleze și activeze o temă malicioasă gazduită pe un server controlat de atacator. Componenta critică constă în faptul că previzualizarea temei („Live Preview”) execută codul PHP al temei în contextul site-ului vizat, înainte ca administratorul să o activeze explicit.
În practică, lanțul de atac arată astfel: atacatorul creează o temă care conține un webshell sau cod PHP malicios în fișierele de template (de exemplu header.php, functions.php sau index.php). Printr-o cerere AJAX crafted către wp-admin/customize.php cu parametrii theme și action=install, WordPress descarcă arhiva, o extrage în wp-content/themes/ și încarcă previzualizarea. Codul malicios este executat în acest moment, oferind atacatorului acces RCE cu privilegiile utilizatorului web server (de obicei www-data sau nginx). Ce face această vulnerabilitate periculoasă este că nu necesită upload direct de fișiere prin interfața Media Library sau FTP — folosește mecanismul legitim de instalare a temelor.
Impactul pe Infrastructura de Hosting și Medii Multi-Tenant
Pentru furnizorii de hosting partajat, VPS sau servere dedicate care gazduiesc sute sau mii de instanțe WordPress, riscul este amplificat de arhitectura multi-tenant. Un singur site compromis poate deveni punct de pivoteză pentru enumerarea altor conturi pe același server, citirea fișierelor wp-config.php ale vecinilor (dacă permisiunile sistemului de fișiere nu sunt izolate corespunzător) sau inițierea atakelor de tip privilege escalation prin exploit-uri de kernel locale.
O analiză a datelor de la WordPress.org arată că peste 40% din site-urile active rulează versiuni mai vechi de 6.0, ceea ce le plasează direct în zona de impact a patch-urilor retroactive lansate pentru 4.7+. În medii unde actualizările automate sunt dezactivate sau întârziate de politici de change management, fereastra de expunere poate fi de săptămâni. De asemenea, numeroase site-uri folosesc teme premium sau custom care nu primesc actualizări de securitate regulate, lăsând vectorul de atac deschis chiar și după patching-ul core-ului.
Ghid ServerSpan relevant: Application Firewalls (WAF): de ce ModSecurity este exagerat pentru majoritatea site-urilor WordPress.
De pe serverele dedicate gestionate de dedicated-servers.ro, observăm că atacatorii încearcă să scaneze automat endpoint-urile /wp-admin/customize.php și /wp-admin/theme-install.php în primele 24-48 de ore după publicarea CVE-ului, cautând instanțe ne-patchuite. Monitorizarea log-urilor de acces nginx/Apache pentru cereri POST suspecte către aceste endpoint-uri este o metodă rapidă de detectare a încercărilor de exploatare.
Strategii de Mitigare: Patching, Hardening și Detecție
Prima linie de apărare este aplicarea patch-urilor oficiale. WordPress a lansat actualizări de securitate pentru toate ramurile întreținute: 7.1.1 (major), 7.0.2, 6.7.2, 6.6.3, 6.5.5, 6.4.5, 6.3.5, 6.2.5, 6.1.6, 6.0.6, 5.9.10, 5.8.10, 5.7.11, 5.6.13, 5.5.14, 5.4.16, 5.3.18, 5.2.21, 5.1.18, 5.0.22, 4.9.26, 4.8.25, 4.7.28. Dacă folosești WP-CLI, actualizarea forțată a tuturor site-urilor de pe un server se face cu:
wp core update --version=7.1.1 --force --path=/calea/catre/site
Pentru medii cu mii de site-uri, automatizează procesul cu un script care iterează prin directorul public_html al fiecărui utilizator și rulează comanda de mai sus, loghează rezultatele și alertează pe echipă în caz de eșec.
Al doilea nivel este hardening-ul la nivel de sistem de fișiere și PHP. Restricționează funcțiile periculoase în php.ini sau .user.ini:
disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source,pcntl_exec
De asemenea, setează DISALLOW_FILE_EDIT și DISALLOW_FILE_MODS în wp-config.php pentru a bloca editarea fișierelor și instalarea pluginurilor/temelor din dashboard — forțând deployment-ul prin CI/CD sau WP-CLI:
define('DISALLOW_FILE_EDIT', true);
define('DISALLOW_FILE_MODS', true);
La nivel de server web, blochează accesul la wp-admin/customize.php și wp-admin/theme-install.php pentru IP-uri neautorizate sau protejează-le cu HTTP Basic Auth suplimentar. Pe nginx:
location ~* /wp-admin/(customize|theme-install)\.php$ {
allow 192.168.1.0/24; # IP-ul adminului tău
deny all;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd-wpadmin;
}
Pentru monitorizare continuă, implementează reguli WAF (ModSecurity sau Cloudflare WAF) care detectează cereri POST cu parametru action=install și theme către customize.php. Integrează log-urile cu un SIEM (Wazuh, Elastic Security) și configurează alerte pentru coduri de răspuns 200/302 pe aceste endpoint-uri de la IP-uri necunoscute.
Plan de Respunză la Incident pentru Echipele de Hosting
Dacă detectezi o exploatare reușită sau încercată, urmează acest flux de respuns:
- Izolare: Mută site-ul compromis într-un container sau VPS izolat; schimbă parolele tuturor conturilor admin și FTP/SFTP.
- Analiză forensică: Verifică
wp-content/themes/pentru directoare necunoscute; scanează cuclamscan -rșigrep -r "eval\|base64_decode\|shell_exec" wp-content/themes/. - Restaurare: Reinstalează core-ul WordPress cu
wp core download --force --version=7.1.1; restaură fișierele temei din backup curat sau reinstalează tema legitimă. - Rotire credențiale: Rotire chei SSH, parole DB, chei API WordPress.org, token-uri WP-CLI.
- Post-incident: Documentează vectorul de intrare, actualizează regulile WAF, revizuiește politica de actualizare automată și programează un audit de securitate complet.
Pentru clienții care gestionează infrastructura propriată, serverspan.ro oferă servere dedicate cu imagine de bază hardenată (AppArmor, kernel grsecurity, PHP-FPM pool-uri izolate per utilizator) care reduce suprafața de atac chiar și în cazul unor vulnerabilități zero-day ne-patchuite.
Pași Practici Imediți
- ✅ Actualizează toate instanțele WordPress la cea mai recentă versiune de securitate a ramurii respective (7.1.1 sau patch-ul corespunzător pentru versiuni vechi)
- ✅ Activează
DISALLOW_FILE_MODSînwp-config.phppe site-urile de producție - ✅ Configurează WAF/ModSecurity să blocheze
action=installpecustomize.phppentru IP-uri neautorizate - ✅ Scanează
wp-content/themes/pe toate serverele pentru directoare/teme necunoscute - ✅ Verifică log-urile nginx/Apache ultimele 72 de ore pentru POST pe
/wp-admin/customize.php - ✅ Rotește cheile de autentificare și parolele admin pe site-urile cu activitate suspectă
Concluzie
Vulnerabilitatea Click2Shell demonstrează încă o dată că funcționalitățile legitime de management al conținutului (instalare teme, previzualizare live) pot deveni vectori de atac atunci când validarea input-ului și controlul accesului sunt insuficienți. Pentru infrastructura de hosting modernă, abordarea reactivă — așteptarea exploit-ului public și patching-ul ulterior — nu mai este acceptabilă. Combinația de patching automat la nivel de fleet, hardening la nivel de sistem de operare și PHP, segmentare de rețea strictă între clienți și monitorizare comportamentală a cererilor administrative reprezintă standardul minim de diligență. Dacă administrezi servere care gazduiesc WordPress, tratează această vulnerabilitate ca un exercițiu de fire drill: testează procesul tău de actualizare masivă, validează regulile WAF și confirmă că backup-urile sunt testabile și restaurabile în sub o oră. Siguranța nu este un produs pe care îl instalezi — este un proces pe care îl iei la fiecare ciclu de deploy și la fiecare alertă de securitate.
Pentru mai multe detalii despre această parte a subiectului, vezi Ghidul suprem pentru curățarea hack-ului cu cuvinte cheie japoneze de pe site-ul dumneavoastră WordPress.