多数のファイルから悪意のあるコードの塊を削除するために、bash スクリプトを変更しようとしています。
コミュニティはこれから恩恵を受けるので、ここにあります:
#!/bin/bash
grep -r -l 'var createDocumentFragm' /home/user/Desktop/infected_site/* > /home/user/Desktop/filelist.txt
for i in $(cat /home/user/Desktop/filelist.txt)
do
cp -f $i $i.bak
done
for i in $(cat /home/user/Desktop/filelist.txt)
do
$i | sed 's/createDocumentFragm.*//g' > $i.awk
awk '/<\/SCRIPT>/{p=1;print}/<\/script>/{p=0}!p'
これは、スクリプトが次のメッセージで爆発する場所です。
+ for i in '$(cat /home/user/Desktop/filelist.txt)'
+ sed 's/createDocumentFragm.*//g'
+ /home/user/Desktop/infected_site/index.htm
2 つのエラーが発生し、スクリプトが停止します。
/home/user/Desktop/infected_site/index.htm: line 1: syntax error near unexpected token `<'
/home/user/Desktop/infected_site/index.htm: line 1: `<html><head><script>(function (){ '
最初の 2 つの部分を完了しました。
createDocumentfragm を含むファイルは、テキスト ファイルに正しく列挙されています。
textfile.txt 内のファイルが複製され、元の場所に .bak が追加されています。
あとは、filelist.txt 内のファイルのリストを使用する AWK コマンドを作成し、悪意のあるテキストの塊全体をパターンとして使用して、ファイルから削除するだけです。開始点として大文字のスクリプトのみを使用し、小文字のスクリプトは一般的すぎて正当なテキストを削除する可能性があります
これが役立つと思いますが、正しく使用する方法がわかりません。
http://backreference.org/2010/03/13/safely-escape-variables-in-awk/
この部分を把握したら、ファイルが破損していないことを確認したら、これを実行して bak ファイルを消去できます。
for i in $(cat /home/user/Desktop/filelist.txt)
do
rm -f $i.bak
done