WordPress sql注入

问题描述 投票:0回答:1

感谢您让我在这里发帖,我刚刚开始学习编程。

我的 WordPress 网站有问题,我为我父亲当地的摩托车道路安全培训小组更新了该网站,该培训小组是由志愿者教练作为慈善/非营利组织运营的。托管公司 (LCN) 已关闭该网站并向该组织发送了以下电子邮件:


域名:kamg.org.uk 数据库:kamg_org_uk_dbtest MySQL服务器:database3.lcn.com

我们的监控脚本检测到您的网站 kamg.org.uk 上发生了 SQL 注入攻击,该攻击使用了那里托管的可利用代码。

此处列出了已标记为可疑/恶意的 SQL 查询:

-----开始报告-----

时间运行:01:34:02 选择

wp_users
.
ID
wp_users
.
user_login
wp_usermeta
.
meta_key
wp_usermeta
.
meta_value
FROM
wp_users
内连接
wp_usermeta
ON
wp_users
.
user_login
= "" OR CASE WHEN EXISTS (SELECT 1 FROM information_schema.tables WHERE TABLE_NAME LIKE 0x255f7573657273) THEN sleep(5) ELSE 0 END AND "1"="1" AND
wp_usermeta
.
meta_key
LIKE "%_user_level" AND
wp_usermeta 
.
meta_value
= "10" 和
wp_users
.
ID
=
wp_usermeta
.user_id

运行时间:01:34:00 选择

wp_users
.
ID
wp_users
.
user_login
wp_usermeta
.
meta_key
wp_usermeta
.
meta_value
FROM
wp_users
内连接
wp_usermeta
ON
wp_users
.
user_login
= "" OR CASE WHEN EXISTS (SELECT 1 FROM information_schema.tables WHERE TABLE_NAME LIKE 0x255f7573657273) THEN sleep(5) ELSE 0 END AND "1"="1" AND
wp_usermeta
.
meta_key
LIKE "%_user_level" AND
wp_usermeta 
.
meta_value
= "10" 和
wp_users
.
ID
=
wp_usermeta
.user_id

-----报告结束-----

WP、插件和主题都始终保持最新。

我可以安全地从数据库中删除这些行来清理网站吗?

LCN 为团体提供免费慈善托管,但我发现超过 1600 个域名共享同一服务器。一旦 SQL 注入被清除,该组将转移到托管 WP 托管,希望它会更安全。

谢谢,

尼尔斯

我尝试通过 FTP 重新安装 WordPress,但主机拒绝了该尝试,并删除了所有权限。

他们的支持令人震惊,花了 4 天的时间来回复查询,然后用剪切和粘贴库存回复来回答错误的问题。

我刚刚开始学习,但我很乐意进入并编辑文件(有点紧张),但现阶段还没有尝试任何事情。

sql wordpress sql-injection
1个回答
0
投票

这不是数据有问题,而是 WordPress 代码中的某些内容,或更可能是您安装的插件或主题之一。

代码的工作方式是这样的:

$query = 'SELECT wp_users.ID, wp_users.user_login, wp_usermeta.meta_key,
  wp_usermeta.meta_value 
FROM wp_users INNER JOIN wp_usermeta ON wp_users.user_login = "' . $variable . 
  '" AND wp_usermeta.meta_key LIKE "%_user_level" AND wp_usermeta.meta_value = "10" 
  AND wp_users.ID = wp_usermeta.user_id';

但是

$variable
的价值已经被一些攻击者利用了。他们将其设置为以下字符串:

" OR CASE WHEN EXISTS (SELECT 1 FROM information_schema.tables WHERE TABLE_NAME LIKE 0x255f7573657273) THEN sleep(5) ELSE 0 END AND "1"="1

(甚至包括引号字符。)

当变量连接到查询中时,它会导致 SQL 查询包含攻击者注入的额外表达式术语。

看起来他们正在强制

sleep()
调用来测试某些表是否存在。他们将使用此方法来了解您所有的表名称。然后他们将在后续攻击中使用信息来读取这些表。 SQL 注入黑客必须使用此类技术进行探测,以试图避免检测。

原始查询可能是 WordPress 代码的正常部分或插件或主题之一。但是程序员犯了一个错误,他连接了一个其值是根据不受信任的输入设置的变量。程序员不应该这样做,但许多人要么没有意识到风险,要么认为他们的代码不会发生这种情况。

您说您的WordPress和插件的所有版本都是最新的,但该漏洞可能存在于当前版本中。换句话说,尚未发布具有修复功能的新版本。

或者您可能添加了存在漏洞的自定义代码,因此没有其他人会更新它。这取决于你。

您现在要做的就是找出哪一行代码(而不是数据)导致了该漏洞。如果您不具备执行此操作的技能(基本上是在许多文件中进行文本搜索以查找类似于我上面显示的代码行),那么您需要雇用某人来帮助您。

一旦找到负责的代码行,要么自己修复它,或者如果它在插件中,您可以卸载该插件以删除易受攻击的代码。

听起来您的托管公司不会提供帮助。在这种情况下,他们可能没有什么资源来提供客户服务。即使您修复了代码,听起来也很难让他们允许您恢复网站。

如果您当前的托管提供商无法通信或无法访问您的网站,您可能需要寻找新的托管提供商。

但在上传任何内容之前请修复代码。否则代码仍然容易受到黑客攻击。如果您上传明知易受攻击的代码,那将是您的错。

© www.soinside.com 2019 - 2024. All rights reserved.