Vaši posjetitelji završavaju na stranici lutrije, ljekarne ili lažne tehničke podrške, a vi svoju stranicu vidite sasvim normalno. To je znak ubačenog preusmjeravanja, najčešće uvjetnog. Ovaj vodič objašnjava kako ga ponoviti, pronaći u datotekama ili u bazi podataka i zatvoriti pristup kroz koji je postavljeno.
wp-config.php..htaccess, PHP datoteke, baza podataka i postavke adrese stranice.wp-content/uploads, dodatke koje treba ponovno instalirati ili izbrisati.Preusmjeravanje postavljeno pri hakiranju bira na koga se primjenjuje. Najčešće poštedi osobu koja upravlja stranicom, kako bi što dulje ostalo na mjestu. Najčešći uvjeti:
Referer.User-Agent.Poruku kupca koji piše „vaša me stranica šalje negdje drugdje” zato shvatite ozbiljno, čak i kada se kod vas sve prikazuje ispravno.
Stavite se u položaj posjetitelja kojega ono pogađa:
Ako imate pristup terminalu, ova naredba traži vašu početnu stranicu i pritom se predstavlja kao iPhone koji dolazi s Googlea:
curl -s -i -A "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X)" -e "https://www.google.com/" https://www.vasa-stranica.com/
Pročitajte prve retke odgovora. Statusni kod 301 ili 302 iza kojega slijedi redak Location: s nepoznatom adresom znači da preusmjeravanje radi poslužitelj: nalazi se u .htaccess ili u PHP datoteci. Statusni kod 200, dok preglednik ipak biva preusmjeren, znači da se preusmjeravanje odvija unutar stranice, u JavaScriptu: najčešće se nalazi u bazi podataka ili u datoteci teme.
wp-config.php, konstanta DB_PASSWORD), a zatim svaki administratorski račun u WordPressu.AUTH_KEY do NONCE_SALT u wp-config.php zamijenite novim skupom, generiranim na https://api.wordpress.org/secret-key/1.1/salt/. Sve otvorene sesije se zatvaraju, uključujući i uljezovu.wp config shuffle-salts
U korijenskoj mapi stranice, a ponekad i u podmapi, .htaccess može sadržavati pravila prepisivanja koja je dodao uljez. Blok koji WordPress sam zapisuje kratak je i omeđen redcima # BEGIN WordPress i # END WordPress:
# BEGIN WordPress
# Direktive (redci) između "BEGIN WordPress" i "END WordPress" su
# dinamički generirani, i trebalo bi ih mijenjati samo koristeći WordPressove filtre.
# Sve promjene direktiva između navedenih markera bit će prepisane.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Pravilo RewriteCond koje ispituje %{HTTP_REFERER} (google, bing, facebook) ili %{HTTP_USER_AGENT} (android, iphone, mobile), iza kojega slijedi RewriteRule prema vanjskoj adresi, upravo je preusmjeravanje. Dodaci za predmemoriju i sigurnost također zapisuju vlastite blokove, označene svojim imenom: usporedite svaki blok s popisom svojih dodataka prije nego što ga uklonite.
WP-CLI uspoređuje datoteke jezgre WordPressa i dodataka s kontrolnim zbrojevima koje objavljuje WordPress.org i navodi svaku izmijenjenu ili dodanu datoteku:
wp core verify-checksums
wp plugin verify-checksums --all
Druga naredba obuhvaća dodatke distribuirane kroz direktorij WordPress.org. Dodatak kupljen kod izdavača uspoređuje se sa svježom kopijom preuzetom s vašeg računa kod tog izdavača. Taj je slučaj čest: od WordPress stranica malih i srednjih poduzeća iz našeg mjerenja od 1. rujna 2026., njih 540, 66 % nosi barem jedan dodatak kojega nema u javnom repozitoriju.
Bez WP-CLI-ja dvije pretrage daju prvi izbor:
find . -name "*.php" -mtime -30
find wp-content/uploads -name "*.php"
Prva navodi PHP datoteke izmijenjene u posljednjih 30 dana, druga PHP datoteke smještene u mapu medija, gdje su same po sebi sumnjive (neki dodaci ondje postavljaju prazan index.php, što je legitimno). Datum izmjene može se krivotvoriti: staru datoteku na pogrešnom mjestu svejedno treba pregledati.
Najprije otvorite wp-config.php, index.php u korijenskoj mapi, functions.php i header.php aktivne teme te mapu wp-content/mu-plugins: dodaci koji se ondje nalaze učitavaju se automatski i ne isključuju se iz administracije. Znakovi koje tražite: eval(, base64_decode(, gzinflate(, str_rot13(, dugi nečitljivi nizovi znakova ili window.location iza kojega slijedi adresa koju ne poznajete.
Preusmjeravanje u JavaScriptu rado se smješta u sadržaj stranica ili u postavke, gdje ga nijedna datoteka ne pokazuje. WP-CLI traži niz znakova u svim tablicama WordPressa:
wp db search "<script"
wp db search "fromCharCode"
Bez WP-CLI-ja iste se pretrage pokreću u phpMyAdminu, na kartici SQL:
SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%<script%';
SELECT option_name FROM wp_options WHERE option_value LIKE '%<script%';
Neki su rezultati legitimni: alat za mjerenje posjećenosti, traka za kolačiće ili widget koji ste sami postavili. Ono što ne odgovara ničemu što ste instalirali treba pregledati, osobito skriptu koja adresu sastavlja iz kodova znakova.
U izborniku Postavke > Općenito polja „Adresa WordPressa (URL)” i „Adresa web-stranice (URL)” moraju sadržavati vašu domenu. Iste vrijednosti mogu biti nametnute u wp-config.php konstantama WP_HOME i WP_SITEURL: provjerite oba mjesta.
wp option get home
wp option get siteurl
wp user list --role=administrator
Kada su konstante definirane, prve dvije naredbe vraćaju njihovu vrijednost. Posljednja navodi administratore s datumom registracije; u administraciji se isti popis dobiva u izborniku Korisnici, filtriranom po ulozi Administrator. Račun koji nitko ne prepoznaje briše se, a njegov se sadržaj dodjeljuje legitimnom računu.
Brisanje retka koji preusmjerava zaustavlja simptom. Pristup kojim se uljez poslužio ostaje otvoren dok ga ne pronađete, a preusmjeravanje se vraća u sljedećim danima. Redoslijed koji djeluje:
wp-admin i wp-includes, a zatim pokrenite wp core download --skip-content --force, koja ponovno zapisuje jezgru bez diranja vaših dodataka, tema i medija. Naredba prepisuje postojeće datoteke, ali ne briše dodane: zato se te dvije mape najprije brišu, a nepoznate PHP datoteke u korijenskoj mapi uklanjaju se ručno.wp-content/uploads, pravila dodana u .htaccess i skripte pronađene u bazi.wp cron event list: zadatak nepoznatog imena može ponovno postaviti kod.Ako stranica pohranjuje osobne podatke (obrasci, korisnički računi, narudžbe), zabilježite vrijeme kada ste utvrdili hakiranje. U Europskoj uniji Opća uredba o zaštiti podataka (GDPR) nalaže da se o povredi osobnih podataka izvijesti nadzorno tijelo najkasnije 72 sata nakon saznanja o toj povredi, osim ako nije vjerojatno da će povreda prouzročiti rizik za prava i slobode pojedinaca.
Kada Google otkrije preusmjeravanje, Chrome prije otvaranja stranice može prikazati crveno upozorenje „Opasna web-lokacija”, a Google ispod vašeg rezultata može napisati „Ova je web-lokacija možda hakirana”. Izvješće Sigurnosni problemi u Google Search Consoleu pokazuje što je otkriveno i na kojim adresama. Kada je stranica očišćena, pregled zatražite iz tog izvješća: gumb se u engleskom sučelju zove Request Review.
Uklonjeno preusmjeravanje ostavlja jedno pitanje: tko se poslije brine o stranici? Simafri preuzima vašu WordPress stranicu, vraća je online na temelju koji hostamo, štitimo i držimo ažurnim, a zatim se brine o njoj mjesec za mjesecom. Domena i sadržaj ostaju vaši.
Ubačeni kod čita User-Agent preglednika i preusmjerava samo mobitele. Osoba koja upravlja stranicom, često s računala, ne vidi ništa. Testirajte s mobitela na mobilnim podacima ili naredbom curl koja šalje identifikator mobilnog preglednika.
Ponovna instalacija jezgre ponovno zapisuje datoteke WordPressa, ali ne briše one koje je uljez možda dodao. Baza podataka, tema, dodaci i mapa medija ostaju kakvi jesu, a upravo se ondje najčešće nalaze preusmjeravanje i uljezov pristup. Svježa jezgra jedan je korak čišćenja, uz bazu podataka, dodatke, račune i lozinke.
Zato što je pristup kroz koji je postavljeno još uvijek tu: dodani administratorski račun, PHP datoteka skrivena među medijima, zakazani zadatak, ranjivi dodatak. Svaki od njih omogućuje da se kod ponovno postavi nakon čišćenja. Provjerite račune, mapu wp-content/uploads, zakazane zadatke i inačice dodataka, a zatim ponovno promijenite lozinke.
Otvorite Google Search Console, a zatim izvješće Sigurnosni problemi: ono navodi otkrivene probleme i primjere adresa. Ako stranica još nije potvrđena u Search Consoleu, potvrda putem DNS zapisa obuhvaća cijelu domenu.
Simafri
Porazgovarajmo o Vašem projektu
Recite nam u nekoliko riječi što trebate: javljamo Vam se brzo.
Hvala! Vaš upit je poslan. Javit ćemo vam se uskoro.
Više volite e-mail? Pišite nam na support@simafri.com.