MySQL 客户端允许 MySQL 服务器请求任何本地文件

开发四年只会写业务代码,分布式高并发都不会还做程序员? >>>  hot3.png

近期大型商务网站和政府网站被黑客通过 Adminer 数据库入侵,根本原因是 MySQL 的协议缺陷。

但在官方文档显示,客户端主机到服务器主机的文件传输由 MySQL 服务器启动。理论上,客户端程序选择的文件不应是 LOAD DATA 语句中客户端指定的文件,而应该是传输服务器选择的文件。

MySQL 客户端允许 MySQL 服务器请求任何本地文件_第1张图片

虽然由很大的泄密风险,但服务器必须知道客户端上文件的完整路径,才可能成功。而请求/self/proc/environ,服务器就可以了解客户端上的文件夹结构。

一些客户端和库具有对此“功能”的内置保护,或者在默认情况下禁用它(例如 Golang,Python,PHP-PDO)。但并非所有都会这么做,正如 Adminer 案例所示。Adminer 很可能不会是最后一个出现该问题的


你可能感兴趣的:(MySQL 客户端允许 MySQL 服务器请求任何本地文件)