Návštevníci končia na stránke s lotériou, lekárňou alebo falošnou technickou podporou, a vy pritom vidíte svoj web normálne. To je znak vloženého presmerovania, najčastejšie podmieneného. Tento sprievodca vysvetľuje, ako presmerovanie vyvolať, ako ho nájsť v súboroch alebo v databáze a ako zavrieť prístup, ktorým bolo vložené.
wp-config.php..htaccess, súbory PHP, databáza, nastavenia adresy webu.wp-content/uploads, pluginy na preinštalovanie alebo zmazanie.Presmerovanie vložené pri napadnutí si vyberá, koho sa týka. Najčastejšie šetrí toho, kto web spravuje, aby zostalo na mieste čo najdlhšie. Najbežnejšie podmienky:
Referer.User-Agent.Správu od zákazníka v zmysle „váš web ma posiela inam“ preto berte vážne, aj keď sa vám všetko zobrazuje správne.
Vžite sa do situácie návštevníka, ktorého presmerovanie zasiahne:
Ak máte prístup k terminálu, tento príkaz si vyžiada vašu úvodnú stránku a predstaví sa pritom ako iPhone, ktorý prichádza z Googlu:
curl -s -i -A "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X)" -e "https://www.google.com/" https://www.vas-web.com/
Prečítajte si prvé riadky odpovede. Kód 301 alebo 302, za ktorým nasleduje riadok Location: s neznámou adresou, znamená presmerovanie vykonané serverom: nachádza sa v .htaccess alebo v súbore PHP. Kód 200, hoci sa prehliadač presmeruje, znamená presmerovanie vykonané v stránke, v JavaScripte: najčastejšie sa nachádza v databáze alebo v súbore témy.
wp-config.php, konštanta DB_PASSWORD) a potom každý administrátorský účet WordPressu.AUTH_KEY po NONCE_SALT v wp-config.php novou sadou vygenerovanou na https://api.wordpress.org/secret-key/1.1/salt/. Všetky otvorené relácie sa ukončia, vrátane relácie útočníka.wp config shuffle-salts
V koreňovom adresári webu, a niekedy aj v podadresári, môže .htaccess obsahovať pravidlá prepisovania adries, ktoré pridal útočník. Blok, ktorý zapisuje samotný WordPress, je krátky a ohraničený riadkami # BEGIN WordPress a # END WordPress:
# BEGIN WordPress
# Inštrukcie (riadky) medzi “BEGIN WordPress” a “END WordPress” sú
# dynamicky generované a mali by byť upravené iba pomocou filtrov WordPress.
# Akékoľvek zmeny inštrukcií medzi týmito značkami budú prepísané.
<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
Pravidlo RewriteCond, ktoré testuje %{HTTP_REFERER} (google, bing, facebook) alebo %{HTTP_USER_AGENT} (android, iphone, mobile), nasledované pravidlom RewriteRule smerujúcim na vonkajšiu adresu, je samotné presmerovanie. Pluginy pre cache a zabezpečenie zapisujú aj vlastné bloky, označené svojím názvom: skôr než blok odstránite, porovnajte ho so zoznamom svojich pluginov.
WP-CLI porovná súbory jadra WordPressu a pluginov s kontrolnými súčtami, ktoré zverejňuje WordPress.org, a vypíše každý zmenený alebo pridaný súbor:
wp core verify-checksums
wp plugin verify-checksums --all
Druhý príkaz pokrýva pluginy distribuované cez repozitár WordPress.org. Plugin kúpený u vydavateľa sa porovnáva s čerstvou kópiou stiahnutou z vášho účtu u neho. Je to častý prípad: z 540 webov malých a stredných firiem na WordPresse v našom meraní z 1. septembra 2026 nesie 66 % aspoň jeden plugin, ktorý vo verejnom repozitári nie je.
Bez WP-CLI poskytnú prvý výber dve vyhľadávania:
find . -name "*.php" -mtime -30
find wp-content/uploads -name "*.php"
Prvé vypíše súbory PHP zmenené za posledných 30 dní, druhé súbory PHP uložené v priečinku médií, kde sú už z podstaty podozrivé (niektoré pluginy tam vkladajú prázdny index.php, ktorý je v poriadku). Dátum zmeny sa dá sfalšovať: starý súbor na nesprávnom mieste si preto prezrite tiež.
Najprv otvorte wp-config.php, index.php v koreni, functions.php a header.php aktívnej témy a priečinok wp-content/mu-plugins: pluginy v ňom sa načítavajú automaticky a v administrácii sa nedajú deaktivovať. Čo hľadať: eval(, base64_decode(, gzinflate(, str_rot13(, dlhé nečitateľné reťazce alebo window.location nasledované adresou, ktorú nepoznáte.
Presmerovanie v JavaScripte sa často ukladá do obsahu stránok alebo do nastavení, kde ho žiadny súbor neukáže. WP-CLI vyhľadá reťazec vo všetkých tabuľkách WordPressu:
wp db search "<script"
wp db search "fromCharCode"
Bez WP-CLI spustíte rovnaké vyhľadávania v phpMyAdmin, na karte SQL:
SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%<script%';
SELECT option_name FROM wp_options WHERE option_value LIKE '%<script%';
Niektoré výsledky sú legitímne: nástroj na meranie návštevnosti, lišta cookies alebo widget, ktorý ste vložili sami. Preskúmajte všetko, čo nezodpovedá ničomu, čo ste inštalovali, najmä skript, ktorý skladá adresu z kódov znakov.
V ponuke Nastavenia > Všeobecné musia polia „Adresa (URL) WordPress-u“ a „Adresa stránky (URL)“ obsahovať vašu doménu. Rovnaké hodnoty sa dajú vynútiť vo wp-config.php konštantami WP_HOME a WP_SITEURL: skontrolujte obe miesta.
wp option get home
wp option get siteurl
wp user list --role=administrator
Keď sú konštanty definované, prvé dva príkazy vrátia ich hodnotu. Posledný vypíše administrátorov s dátumom registrácie; v administrácii získate rovnaký zoznam v ponuke Používatelia, s filtrom na rolu Administrátor. Účet, ktorý nikto nepozná, zmažte a jeho obsah priraďte legitímnemu účtu.
Zmazaním riadku, ktorý presmerováva, zastavíte príznak. Prístup, ktorý útočník použil, zostáva otvorený, kým ho nenájdete, a presmerovanie sa v priebehu niekoľkých dní vráti. Poradie, ktoré funguje:
wp-admin a wp-includes a spustite wp core download --skip-content --force, ktorý jadro prepíše bez toho, aby sa dotkol vašich pluginov, tém a médií. Príkaz prepisuje existujúce súbory, ale pridané súbory ponechá: preto sa oba priečinky mažú najprv a preto neznáme súbory PHP v koreni odstránite ručne.wp-content/uploads, pravidlá pridané do .htaccess a skripty nájdené v databáze.wp cron event list: úloha s neznámym názvom môže kód vložiť znova.Ak web uchováva osobné údaje (formuláre, zákaznícke účty, objednávky), poznačte si čas, keď ste napadnutie zistili. V Európskej únii všeobecné nariadenie o ochrane údajov (GDPR) ukladá oznámiť porušenie ochrany osobných údajov dozornému orgánu najneskôr do 72 hodín po tom, čo sa o ňom prevádzkovateľ dozvedel, s výnimkou prípadov, keď nie je pravdepodobné, že porušenie povedie k riziku pre práva a slobody fyzických osôb.
Keď Google presmerovanie odhalí, Chrome môže pred otvorením webu zobraziť červené upozornenie „Nebezpečný web“ a Google môže pod váš výsledok vyhľadávania pripísať „Tento web je možno hacknutý“. Časť Problémy so zabezpečením v Google Search Console ukazuje, čo bolo zistené a na ktorých adresách. Keď je web vyčistený, požiadajte v tej istej časti o kontrolu, ktorá spustí overenie.
Odstránené presmerovanie nechá otvorenú otázku: kto sa o stránku postará potom? Simafri prevezme vašu stránku na WordPresse, vráti ju online na základ, ktorý hostujeme, zabezpečujeme a udržiavame aktuálny, a potom sa o ňu stará, mesiac po mesiaci. Doména aj obsah zostávajú vaše.
Vložený kód číta User-Agent prehliadača a presmerováva len telefóny. Kto web spravuje, často z počítača, presmerovanie nevidí. Otestujte web z telefónu na mobilných dátach alebo príkazom curl s identifikátorom mobilného prehliadača.
Preinštalovanie jadra prepíše súbory WordPressu, ale súbory, ktoré tam mohol pridať útočník, ponechá. Databáza, téma, pluginy a priečinok médií zostanú, ako sú, a práve tam sa presmerovanie a prístup útočníka nachádzajú najčastejšie. Čerstvé jadro je jeden krok čistenia, ktorý dopĺňa databáza, pluginy, účty a heslá.
Pretože prístup, ktorým bolo vložené, tam stále je: pridaný administrátorský účet, súbor PHP skrytý medzi médiami, naplánovaná úloha, zraniteľný plugin. Každý z nich umožní kód po vyčistení vložiť znova. Skontrolujte účty, priečinok wp-content/uploads, naplánované úlohy a verzie pluginov a potom znova zmeňte heslá.
Otvorte Google Search Console a časť Problémy so zabezpečením: uvádza zistené problémy a príklady adries. Ak web v Search Console ešte nie je overený, overenie záznamom DNS pokryje celú doménu.
Simafri
Porozprávajme sa o vašom zámere
Povedzte nám v pár slovách, čo potrebujete: rýchlo sa vám ozveme.
Ďakujeme! Vaša žiadosť bola odoslaná. Čoskoro sa vám ozveme.
Máte radšej e-mail? Napíšte nám na support@simafri.com.