Shell脚本从服务器上的所有index.php文件中删除某些文本

时间:2012-09-28 20:11:26

标签: shell text

似乎有些恶意脚本已经发现它在我拿着我的网页的服务器上。我有几个帐户,他们都被“感染”(不确定这是否是正确的词)。

反正。所有index.php文件都已添加以下代码:

<marquee style="position: absolute; width: 0px;">
<a href="http://istanbulescort-ilan.com/" title="escort bayan">escort bayan</a>
<a href="http://istanbulescort-ilan.com/" title="bayan escort">bayan escort</a>
<a href="http://ankaraescortlari.org/" title="ankara escort">ankara escort</a>
<a href="http://ankaraescortlari.org/" title="ankara escort bayan">ankara escort bayan</a>
<a href="http://ankaraescortlari.org/" title="escort ankara">escort ankara</a>
...
<a href="http://hurhaberci.com" title="son haberler">son haberler</a>
</marquee>

此代码混乱标题和网页无法很好地呈现。更不用说我在我的所有网页上都有一些护送服务链接。

我找到了这个脚本,但我不确定如何正确修改它以从服务器上每个帐户上的所有index.php文件中删除所有上述代码。我不想运行它,然后发现我必须恢复hudge备份。

for i in /directory/*.java
do
   # echo 'Working on $i file'
   copy $i tempfil.txt
   sed   -e '/\} catch/,/^\}/d' tempfil.txt > $i
done

[编辑]

好的,所以我设法把它拼凑起来。有人可以请确认它会起作用或提供有关应该更改的内容的任何建议吗?

read -d '' hacked <<"EOF"
<marquee style="position: absolute; width: 0px;">
<a href="http://istanbulescort-ilan.com/" title="escort bayan">escort bayan</a>
...
<a href="http://gidasayfasi.com" title="gida">gida</a></marquee>
EOF
find -name \*.php | xargs replace ${hacked} ""  --

1 个答案:

答案 0 :(得分:1)

删除前置文本(假设前置文本中没有任何有用的内容):

sed '/<marquee/,/marquee>/ d' index.php

/EXP1/, /EXP2/ d表示sed匹配表达式EXP1和表达式EXP2之间的行,然后应用动作“d”(即“删除”)。

希望这有帮助。

----根据以下评论编辑--- ----恶意内容可能有正确的代码---- 您可以想象在文本文件名'tobedeleted.txt'中复制/粘贴要删除的文本部分。然后编写以下脚本process.sh(其中$ 1是要清理的文件)

#/bin/bash
diff --suppress-common-lines $1 tobedeleted.txt | grep -e '^<' | sed 's/^< //'

上面的diff命令仅显示引用恶意代码与文件$ 1的内容之间的差异。差异是逐行计算的,并显示标记字符'&lt; '在线之前(见man diff)。 请先尝试这个命令。

您可以调用脚本(首先执行chmod u+x process.sh使其可执行)并将结果重定向到另一个脚本,例如:

process.sh index.php > new_index.php

因此,要纠正大量文件,请执行以下脚本:

#/bin/bash
find . -name "*.php" | while read pathfile
do
   file=${pathfile##*/} # remove the path from the fullpath to the file
   pathonly=${pathfile%/*} # keep only the path
   cp $pathfile ${pathonly}/${file}.org # copy original file to save it, in case of...
   process.sh  ${pathonly}/${file}.org > ${pathfile} # apply correction
done