{"id":84,"date":"2026-01-13T00:00:00","date_gmt":"2026-01-12T23:00:00","guid":{"rendered":"https:\/\/helloblog.io\/et\/wordpessi-pahavara-googleboti-ip-tuvastus-cloaking\/"},"modified":"2026-01-20T06:33:08","modified_gmt":"2026-01-20T05:33:08","slug":"wordpessi-pahavara-googleboti-ip-tuvastus-cloaking","status":"publish","type":"post","link":"https:\/\/helloblog.io\/et\/wordpessi-pahavara-googleboti-ip-tuvastus-cloaking\/","title":{"rendered":"Kui Google n\u00e4eb \u00fcht ja k\u00fclastaja teist: WordPressi pahavara, mis tuvastab Googleboti IP j\u00e4rgi"},"content":{"rendered":"\n<p>Viimaste kuude intsidentides on hakanud silma \u00fcks ebameeldiv trend: pahavara ei \u00fcrita enam tingimata iga k\u00fclastajat kuhugi kahtlasesse kohta suunata. Selle asemel k\u00e4itutakse selektiivselt \u2013 p\u00e4ris inimestele n\u00e4idatakse tavalist saiti, aga otsingumootorite roomikutele (crawler) serveeritakse hoopis teist sisu. Omanik logib sisse, kontrollib avalehte ja k\u00f5ik paistab korras. Google aga indekseerib sp\u00e4mmi.<\/p>\n\n\n\n<p>Sucuri anal\u00fc\u00fcsis \u00fchte sellist juhtumit, kus WordPressi p\u00f5hifaili <code>index.php<\/code> oli lisatud \u201cv\u00e4ravavahi\u201d loogika: see otsustab, kas laadida WordPress tavap\u00e4raselt v\u00f5i t\u00f5mmata v\u00e4lisest allikast t\u00e4iesti teistsugune payload (sisu\/skript), mida n\u00e4eb sisuliselt ainult Google\u2019i infrastruktuur.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mis r\u00fcnnakuga tegu on (ja miks see on ebameeldiv)?<\/h2>\n\n\n\n<p>See on klassikalise <em>cloaking\u2019u<\/em> (sisu varjamine) edasiarendus. M\u00f5te on lihtne: otsingumootorile n\u00e4itad midagi, mis aitab sul indekseeruda (v\u00f5i mida r\u00fcndaja tahab indekseerida), aga p\u00e4riskasutaja n\u00e4eb \u201cpuhast\u201d saiti. Praktikas t\u00e4hendab see, et Google\u2019i tulemustes v\u00f5ivad ilmuda lehed, mida sinu WordPress tegelikult kunagi ei genereeri.<\/p>\n\n\n\n<p>Eriti ohtlikuks teeb selle juhtumi see, et r\u00fcndaja ei piirdu ainult <code>User-Agent<\/code>i kontrolliga (mida saab v\u00e4ga lihtsalt v\u00f5ltsida). Skript kontrollib ka IP-aadressi ning teeb seda \u00fcsna tehniliselt korralikult.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1360\" height=\"636\" src=\"https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/IP-Verified-Conditional-Logic.png\" alt=\"Skeem IP-p\u00f5hise tingimusloogika kohta, kus pahavara otsustab, kellele mida n\u00e4idata\" class=\"wp-image-76\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/IP-Verified-Conditional-Logic.png 1360w, https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/IP-Verified-Conditional-Logic-300x140.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/IP-Verified-Conditional-Logic-1024x479.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/IP-Verified-Conditional-Logic-768x359.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/IP-Verified-Conditional-Logic-400x187.png 400w\" sizes=\"auto, (max-width: 1360px) 100vw, 1360px\" \/><figcaption class=\"wp-element-caption\">R\u00fcndaja eesm\u00e4rk: lasta pahatahtlik sisu l\u00e4bi ainult \u201e\u00f5igele\u201d roomikule. \u2014 <em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Kus pahavara peidus oli?<\/h2>\n\n\n\n<p>Leitud juhtumis oli muudatus tehtud WordPressi peamisele <code>index.php<\/code> failile. See on kriitiline koht, sest tavap\u00e4raselt toimib <code>index.php<\/code> WordPressi esilet\u00f5stetud \u201cfront controller\u201d sarnase sissep\u00e4\u00e4suna: kui r\u00fcndaja saab sinna oma kontrollloogika, saab ta otsustada, kas WordPress \u00fcldse k\u00e4ivitub v\u00f5i mitte.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mis oli tehniliselt \u201euus\u201d v\u00f5rreldes tavap\u00e4rase botifiltriga?<\/h2>\n\n\n\n<p>Tavap\u00e4rane halb skript kontrollib <code>HTTP_USER_AGENT<\/code> v\u00e4\u00e4rtust ja kui n\u00e4eb sealt \u201eGooglebot\u201d, serveerib midagi muud. Probleem: seda saab iga\u00fcks curliga j\u00e4rgi teha. Antud juhul lisati teine kiht: kontrollitakse, kas p\u00e4ring tuleb Google\u2019i IP-vahemikest.<\/p>\n\n\n\n<p>Siin tulevad m\u00e4ngu kaks m\u00f5istet, mida tasub sama laua taga hoida:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><strong>ASN (Autonomous System Number)<\/strong> \u2013 autonooms\u00fcsteemi number, sisuliselt v\u00f5rguoperaatori \u201einternetipass\u201d. Google\u2019il on oma ASN-id ja nende all konkreetne hulk IP-vahemikke.<\/li>\n\n\n<li><strong>CIDR<\/strong> (Classless Inter-Domain Routing) \u2013 notatsioon IP-vahemike kirjeldamiseks kujul <code>x.x.x.x\/nn<\/code>, kus mask m\u00e4\u00e4rab, kui suur see v\u00f5rgublokk on. N\u00e4iteks <code>192.168.1.0\/24<\/code> katab <code>192.168.1.0<\/code> kuni <code>192.168.1.255<\/code>.<\/li>\n\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1332\" height=\"620\" src=\"https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/CIDR-format.png\" alt=\"N\u00e4ide CIDR formaadist ja kuidas \/24 kirjeldab IP vahemikku\" class=\"wp-image-77\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/CIDR-format.png 1332w, https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/CIDR-format-300x140.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/CIDR-format-1024x477.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/CIDR-format-768x357.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/CIDR-format-400x186.png 400w\" sizes=\"auto, (max-width: 1332px) 100vw, 1332px\" \/><figcaption class=\"wp-element-caption\">CIDR on standardne viis IP-vahemike kompaktseks kirjeldamiseks. \u2014 <em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<p>Pahavara sisaldas suurt, hardcode\u2019itud nimekirja Google\u2019i ASN-iga seotud IP-vahemikest CIDR formaadis ning tegi kontrolli mitte stringiv\u00f5rdlusega, vaid bititasemel arvutusega (sh IPv6 tugi). See teeb k\u00e4sitsi avastamise ebamugavaks: isegi kui sa esined Googlebotina, saad \u201etavalise\u201d lehe \u2013 sest IP ei klapi.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kuidas see \u201ev\u00e4ravavaht\u201d loogika t\u00f6\u00f6tab (k\u00f5rgel tasemel)<\/h2>\n\n\n\n<p>Leitud skript tegi otsuse mitmes astmes. Kui m\u00f5elda sellest kui request pipeline\u2019ist, siis r\u00fcndaja on pannud <code>index.php<\/code> algusesse preflight-kontrollid ning alles siis otsustab, kas WordPressi bootstrap \u00fcldse k\u00e4ivitada.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1) Mitmekihiline identiteedikontroll: User-Agent + IP<\/h3>\n\n\n\n<p>Esmalt vaadatakse <code>HTTP_USER_AGENT<\/code> stringi ja otsitakse sealt erinevaid Google\u2019i roomikute ja t\u00f6\u00f6riistade mustreid (mitte ainult \u201eGooglebot\u201d, vaid ka mitmed verifitseerimise\/inspekteerimisega seotud agendid). Kuna <code>User-Agent<\/code> on triviaalne spoofida, j\u00e4rgneb sellele IP-aadressi valideerimine.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1880\" height=\"498\" src=\"https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/Multi-Layer-Identity-Verification.png\" alt=\"Mitmekihiline kontroll: User-Agenti filtrid ja seej\u00e4rel IP kontroll\" class=\"wp-image-78\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/Multi-Layer-Identity-Verification.png 1880w, https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/Multi-Layer-Identity-Verification-300x79.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/Multi-Layer-Identity-Verification-1024x271.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/Multi-Layer-Identity-Verification-768x203.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/Multi-Layer-Identity-Verification-1536x407.png 1536w, https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/Multi-Layer-Identity-Verification-400x106.png 400w\" sizes=\"auto, (max-width: 1880px) 100vw, 1880px\" \/><figcaption class=\"wp-element-caption\">UA on ainult esimene filter; p\u00e4ris otsus tehakse IP j\u00e4rgi. \u2014 <em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">2) IP vahemiku kontroll bitioperatsioonidega<\/h3>\n\n\n\n<p>IPv4 puhul kasutatakse klassikalist v\u00f5rgumaski kontrolli loogikat: v\u00f5etakse IP ja v\u00f5rguadress, tehakse m\u00f5lemale <code>AND<\/code> netmask\u2019iga ning v\u00f5rreldakse tulemusi. See on standardne viis kontrollida, kas IP kuulub CIDR-v\u00f5rgublokki.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/\/ Loogika idee (n\u00e4idiskuju)\n\/\/ Kui IP ja v\u00f5rgubloki aadress annavad maski all sama tulemuse,\n\/\/ siis IP kuulub antud CIDR vahemikku.\n($ip_decimal &amp; $netmask_decimal) == ($range_decimal &amp; $netmask_decimal);\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#6A737D\">\/\/ Loogika idee (n\u00e4idiskuju)<\/span><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\">\/\/ Kui IP ja v\u00f5rgubloki aadress annavad maski all sama tulemuse,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\">\/\/ siis IP kuulub antud CIDR vahemikku.<\/span><\/span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">($ip_decimal <\/span><span style=\"color:#F97583\">&#x26;<\/span><span style=\"color:#E1E4E8\"> $netmask_decimal) <\/span><span style=\"color:#F97583\">==<\/span><span style=\"color:#E1E4E8\"> ($range_decimal <\/span><span style=\"color:#F97583\">&#x26;<\/span><span style=\"color:#E1E4E8\"> $netmask_decimal);<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1420\" height=\"734\" src=\"https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/Bitwise-IP-Range-Validation.png\" alt=\"Diagramm bitwise IP kontrollist CIDR v\u00f5rguvahemike vastu\" class=\"wp-image-79\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/Bitwise-IP-Range-Validation.png 1420w, https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/Bitwise-IP-Range-Validation-300x155.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/Bitwise-IP-Range-Validation-1024x529.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/Bitwise-IP-Range-Validation-768x397.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/Bitwise-IP-Range-Validation-400x207.png 400w\" sizes=\"auto, (max-width: 1420px) 100vw, 1420px\" \/><figcaption class=\"wp-element-caption\">Bitioperatsioonidega kontroll on t\u00e4pne ja kiire; sihtr\u00fchmaks Google\u2019i IP-vahemikud. \u2014 <em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">3) Kui bot on \u201ep\u00e4ris\u201d, t\u00f5mmatakse remote payload cURLiga<\/h3>\n\n\n\n<p>Kui User-Agent ja IP m\u00f5lemad klapivad, tehakse serveri poolt (PHP kaudu) HTTP p\u00e4ring v\u00e4lisele domeenile ja saadud sisu prinditakse otse vastusesse. Nii n\u00e4eb otsingumootor seda justkui saidi enda sisuna.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># R\u00fcnnakus kasutatud URL (ohtlik):\n# hxxps:\/\/amp-samaresmanor[.]pages[.]dev\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#6A737D\"># R\u00fcnnakus kasutatud URL (ohtlik):<\/span><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\"># hxxps:\/\/amp-samaresmanor[.]pages[.]dev<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1444\" height=\"836\" src=\"https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/Remote-Payload-Execution-via-cURL.png\" alt=\"Skeem, kus server teeb cURL p\u00e4ringu v\u00e4lisele domeenile ja v\u00e4ljastab selle sisu Googlebotile\" class=\"wp-image-80\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/Remote-Payload-Execution-via-cURL.png 1444w, https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/Remote-Payload-Execution-via-cURL-300x174.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/Remote-Payload-Execution-via-cURL-1024x593.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/Remote-Payload-Execution-via-cURL-768x445.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/Remote-Payload-Execution-via-cURL-400x232.png 400w\" sizes=\"auto, (max-width: 1444px) 100vw, 1444px\" \/><figcaption class=\"wp-element-caption\">Remote payload v\u00f5imaldab r\u00fcndajal sisu d\u00fcnaamiliselt muuta, ilma sinu serveris faile uuesti puutumatagi. \u2014 <em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">4) Detailne User-Agenti filtreerimine<\/h3>\n\n\n\n<p>Lisaks klassikalisele \u201eGooglebot\u201d stringile oli filtris terve hulk Google\u2019iga seotud roomikuid ja utiliite. Eesm\u00e4rk on, et pahatahtlik sisu l\u00e4biks mitte ainult indekseerija, vaid ka muud Google\u2019i kontrollid (nt erinevad inspekteerimis- ja API-p\u00f5hised p\u00e4ringud).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1682\" height=\"554\" src=\"https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/User-Agent-Filtering.png\" alt=\"User-Agenti p\u00f5hised kontrollid, mis katavad mitmeid Google\u2019i t\u00f6\u00f6riistu\" class=\"wp-image-81\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/User-Agent-Filtering.png 1682w, https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/User-Agent-Filtering-300x99.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/User-Agent-Filtering-1024x337.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/User-Agent-Filtering-768x253.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/User-Agent-Filtering-1536x506.png 1536w, https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/User-Agent-Filtering-400x132.png 400w\" sizes=\"auto, (max-width: 1682px) 100vw, 1682px\" \/><figcaption class=\"wp-element-caption\">Mida laiem UA filter, seda suurem \u0161anss, et r\u00e4mps j\u00f5uab indeksi ja kontrollideni. \u2014 <em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">5) Tingimusloogika, suunamised ja logimine<\/h3>\n\n\n\n<p>Loogika ei ole \u201cserveeri ja unusta\u201d. Skriptis oli ka error handling ja logimine: kui remote-sisu ei lae, suunatakse bot n\u00e4iteks <code>\/home\/<\/code> teele, et v\u00e4ltida Google\u2019ile katkist lehte. Kui User-Agent tundub Google, aga IP ei klapi, logitakse \u201eFake GoogleBot detected\u201d ning n\u00e4idatakse tavalist lehte. Tavak\u00fclastaja suunatakse samuti \u201cnormaalsele\u201d avalehele.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1694\" height=\"680\" src=\"https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/Conditional-Logic-and-Error-Logging.png\" alt=\"Otsustuspuu: p\u00e4ris bot saab remote sisu, v\u00f5lts bot ja tavakasutaja suunatakse puhtale lehele; lisaks logimine\" class=\"wp-image-82\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/Conditional-Logic-and-Error-Logging.png 1694w, https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/Conditional-Logic-and-Error-Logging-300x120.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/Conditional-Logic-and-Error-Logging-1024x411.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/Conditional-Logic-and-Error-Logging-768x308.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/Conditional-Logic-and-Error-Logging-1536x617.png 1536w, https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/Conditional-Logic-and-Error-Logging-400x161.png 400w\" sizes=\"auto, (max-width: 1694px) 100vw, 1694px\" \/><figcaption class=\"wp-element-caption\">R\u00fcndaja minimeerib riski, et Google n\u00e4eb katkist vastust v\u00f5i et omanik avastab anomaalia brauseris. \u2014 <em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Mida see su saidiga teeb?<\/h2>\n\n\n\n<p>Selle nakkuse p\u00f5him\u00f5ju on SEO ja otsingumaine. Kuna Google saab teistsuguse sisu kui kasutaja, v\u00f5ivad tagaj\u00e4rjed olla ebameeldivad ka siis, kui saidi funktsionaalsus kasutajale justkui t\u00f6\u00f6tab:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>indeksisse tekivad ootamatud\/sp\u00e4mmilehed v\u00f5i -katked<\/li>\n\n\n<li>otsingutulemustes halveneb snippet ja CTR<\/li>\n\n\n<li>v\u00f5imalik musta nimekirja (blacklist) sattumine v\u00f5i deindekseerimine<\/li>\n\n\n<li>ressursside kuritarvitus: sinu domeeni autoriteeti kasutatakse kellegi teise sisu levitamiseks<\/li>\n\n\n<li>avastamine hilineb, sest k\u00e4sitsi brausides ei n\u00e4e midagi valesti<\/li>\n\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1270\" height=\"936\" src=\"https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/What-Google-sees.png\" alt=\"N\u00e4ide, kuidas Google n\u00e4eb sp\u00e4mmi samal ajal kui kasutaja n\u00e4eb normaalset lehte\" class=\"wp-image-83\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/What-Google-sees.png 1270w, https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/What-Google-sees-300x221.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/What-Google-sees-1024x755.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/What-Google-sees-768x566.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/18\/2026\/01\/What-Google-sees-400x295.png 400w\" sizes=\"auto, (max-width: 1270px) 100vw, 1270px\" \/><figcaption class=\"wp-element-caption\">Cloaking\u2019u puhul on t\u00fc\u00fcpiline, et omanik n\u00e4eb puhtat saiti, aga Google indekseerib midagi muud. \u2014 <em>Forr\u00e1s: Sucuri Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Ohum\u00e4rgid, mille peale tasub kohe reageerida<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Google\u2019i otsingutulemustes ilmuvad sinu domeeni all kummalised pealkirjad\/URL-id<\/li>\n\n\n<li>serveris v\u00f5i Gitis (kui kasutad) on ootamatult muudetud core-failid, eriti <code>index.php<\/code><\/li>\n\n\n<li>logides on ebatavalised p\u00e4ringud v\u00f5i suunamised (nt botidega seotud UA mustrid)<\/li>\n\n\n<li>kahtlased v\u00e4lised URL-id koodis v\u00f5i v\u00f5rguliikluses (eriti kui neid ei leia frontendist)<\/li>\n\n<\/ul>\n\n\n\n<div class=\"wp-block-group callout callout-warning is-style-warning is-layout-flow wp-block-group-is-layout-flow\" style=\"border-width:1px;border-radius:8px;padding-top:1rem;padding-right:1.5rem;padding-bottom:1rem;padding-left:1.5rem\">\n\n<h4 class=\"wp-block-heading callout-title\">Praktiline t\u00e4helepanek<\/h4>\n\n\n<p>Sellise r\u00fcnde korral ei piisa ainult brauseris kontrollimisest. Kui pahavara valideerib Google\u2019i IP-vahemikke bititasemel, siis sinu \u201eteeskle Googlebot\u201d test curliga ei n\u00e4ita midagi \u2013 IP ei vasta tingimustele.<\/p>\n\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Miks WordPressi core-failid on r\u00fcndaja jaoks nii v\u00e4\u00e4rtuslikud?<\/h2>\n\n\n\n<p>Leitud n\u00e4ites kasutati \u00e4ra WordPressi standardseid k\u00e4ivitusfaile, et pahavara ja \u201ep\u00e4ris\u201d sait saaksid samas protsessis koos eksisteerida.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><code>wp-load.php<\/code> \u2013 selle include\u2019iga bootstrappitakse WordPressi keskkond (konfig, DB \u00fchendus, globaalsed funktsioonid). Pahavara saab vajadusel ligi saidi seadistusele ja andmebaasile.<\/li>\n\n\n<li><code>wp-blog-header.php<\/code> \u2013 tavap\u00e4rase <code>index.php<\/code> l\u00f5puosa, mis k\u00e4ivitab teema renderdamise. Pahavara v\u00f5ib otsustada, kas sinna \u00fcldse j\u00f5utakse v\u00f5i mitte.<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Puhastamine ja ennetus: mida teha, kui kahtlustad sarnast nakatumist?<\/h2>\n\n\n\n<p>Kui n\u00e4ed SEO-s anomaaliaid v\u00f5i leiad ootamatuid muudatusi core-failides, tasub tegutseda eeldusel, et kompromiteerimine on toimunud (mitte oodata \u201ckuni l\u00e4heb \u00fcle\u201d). Sucuri soovitused on \u00fcsna klassikalised, aga selle r\u00fcnde kontekstis eriti olulised:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n\n<li><strong>Eemalda tundmatud failid ja kaustad.<\/strong> Kui sa ei tea, milleks see on, ja repo\/varukoopia seda ei tunne, k\u00e4sitle seda kahtlasena.<\/li>\n\n\n<li><strong>Auditeeri kasutajad.<\/strong> Eemalda kahtlased admin-kontod ja eriti \u201eabikontod\u201d, mis ei peaks seal olema.<\/li>\n\n\n<li><strong>Vaheta k\u00f5ik paroolid.<\/strong> WordPressi adminid, FTP\/SFTP, hostingupaneel, andmebaas \u2013 k\u00f5ik.<\/li>\n\n\n<li><strong>Sk\u00e4nni oma arvuti.<\/strong> Kui r\u00fcndaja sai ligip\u00e4\u00e4su sinu t\u00f6\u00f6masina kaudu, taastub nakkus kiiresti.<\/li>\n\n\n<li><strong>Uuenda k\u00f5ik.<\/strong> Core, pluginad, teemad \u2013 ning eemalda kasutamata komponendid.<\/li>\n\n\n<li><strong>Kasuta WAF-i.<\/strong> Web Application Firewall aitab blokeerida tuntud pahatahtlikku liiklust ning piirata pahavara suhtlust C2\/remote-payload allikatega.<\/li>\n\n<\/ol>\n\n\n\n<div class=\"wp-block-group callout callout-info is-style-info is-layout-flow wp-block-group-is-layout-flow\" style=\"border-width:1px;border-radius:8px;padding-top:1rem;padding-right:1.5rem;padding-bottom:1rem;padding-left:1.5rem\">\n\n<h4 class=\"wp-block-heading callout-title\">Kaks asja, mis avastamist oluliselt lihtsustavad<\/h4>\n\n\n<p>1) <strong>File Integrity Monitoring<\/strong> (failide terviklikkuse j\u00e4lgimine) \u2013 et <code>index.php<\/code> ja teised core-failid ei saaks vaikselt muutuda. 2) Regulaarne kontroll Google Search Console\u2019is, kas indeksis on ootamatuid URL-e v\u00f5i lehti, mida sa ei tunne.<\/p>\n\n<\/div>\n\n\n<div class=\"references-section\">\n                <h2>Viited \/ Allikad<\/h2>\n                <ul class=\"references-list\"><li><a href=\"https:\/\/blog.sucuri.net\/2026\/01\/malware-intercepts-googlebot-via-ip-verified-conditional-logic.html\" target=\"_blank\" rel=\"noopener noreferrer\">Malware Intercepts Googlebot via IP-Verified Conditional Logic<\/a><\/li><li><a href=\"https:\/\/blog.sucuri.net\/2026\/01\/google-sees-spam-you-see-your-site-a-cloaked-seo-spam-attack.html\" target=\"_blank\" rel=\"noopener noreferrer\">Google Sees Spam, You See Your Site: A Cloaked SEO Spam Attack<\/a><\/li><li><a href=\"https:\/\/sucuri.net\/website-firewall\/\" target=\"_blank\" rel=\"noopener noreferrer\">Sucuri Website Firewall<\/a><\/li><li><a href=\"https:\/\/sucuri.net\/malware-detection-scanning\/\" target=\"_blank\" rel=\"noopener noreferrer\">Sucuri Malware Detection &amp; Scanning (File Integrity Monitoring)<\/a><\/li><\/ul>\n            <\/div>","protected":false},"excerpt":{"rendered":"<p>Lihtsad \u00fcmbersuunamised j\u00e4\u00e4vad \u00fcha sagedamini minevikku: r\u00fcndajad filtreerivad liiklust nii, et pahatahtlik sisu j\u00f5uab ainult Google\u2019i robotiteni. Tulemuseks on SEO mainekahju, samal ajal kui omanik ise ei pruugi midagi m\u00e4rgata.<\/p>\n","protected":false},"author":48,"featured_media":75,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[50],"tags":[53,51,52,54,9],"class_list":["post-84","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-turvalisus","tag-googlebot","tag-malware","tag-seo","tag-waf","tag-wordpress"],"_links":{"self":[{"href":"https:\/\/helloblog.io\/et\/wp-json\/wp\/v2\/posts\/84","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/helloblog.io\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/helloblog.io\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/helloblog.io\/et\/wp-json\/wp\/v2\/users\/48"}],"replies":[{"embeddable":true,"href":"https:\/\/helloblog.io\/et\/wp-json\/wp\/v2\/comments?post=84"}],"version-history":[{"count":1,"href":"https:\/\/helloblog.io\/et\/wp-json\/wp\/v2\/posts\/84\/revisions"}],"predecessor-version":[{"id":129,"href":"https:\/\/helloblog.io\/et\/wp-json\/wp\/v2\/posts\/84\/revisions\/129"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/helloblog.io\/et\/wp-json\/wp\/v2\/media\/75"}],"wp:attachment":[{"href":"https:\/\/helloblog.io\/et\/wp-json\/wp\/v2\/media?parent=84"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helloblog.io\/et\/wp-json\/wp\/v2\/categories?post=84"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helloblog.io\/et\/wp-json\/wp\/v2\/tags?post=84"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}