Proč jsou části šablon zakódované a jak je dekódovat

Některé WordPress šablony obsahují kusy zakódovaného skriptu. Pokud si budete procházet zdrojové kódy dříve anebo později na tuto podivnost narazíte, zvláště u šablon, které nejsou z WordPress.org. Ve skutečnosti neexistuje žádný pádný důvod pro autora šablony, něco takového dělat. Právě naopak. Zašifrované části kódu jsou specifické pro backdoor a škodlivý kód. Některé hostingové společnosti dokonce mají automatické nástroje, které podobný druh kódu hledají a upozorňují na to majitele webu. V tomto případě by takovéto hlášení bylo falešně pozitivní.

Proč autor část kódu šifruje?

Ve většině případů se tímto způsobem snaží autor šablony ochránit část šablony, před smazáním anebo úpravou. Zejména se jedná o odkazy na spodní straně. Některé šablony mohou být takzvaně sponzorované. Samotná šablona je zdarma, ale autor prodá několik odkazů v její patičce. Aby je někdo neodmazal, tak je zakóduje společné s několika důležitými tagy anebo kusem skriptu. Po smazání „zašifrovaného“ kódu, pak je šablona kvůli chybějícím tagům nefunkční.

Existuje více metod jak to udělat. Od použití jednoduché funkce, kterou si za chvíli ukážeme až po různé komprese kódu, které značně znepřehlední celý skript. To samozřejmě vede k problémové údržbě a nemožnosti vše upravit v případě potřeby.

Jak šifrování funguje

Ve většině případů se jedná o zašifrování pomocí funkce base64_encode. Následně se obsah dekóduje funkcí base64_decode a spustí funkcí eval.

Nejjednodušší co se dá zašifrovat je odkaz a tag.

echo "<a href=\"odkaz\">odkaz</a></div>";

Výsledný kód bude:

eval(base64_decode("ZWNobyAiPGEgaHJlZj1cIm9ka2F6XCI+b2RrYXo8L2E+PC9kaXY+Ijs="));

Pokud by tento kód v šabloně nebyl, chybějící </div> způsobí rozhození šablony.

Jedná se o nejjednodušší příklad s kterým se můžete setkat. Odradí spíše lidi, kteří nemají ani základní znalosti práce s PHP.

Jak dešifrovat kód

Pokud byste dokázali dešifrovat kód nebyl by pro vás problém zjistit, že stačí doplnit chybějící div a vše bude fungovat. Technicky vzato stačí použít:

echo base64_decode("ZWNobyAiPGEgaHJlZj1cIm9ka2F6XCI+b2RrYXo8L2E+PC9kaXY+Ijs=");

Prostě místo spuštění kódu jej jen vypsat. Využít můžete i některý z online nástrojů, napříkald base64decode.org

Závěr

Pokud se ve vaší šabloně anebo pluginu nachází takto schovaný kus kódu, rozhodně není od věci se na něj podívat. Není totiž náhoda, že jej využívá různý malware. Možná budete překvapeni co zakódovaném řetězci najdete. Dále je třeba si uvědomit, že funkce eval() je považována za celkem nebezpečnou, protože umožňuje spouštět PHP kód.

K hromadnému procházení souborů na funkce eval a base64_decode můžete použít pokročilé vyhledávání například v Total Commander. V některém z dalších článků si to můžeme ukázat na hledání napadané instalace WordPress.

Autor Ginoza

Pracuji na zákaznické podpoře jednoho známého webhostingu.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *