攻击者正在编写的wp-config.php

时间:2019-11-22 作者:Rob Pridham

我有一个最新的Wordpress安装程序,并且在安全方面,我已经尽了最大努力。然而,我有一个反复出现的问题。

我已将配置置于安装位置上方的级别。

然而,偶尔会有一些东西写下一个新的wp-config.php 到安装位置,填写某人的详细信息。

我分析了Apache访问日志,发现:

[IP removed] - - [22/Nov/2019:17:45:06 +0100] "POST /wordpress//wp-admin/setup-config.php?step=2 HTTP/1.1" 200 1116 "-" "python-requests/2.9.1"
[IP removed] - - [22/Nov/2019:17:45:09 +0100] "POST /wordpress//wp-admin/install.php?step=2 HTTP/1.1" 302 368 "-" "python-requests/2.9.1"
[IP removed] - - [22/Nov/2019:17:45:09 +0100] "GET /wordpress/wp-admin/setup-config.php HTTP/1.1" 200 1487 "-" "python-requests/2.9.1"
[IP removed] - - [22/Nov/2019:17:45:10 +0100] "GET /wordpress//wp-login.php HTTP/1.1" 302 332 "-" "Python-urllib/2.7"
[IP removed] - - [22/Nov/2019:17:45:11 +0100] "GET /wordpress/wp-admin/setup-config.php HTTP/1.1" 200 2791 "-" "Python-urllib/2.7"
我不确定,但我怀疑无论他们在安装阶段发布了什么,都会导致Wordpress创建一个新的配置。由于攻击者没有有效的凭据、数据库或创建凭据的能力等,这似乎并没有为攻击者带来任何实际效果,但它确实设置了一个中断站点的配置,将所有访问指向安装程序页面。

生成的配置如下所示:

<?php
/**
 * The base configuration for WordPress
 *
 * The wp-config.php creation script uses this file during the
 * installation. You don\'t have to use the web site, you can
 * copy this file to "wp-config.php" and fill in the values.
 *
 * This file contains the following configurations:
 *
 * * MySQL settings
 * * Secret keys
 * * Database table prefix
 * * ABSPATH
 *
 * @link https://codex.wordpress.org/Editing_wp-config.php
 *
 * @package WordPress
 */

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( \'DB_NAME\', \'[removed]\' );

/** MySQL database username */
define( \'DB_USER\', \'[removed]\' );

/** MySQL database password */
define( \'DB_PASSWORD\', \'[removed]\' );

/** MySQL hostname */
define( \'DB_HOST\', \'remotemysql.com\' );

[snipped]
我可能可以通过设置禁止访问安装程序的规则来防止再次发生,但WP肯定不应该允许这种情况,而且我找不到关于这个主题的任何其他内容。

我是否遗漏了任何事情,无论是如何发生的,还是由此可能获得的结果?

Edit: 这似乎需要一些澄清。我相信这是WP被诱导向主目录写入一个新的配置文件,就像新安装的一样。它不是在更高级别上修改我的配置。它确实不是一种更广泛的妥协。

由于该站点目前不是关键站点,我已经开始将请求详细信息(POST params等)记录到文件系统中,我们将在下次发生这种情况时看到我得到的信息,这大致是每天都有的。

5 个回复
最合适的回答,由SO网友:Rob Pridham 整理而成

结果证明这真的很愚蠢。

由于最初调试过程中的一个错误,现场有一份Wordpress安装的副本,即。/wordpress, 从不设置。如果您将安装解包到错误的级别,然后向上复制而不是移动它,就会发生这种情况。

回想起来,日志显然将此称为请求,但我忽略了它,认为它与文件系统有关。

攻击利用一组安装参数推测性地攻击了另一个安装,然后生成了上述级别的配置。这破坏了正确的网站。然而,幸运的是,随后访问坏站点的尝试也失败了,因为无论出于何种原因,它都会产生重定向循环。因此,没有取得任何成果。

SO网友:Khairul Alam

我会做以下事情-

1) 检查网站上是否存在任何恶意内容。您可以使用以下免费工具-https://sitecheck.sucuri.net/

2) 如果尚未将Wordpress安装的文件夹权限设置为755,请将其更改为755。同时更改wp配置。为了安全起见,对755的php文件权限。

3) 您还可以尝试保护wp config。php文件中使用以下规则。htaccess文件。你必须把它放在文件的底部;在所有其他规则之后

<files wp-config.php>
order allow,deny
deny from all
</files>

SO网友:C0c0b33f

您可以将配置文件向上移动一个目录,并应检查文件权限,以仅允许所有者您对其进行编辑。如果您有权访问。htaccess文件,您可以向其中添加以下内容以阻止访问。

# protect wpconfig.php 
<files wp-config.php> 
  order allow,deny 
  deny from all 
</files>
https://wordpress.org/support/topic/permission-for-wp-config-php/https://www.webhostinghero.com/how-to-protect-your-wp-config-php-file-in-wordpress/https://www.malcare.com/blog/how-to-secure-your-wordpress-site-with-wp-config-php/

SO网友:Rick Hellewell

我在一个共享服务器上安装了多个可湿性粉剂和非可湿性粉剂的客户端上遇到了类似的问题。wp config文件获得一些插入的代码,并将随机的PHP文件以及插入的代码放置在各种(和添加的)索引中。php。

我用非常强的密码重置了所有凭据(主机、数据库、管理员等)。我更改了文件的权限(某些更改的文件已添加“执行”),但没有任何效果。而且文件的日期在修改时不会改变,所以很难感觉到。

我已经编写了一个文件哈希检查器,它在一个单独的表中比较所有文件的哈希。这提醒我问题再次出现,但我还没有找到感染点。我看过几乎所有的嫌疑犯。(由于我还没有找到罪犯,显然我还没有找到“正确的”嫌疑人。)

我在所有WP站点上安装了两个不同的安全插件;仍然受到攻击。(幸运的是,攻击插入的代码工作不正常,因为插入的代码取决于wp options表中的特定值。但这很恼人……)并使用htaccess规则保护wp config文件;这也没有阻止它。

我注意到wp posts表有一些插入的记录,所以您可以在那里查看。我还没有在wp选项表中看到任何内容。

因此,查看每个php文件中插入的代码;查找具有“执行”权限集的文件;更改所有凭据(托管、ftp、数据库、主数据库、管理员);在wp users表中查找隐藏用户;寻找修改过的插件(手动删除并重新安装,希望可以保存设置);与主题相同;散列所有内容都是一些想法。

但我将继续关注这一点,因为我还没有找到我们两个问题的完整解决方案,但希望我的经验能有所帮助。

Added

我找到了这个资源,它可能会为您提供额外的保护想法:https://www.owasp.org/index.php/OWASP_Wordpress_Security_Implementation_Guideline . 那里的许多建议可能是适当的。YMMV。

您可以考虑删除安装。php文件-安装后不需要它。不确定是否将其放回WP版本更新。

SO网友:John Dee

清理站点并从备份中恢复。

If an attacker can write PHP code, you\'re system is 100% compromised and needs to be scrubbed. 您无法验证攻击是否已结束。您无法确定什么对攻击者有用,或者他们是如何做到的。它们可以执行任意代码。换句话说,你不再拥有那个实例了——他们拥有。您仍然拥有该域,希望您能够访问您的数据。您应该备份数据,然后将站点重新安装到新服务器上。

一个很好的方法是使用任何基本备份系统,但不要使用完整备份系统。例如,执行XML导出将丢失您的monkey,但使用“Replicator”之类的东西进行备份只会将感染带到新实例。

相关推荐

wp-cli installation

我安装了0h my zsh;然后wp cli,更改。zshrc文件并写入:# FIX PHP MAMP for WP-CLI export PATH=/Applications/MAMP/bin/php/php5.6.2/bin:$PATH export PATH=$PATH:/Applications/MAMP/Library/bin/ 因为mamp(我使用)。然后移动到WordPress目录并尝试安装插件:wp plugin install *name-of-the-plug