複数ファイルの複雑な文字列を置き換える

複数ファイルの複雑な文字列を置き換える

ハッカーがWebサーバーに侵入し、次の文字列を追加しました。 (セキュリティ上の理由から一部の文字が削除されました。改行文字を追加読みやすくするために)すべてのindex.phpファイルで:

<?php 
eval(gzuncompress(base64_decode('eF5Tcffxd3L0CY5WjzcyNDGGMV4+1dSwqSqzU0LQGAJCPCMM='))); 
eval(gzuncompress(base64_decode('eF5LK81LLsnMzKx+JjNW0rgUAqDUUxQ==')));  
eval(gzuncompress(base64_decode('eF6VlMmy/3sMxOez/iJOojHFT0Ig/8jlTymmN/I='))); 
?>

私はsedコマンドを使ってそれを削除しようとしましたが(別のものに置き換えます)、そのような大きな文字列で有効な正規表現を定義することはほとんど不可能です。

.txtファイルから文字列を読み取るなどの他の方法はありますか?

ベストアンサー1

このようなトリックをどこでも使用しないと仮定すると、このようにしてみてはいかがでしょうか? (sed -iおよびMaybeを使用して正しく実行するfind -exec ...ことは質問の一部ではありません。そうですか?)

$ sed 's/eval(gzuncompress(base64_decode(.*)));//' << EOF                     
> <?php eval(gzuncompress(base64_decode('eF5Tcffxd3L0CY5WjzcyNDGGMV4+1dSwqSqzU0LQGAJCPCMM=')));eval(gzuncompress(base64_decode('eF5LK81LLsnMzKx+JjNW0rgUAqDUUxQ=='))); eval(gzuncompress(base64_decode('eF6VlMmy/3sMxOez/iJOojHFT0Ig/8jlTymmN/I=')));?>
> EOF
<?php  ?>

...後で空のsを処理することができます<?php ?>(あまり病気ではありませんか?)。

編集する説明されている状況に合うように改行文字を削除してください。

編集2すべてを(良いことが知られている)バックアップ(存在する場合)。

編集3私は「すべてのindex.phpファイル」ビットを確認しました。だからあなたは次のことを試すことができます

find /path/to/wwwroot -name "index.php" -exec sed -i regex {} \;

おすすめ記事