我正在浏览 mysql-slow-logs 以检查潜在的优化,我注意到其中有奇怪的模式(见下文):
SELECT password, type FROM accounts AS a JOIN sys_users AS s ON (a.id = s.account_id) WHERE s.login='**DICTIONARY_USER_NAME_HERE**' AND (SELECT count(*) FROM hosting AS h WHERE h.sys_user_id = s.id) = 0 AND (SELECT count(*) FROM web_users AS w WHERE w.sys_user_id = s.id) = 0 AND (SELECT count(*) FROM ftp_users AS f WHERE f.sys_user_id = s.id) = 0;
更可怕的是,这些查询是从 admin@localhost(指定为 Plesk MySQL 用户)执行的
我已经签入,似乎 Plesk 以纯文本形式存储了一些密码,而这些查询显然是猜测登录名的字典方法,因此 mysql 会以纯文本密码响应
所以总结一下
- 称为 admin@localhost 的查询
- plesks 纯文本密码
我不确定攻击的媒介是什么,但如果我们考虑一些事情:
- 攻击者现在没有管理员密码,否则他可以执行精确查询而不是字典
- 攻击者显然没有通过 ssh / 远程 mysql 执行
- 这可能是 plesk 的错误,因为我在两台服务器上观察到它在不同的操作系统、不同的配置下运行并且只有一个服务器有任何内容(网站/应用程序或任何可能成为攻击媒介的东西)
- 最有可能的是攻击者(或本例中的机器人)正在通过 Plesk 的一些非安全脚本(允许此类查询但不要求您登录的脚本)执行查询
现在我可能完全错误并误解了这种情况,这是某种完全正常的 Plesk 操作(我对此表示怀疑),同样奇怪的是我在 Google 中找不到任何关于此漏洞的信息
一些技术/软背景:
- 虚拟主机
- 1xCentOS 5 / 1xDebian(均为 x64)
- Plesk 面板 v. 10.4.4
如果有人可以确认他们确实遇到了该问题/攻击,并且可能有某种解决方案如何防止攻击者,我会非常高兴 - 他最终可能会猜到登录名,但他还没有得到它。
升级到第 11 版暂时不讨论 - VPS 提供商说他还不能这样做,我不能将项目转移到其他 VPS,或者至少不能这么快
提前致谢和问候,亚当