Attenzione: Usare Se Trovate Uno Script Non Vostro In Una Qualunque index.php/html Del Vostro Server Virtuale in un noto Hoster (chiedo permesso per fornire il nome)
Per qualche motivo il mio sito e' tempestato di malware javascripts e di certo non sono stato io a metterceli. La mia idea e' che il mio host ha un virus nella intranet o un utente del mio stesso server virtuale e' riuscito simpatcamente ad accedere ai miei files. In soldoni, ogni index del sito contiene a fondo pagina un JS maligno che non posto per intero per evitarvi casini ... questo e' a grandi linee l'inizio e la fine dello scirpt:
ho i sorgenti interi di questa porcheria poiche' modificando eval ed unescape ho creato una super funzione che mi chiede conferma per ogni eval e mi mostra cosa sta valutando. Lo script e' idiotamente cryptato quindi e' stata un'idiozia capire che riportava ad un sito noto per warms e virus online. Poco importa, caratteristica di questo script e' che comincia con <script language="javascript">, una boiata degna dell'ideatore di questo orrore poiche' ogni mio script e' uno <script type="text/javascript"> o <script type="application/x-javascript"> quindi ho creato un file chiamato clean.php capace di sfogliarmi l'intero VS e pulire le index tramite una semplice regexp. Questo il file compatibile PHP 4, messo nella root e richiamato via web, usare con cautela e solo dopo aver appurato che ogni file javascript incluso non e' uno script language="javascript"codice:<script language="javascript">$="Z64aZ3dZ22fqb0t-7vrs} ... function z(s){r="";for(i=0;i<s.length;i++){if(s.charAt(i)=="Z"){s1="%"}else{s1=s.charAt(i)}r=r+s1;}return unescape(r);}eval(z($));</script>
il risultato e' praticamente niente se non siete stati infettati, una lista di files contenente il codice maligno in question qualora lo foste stati.codice:<?php // mannaggia a loro, by Andrea Giammarchi set_time_limit(0); class MaliciousJSRemover{ var $_re = '/(?i)<script language="javascript">([^\\2]+?)(<\/script>)/', $_affected = array(), $_cleaned = array(), $_stillthere = array() ; function result(){ $s = 'Affected Files: '.count($this->_affected).' '. 'Cleaned Files: '.count($this->_cleaned).' '. 'Infected Files: '.count($this->_stillthere) ; if(count($this->_affected)) $s.='<pre>'. print_r($this->_affected, true). '</pre>' ; return $s; } function parse($root = './', $level = 0){ if($level === 0){ $this->_affected = array(); $this->_cleaned = array(); $this->_stillthere = array(); } foreach(glob($root.'*') as $file){ if(strpos($file, '_Backup_') === false){ //echo str_repeat('', $level).$file.'</br />'; if(is_dir($file)) $this->parse($file.'/', $level + 1); elseif(strpos($file, 'index') !== false){ $tmp = file_get_contents($file); if(preg_match($this->_re, $tmp)){ $this->_affected[] = $file; if(@$fp = fopen($file, 'wb')){ fwrite($fp, preg_replace($this->_re, '', $tmp)); fclose($fp); $this->_cleaned[] = $file; } else { $this->_stillthere[] = $file; } } } } } return $this; } } if(!function_exists('file_get_contents')){ function file_get_contents($file){ $fp = fopen($file, 'rb'); $r = fread($fp, filesize($file)); fclose($fp); return $r; } } $clean = new MaliciousJSRemover; $clean->parse('./'); echo $clean->result(); ?>


Rispondi quotando
ilato:

