X

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

Sergio Gandrus: Da febbraio 2024 lavoro come CTO presso Deva Connection Il mio stack è PHP/MySQL/Git/Docker. Lavoro con Agile (Scrum) e utilizzo principalmente AWS come cloud provider. Sono papà e marito. Nel tempo libero mi piace leggere, il buon vino e viaggiare.

View Comments (7)

  • Ho trovato questo post e anche se "datato" mi sembrava interessante.
    Ho provato, anche scaricando i tuoi esempi, ma il file decodificato.txt continua a riportare esattamente ciò che c'è in codificato.txt quasi si limiti a fare la copia e basta, senza decodificare un bel nulla.

    Ho provato con vari templase che inserivano codice criptato ed il risultato è lo stesso.
    Provo a lasciarti qui uno dei codici dal quale ho estratto i due elementi criptati.

    Ciao
    Gio

    === 8< =======

    === 8< ====

  • Ciao
    Ho trovato un template carino con però un file footer.php con questo codice
    Ho provato, a seguire la tua guida ma il file decodificato.txt continua a riportare esattamente ciò che c’è in codificato.txt. Leggendo qua ho visto che manca qualche cosa al tuo codice ma che cosa?
    Ciao e grazie mille
    Paolo

  • @Paolo

    semplicemente, la sringa DA DECODIFICARE non è quella che avevo usato per testare lo script. Era solo un esempio di come potesse essere.
    Il codice per la decodifica è corretto.
    Il file decodificato.txt deve avere permessi di lettura e scrittura