Trenutak panike je sad. Otvoriš sajt i vidiš strane redirecte, prikrivene linkove, ili Google upozorenje 'This site may be hacked'. Možda klijent zove jer mu antivirus blokira tvoju stranicu. Ovo je operativni postupak što treba napraviti — redom, bez improvizacije.
Tri stvari na umu prije početka:
- Ne paničariti. Cleanup je proces, ne magija. 95% slučajeva je rješivo u 2-6 sati.
- Dokumentiraj sve. Screenshot-ovi, logovi, sumnjivi fajlovi — sve pohrani prije nego brišeš.
- Nemoj odmah brisati. Treba prvo razumjeti što se dogodilo da se ne ponovi.
Korak 1: Procjeni štetu
1.1 Provjeri javnu vidljivost
Otvori incognito tab. Posjeti svoj sajt iz oka korisnika.
- Redirektira li na drugi sajt? Najvjerojatnije malicious redirect.
- Prikazuju li se strani linkovi (Viagra, casino, drugi sumnjivi)? Spam injection.
- Pokazuje li 'defaced' poruku? Defacement, hakerov ego trip.
- Sajt izgleda normalno ali je u Google rezultatima drugačiji? Black hat SEO injection.
1.2 Provjeri Google Search Console
Pod 'Security & Manual Actions' u GSC vidiš jesu li:
- Security issues (malware, phishing, social engineering)
- Manual penalties
- Sumnjivi novi URL-ovi indeksirani
1.3 Provjeri logove
cPanel → Metrics → Raw Access Logs (ili Visitors).
Što tražiš:
- Suspicious POST zahtjevi na
/wp-admin/,/wp-login.php,/xmlrpc.php - Pristup nestandardnim fajlovima (npr.
/wp-content/uploads/x.php) - Spike u trafiku iz neuobičajenih countries
- 404 spam (pokušaji pristupa različitim plugin URL-ovima)
1.4 Provjeri ima li sumnjivih admin korisnika
WordPress → Users. Ima li korisnika kojih ne prepoznaješ? Posebno s admin role-om. Često hakeri kreiraju 'wp-support' ili sličan korisnik.
Korak 2: Izoliraj sajt
2.1 Sigurnosna kopija "as is"
Prije bilo kakve akcije, snapshotiraj trenutno stanje. Imamo vodič za backup.
Razlog: forensics. Ako te haker pita za otkupninu (ransomware) ili ako trebaš dokazati štetu osiguravaju — treba ti dokaz.
2.2 Privremeno offline (opcionalno)
Ako sajt aktivno širi malware drugima, razmisli o privremenom maintenance mode-u. cPanel → File Manager → kreiraj maintenance.html, postavi u root, dodaj redirect u .htaccess:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/maintenance\.html$
RewriteRule .* /maintenance.html [R=503,L]
503 je 'service unavailable' — Google razumije i ne penalizira ako je kratko.
2.3 Promijeni sve credentials
- cPanel password (vidi vodič)
- WordPress admin password
- FTP/SSH passwords
- Database password (i ažuriraj u
wp-config.php) - API keys (Stripe, PayPal, third-party services)
Korak 3: Cleanup
3.1 Scan s anti-malware alatima
Tri alata za WP malware scan:
- Wordfence (free + premium) — scan jedan klikom, prepoznaje poznate malware patterne
- Sucuri SiteCheck — external scan iz oka Google
- MalCare — automatic cleanup feature
WMD hosting ima Imunify360 server-level scanner koji već stalno radi. Ako je nešto detektirano, već je flagged u cPanel-u.
3.2 Manual scan suspicious lokacija
Najčešće lokacije malware-a u WP:
wp-content/uploads/— PHP fajlovi NE smiju biti tu (samo slike, PDF, video)wp-content/plugins/[plugin-name]/— provjeri integritet protiv original plugin code-awp-content/themes/[theme]/— sličnowp-includes/— core fajlovi, NE smiju biti modificiraniwp-admin/— slično
Komanda preko SSH-a koja nalazi modificiranu PHP fajlove u uploads:
find wp-content/uploads/ -name "*.php" -type f
Sve što ide u rezultat — sumnjivo.
3.3 Replace WP core i plugine
Najsigurniji način: brisanje i ponovna instalacija.
- Download WP fresh iz WordPress.org
- Brisanje sve u
wp-includes/iwp-admin/ - Upload fresh verzija
- Za plugine: brisanje folder-a, ponovna instalacija s WP repo (svi plugini koji nisu custom)
- Za teme: isto
Ovo zovemo 'core fresh' — eliminira 80% malware-a koji se ugnijezdio u plugin/core fajlove.
3.4 Provjeri bazu
SQL query koji nalazi sumnjivi sadržaj:
SELECT * FROM wp_posts WHERE post_content LIKE '%<script%' OR post_content LIKE '%base64_%' OR post_content LIKE '%eval(%';
Pregled rezultata — ručno provjeri i obriši ili clean-aj sumnjive postove.
Drugi sumnjivi mjesta:
SELECT * FROM wp_options WHERE option_value LIKE '%eval(%' OR option_value LIKE '%base64_%';
3.5 Brisanje sumnjivih korisnika
WordPress → Users → izbrisaj sve admin-e koje ne prepoznaješ. Prebaci njihove postove na svog admin user-a prije brisanja (WP nudi opciju).
3.6 Provjeri scheduled tasks (cron)
WP plugin: WP Crontrol. Vidiš sve cron jobove. Hakerov malware često ostavi cron koji se reaktivira.
Plus na server razini provjeri cPanel → Cron Jobs. Sumnjivi unosi treba brisati.
Korak 4: Vraćanje na siguran stack
4.1 Update sve
- WP core na najnoviju verziju
- Sve aktivne plugine
- Temu
- PHP verziju (vidi vodič)
4.2 Postavi sigurnosne tunere
- 2FA za admin user (vidi cPanel 2FA + WP 2FA plugin)
- Limit Login Attempts Reloaded
- WPS Hide Login — promijeni
/wp-adminu nestandardni URL - Wordfence ili Sucuri — continuous monitoring
- Disable XML-RPC ako ne koristiš
- Disable file editing iz wp-admin:
define('DISALLOW_FILE_EDIT', true);u wp-config.php
4.3 Pregled file permissions
Standard:
- Folders: 755
- Files: 644
wp-config.php: 600 (samo owner može čitati)
cPanel File Manager → odaberi fajlove → Permissions.
4.4 SSL forsiranje
Sve preko HTTPS. U .htaccess:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Korak 5: Vraćanje na Google good standing
5.1 Reindex
Google Search Console → Removals → ako su sumnjivi URL-ovi indeksirani, traži uklanjanje.
Submit fresh sitemap (Yoast/Rank Math automatski generira).
5.2 Manual action review
Ako je GSC pokazao 'Security Issues' ili 'Manual Action':
- Riješi problem (cleanup završeno)
- U GSC, Security Issues → 'Request Review'
- Detaljno opišite što ste napravili
- Čekaj 7-14 dana
5.3 Ukloni warnings iz browsera
Ako Chrome / Firefox pokazuje 'Dangerous site' upozorenje:
- Google Safe Browsing — automatski reupdates nakon GSC review-a
- Microsoft SmartScreen — može trebati manual report submission
Korak 6: Post-mortem
Najvažniji korak — razumijevanje kako se dogodilo:
- Outdated plugin? — koji, koje verzije, koja je ranjivost
- Slaba lozinka? — brute force preko
/wp-login.php - Compromised hosting? — manje vjerojatno na quality hostingu
- Phishing → kradje credentials? — provjeri svoj email za sumnjive linkove
- Insider? — ex-zaposlenik s pristupom
Bez razumijevanja root cause-a, šansa za ponovni hack ostaje. Najčešći uzrok: zastario plugin s poznatom ranjivošću.
Kad nazvati profesionalca
- Cleanup pokušan, problem se vraća — zna se da je negdje persistent backdoor
- Sajt ima osjetljive podatke (medicinski, financijski) — forensics treba ekspert
- Velik shop s aktivnim transakcijama tijekom napada — implikacije za kupce, GDPR
- Specifični malware koji ne odgovara standardnim alatima
WMD podrška radi cleanup za klijente na našem hostingu. Kontaktiraj info@wmd.hr sa SSL certifikatom za pristup ili otvori support ticket.
Prevencija na duže staze
Pregledali OWASP Top 10 (vidi naš vodič) — sve mjere primjenjive za WP. Brzi recap:
- Strong passwords + 2FA
- Auto-update WP core + pluginovi
- Plugin audit kvartalno
- Limit login attempts
- Promijenjeni admin URL
- Activity log plugin
- WAF na razini hostinga
- Robni backup (JetBackup 4x dnevno + 30 dana retention)
FAQ
Koliko traje cleanup?
2-6 sati za standardni WP hack. Više za kompleksne slučajeve.
Hoću li izgubiti SEO ranking?
Privremeno da (1-3 mjeseca). Brzina recovery-ja ovisi o brzini cleanup-a i Google review-a.
Trebam li nove credentials za sve?
Da. Sve passwords, SSH key-eve, API tokens — pretpostavi da su sve kompromitirano.
Što ako sam izgubio backup pred hack?
Ako nemaš starih backup-a (pre-incident), cleanup je teži. WMD JetBackup 30 dana retention obično pokriva — restore na pre-hack verziju, pa cleanup samo da otkriješ rupu kako se desilo.
Mogu li sajt ostaviti kompromitiranom dok cleanup?
Ne. Aktivno širenje malware-a → ban iz Google Safe Browsing → blacklist. Brzo reagiraj.
Zaključak
WordPress hack nije kraj svijeta. Ali je signal da treba serijoznije pristupiti sigurnosti. 95% incidenata je rezultat zastario softver + slaba password higijena.
Cleanup proces je predvidiv. Postoji formula. Slijedi je redom, dokumentiraj, uči iz incidenta.
Trebaš pomoć? Naš support tim radi cleanup-e svaki tjedan. Za incident response — info@wmd.hr ili live chat. Dostupni 24/7.