Corriger les degats d'un virus avec SED
Résolu
Ludo
-
zipe31 Messages postés 34620 Date d'inscription Statut Contributeur Dernière intervention -
zipe31 Messages postés 34620 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
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
la premiere ligne marche bien mais la seconde ne fonctionne pas bien
Pourriez-vous m'aider a corriger la commande.
Merciiiiiiii :bounce:
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
<?phppar 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:
1 réponse
-
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'
-
-
-
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*/ ?> -
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\*/ ?>##'
-
-