I temi WordPress e la decodifica di eval gzinflate base64_decode

Sto utilizzando spesso WordPress come base di partenza per alcuni lavori “semplici”. La grafica la attingo dall’enorme serbatoio di temi gratuiti che è possibile trovare su web.
Nei temi è frequente trovare il file functions.php che aggiunge funzioni al normale set di WP.
I creatori (o anche i semplici modificatori) di temi inseriscono queste funzioni per gestire da remoto i backlink che compaiono, ad esempio, nel footer e che possono essere usati anche per pubblicità, SEO ecc.
Alcuni di questi link sono assolutamente leciti, quando riportano gli autori del tema ma spesso ci si ritrova a sponsorizzare siti pornografici o che contengono codice maligno.
E’ importante quindi dare un’occhiata al codice e nel caso modificarlo.
Nel file functions.php il codice è, però, camuffato per mezzo di una funzione. Ossia ci troviamo di fronte a qualcosa del genere

eval(gzinflate(base64_decode(‘DdFHrqNYAEDRrfSsqsQA/AgGlXpAMCYaTHrApEXOObP6/ju4Oj
fbo/Z3cVd93kZr9juOlowi/kuzZEiz37+EVJHm6RO
….

Vediamo come fare per renderla in chiaro

Creiamo un file decodifica.php

<?php
echo “1. Leggo codificato.txt\n”;
$fp1 = fopen (“codificato.txt”, “r”);
$contents = fread ($fp1, filesize (“codificato.txt”));
fclose($fp1);
echo “2. Decodifico\n”;
while (preg_match(“/eval\(gzinflate/”,$contents)) {
$contents=preg_replace(“/<\?|\?>/”, “”, $contents); eval(preg_replace(“/eval/”, “\$contents=”, $contents)); } echo “3. Scrivo su decodificato.txt\n”; $fp2 = fopen(“decodificato.txt”,”w”); fwrite($fp2, trim($contents)); fclose($fp2);
?>

e due file di testo
codificato.txt – dove copiamo il contenuto da decodificare
decodificato.txt – file di testo vuoto con permessi settati a 666

Mettiamo tutti e tre i file nella root del nostro server.

Nel browser richiamiamo http://www.miodominio.it/decodifica.php
e poi http://www.miodominio.it/decodificato.txt per leggere la funzione in chiaro.

Link: scarica esempio

I temi WordPress e la decodifica di eval gzinflate base64_decode