关于MySQL LOAD DATA特性的利用与思考
昨天做测试的时候,遇到个Adminer,成功利用MySQL LOAD DATA特性进行文件读取,并最终getshell。
MySQL LOAD DATA
主要是用于读取一个文件的内容并且放到一个表中。
正常流程:
客户端:hi~ 我将把我的 data.csv 文件给你插入到 test 表中!服务端:OK,读取你本地 data.csv 文件并发给我!客户端:这是文件内容:balabal!
恶意流程:客户端:hi~ 我将把我的 data.csv 文件给你插入到test表中!服务端:OK,读取你本地的 /etc/passwd 文件并发给我!客户端:这是文件内容:balabal(/etc/passwd文件的内容)!
该特性适用于:MySQL Client、PHP with mysqli、PHP with PDO(默认未开启MYSQL_ATTR_LOCAL_INFILE属性,需要手工开启才可以)、Python with MySQLdb、Python3 with mysqlclient、Java with JDBC Driver等。
Adminer
扫描端口,开放8080端口,访问为Adminer 登录页面
Adminer是一个使用PHP开发的数据库管理工具,和phpMyAdmin类似。
下载漏洞利用工具:Rogue-MySql-Server,配置完之后在服务上启动
填写服务器地址,访问
成功读取到目标的/etc/passwd文件
尝试读取web目录文件
后续直接读取配置文件,获取mysql账号密码
使用账号密码登录adminer
利用日志getshell
访问shell
思考
后续思考了下,只要服务端提供MySQL测试/连接的地方,都有可能存在此问题。
比如常见的:
- 远程管理(phpMyAdmin、Adminer等)
- 各类探针(LNMP探针、phpStudy探针、PHP探针等)
- 系统安装程序(wordpress、Discuz、phpwind等)
- 其他测试连接/工具页面
在fofa上搜了下,还挺多的
参考文章
https://lightless.me/archives/read-mysql-client-file.html
https://www.40huo.cn/blog/evil-mysql.html
https://xz.aliyun.com/t/3973
https://www.smi1e.top/mysql-load-data-%E8%AF%BB%E5%8F%96%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BB%BB%E6%84%8F%E6%96%87%E4%BB%B6/
https://xz.aliyun.com/t/6587
https://github.com/allyshka/Rogue-MySql-Server
- 前端工程师在业余时间如何提高自身能力——造轮子
- 我是如何Hack掉一个机器人!
- SliferMenu详解
- Android 深入ViewPager补间动画,实现类京东商城首页广告Banner切换效果
- android抓屏
- android 仿qq手写板涂鸦
- listview动态获取数据
- toggbutton
- android软件开发之webView.addJavascriptInterface循环渐进【一】
- android的listview item点击详解
- android之surfaceview画图
- viewgroup实现item拖动效果
- Android之ExpandableListView下拉分组的实现
- 粗略的物体碰撞预测及检测
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- percona-toolkit大表操作DDL使用 2.1. 数据库字符集修改2.2. 数据库建库、授权操作2.3. 数据库建表、插入数据4.1. 添加表字段【
- PHPMailer 代码执行漏洞(CVE-2016-10033)分析(含通用POC)
- linux 平均负载 load average 的含义【转】
- zookeeper-01 概述
- zookeeper-02 部署
- zookeeper-03 命令行操作
- java连接zookeeper服务器出现“KeeperErrorCode = ConnectionLoss for ...”
- Linux 内存使用率
- CentOS7.4下编译Hadoop-2.7.6
- VMware安装CentOS6
- VMware安装CentOS7 3.1 主机名修改3.2 网卡名修改3.3 ifconfig安装
- VMware网络设置
- Destoon 6.0 guestbook.php 通用SQL注入漏洞
- Hadoop2.7.6_01_部署
- Hadoop2.7.6_02_HDFS常用操作