Corriger les degats d'un virus avec SED

Résolu
Ludo -  
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   -
Salut à tous !

J'ai pris ce matin une belle attaque sur mon serveur et il faut que je corrige les degats au plus vite (après je vais appliquer plusieurs correctifs qui devraient eviter que cela se reproduise).

Mon probleme est le suivant :
tous les fichiers .php on été modifiés
- chmodé en 444
- remplacement sur la ligne 1 du code
<?php
par le code malicieux
<?php             /*god_mode_on*/eval(base64_decode("ZXZhbChiYXN ... etc etc ... 


Maintenant ce qu'il me reste a faire c'est de corriger la ligne 1
je passe par SSH et je peux lancer des commandes Linux

j'ai pensé a faire cela
find . -type f -name '*.php' -exec chmod 644 {} \; 
find /home/www -name '*.php' -type f -exec sed -i "/1/c <?php \n" \;

la premiere ligne marche bien mais la seconde ne fonctionne pas bien
Pourriez-vous m'aider a corriger la commande.
Merciiiiiiii :bounce:
A voir également:

1 réponse

zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Salut,

Mets des quotes simples autour de l'expression, et supprimes les "/" autour du numéro de ligne, ça c'est bon pour les motifs, pas pour désigner une ligne par son numéro.

sed -i '1 c <?php \n'
0
Ludo
 
merci zipe !
j'ai testé ton script
sed -i '1 c <?php \n'
sur un seul fichier avec
sed -i '1 c <?php \n' index.php
ca marche tres bien mais ca ne marche plus avec -exec
ca me renvoi des dizaines de messages d'erreur SED : no input files
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Normal il manque le "{}" dans ta commande avec find ;-((

find /home/www -name '*.php' -type f -exec sed -i '1 c <?php \n' {} \;
0
Ludo
 
merci Zipe !!!
Je suis vraiment surpris de la réactivité et de la compétence des utilisateurs de ce forum !
On se sent moins seul !!!

Autre question ... je voudrais faire la meme chose mais en supprimant une chaine de caracteres. la chaine commence toujours par <?php et se termine toujours par god_mode_off*/ ?>
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Ce n'est pas très explicite ta demande ;-(
Si c'est pour supprimer une chaine de caractère n'importe ou dans le texte et en supposant qu'elle soit la seule sur la ligne et qu'elle soit sur la même ligne (j'ai changé le délimiteur par défaut (/) par un dièse (#) pour une meilleure lisibilité du code et en espérant qu'il n'y ait pas de dièse dans l'intervalle) :

sed 's#<?php.*god_mode_off\*/ ?>##'
0
ludo
 
je reviens juste remercier vivement zipe31 !
franchement chapo pour tes conseils !
j'ai réussi a remettre de l'ordre dans mes fichiers grâce à toi !
0