mysql漏洞包_MySQL npm包中的本地文件泄露漏洞

2ec8ebde37233abc997104ae6d9ae7c6.png

“A pure node.js javascript Client implementing the MySQL protocol.”

漏洞

在某次安全评估中,Synacktiv专家无意中发现某个应用可以从另一台MySQL服务器中读取敏感数据,而该应用程序正是使用了mysql的npm软件包。该npm软件包所支持的LOAD DATA LOCAL命令可让服务器读取客户端机器上的文件。 尽管用户可以通过指定标记LOCAL_FILES来禁用这个危险功能,但实际上该配置并不生效,最后导致恶意的MySQL服务器始终可以读取连接客户端本地的文件。

影响版本

文章发布时多个2.x版本受到影响(2.17.1受到影响)。

技术细节

根据官方文档的说法,mysql的npm包支持在进行连接时指定各种flag(某些设定参数),其中的LOCAL_FILES代表在客户端中是否可以使用LOAD DATA LOCAL命令。

以下示例显示了如何禁用该命令:var mysql = require('mysql');

var connection = mysql.createConnection('mysql://test:test@127.0.0.1/test?flags=-LOCAL_FILES');

connection.connect();

connection.query('SELECT 1', function (error, results, fields) { });

connection.end();

通过抓包软件可以看到,LOAD DATA LOCAL是不可用的:

3ef48f84d98134294f8ecbbafa63dd98.png

但是,服务器仍然可以要求连接过来的客户端读取本地文件,下图中的bettercap命令是Bettercap已经集成的一个简易恶意MySQL服务器,相关链接为[https://github.com/bettercap/bettercap/wiki/mysql.server](https://github.com/bettercap/bettercap/wiki/mysql.server):

42087d8dc7a4b91c6e58be64ade9b099.png

可以从上图看出“/etc/passwd”已被读取。该漏洞存在的根本原因是LOCAL_FILES标记并没有在代码运行时起到作用。

864ac67b8387d97b93a39e9dcdbe59c7.png

时间线

2019/05/10:发现漏洞

2019/05/14:发送报告给官方

2019/05/14:官方确认收到

2019/05/15:同意90天漏洞公开期

2019/07/24:发送邮件询问最新进展,无回应

2019/10/24:发送邮件询问最新进展,无回应

2019/11/04:漏洞详情公开

感谢你的阅读!本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场:https://nosec.org/home/detail/3157.html

来源:https://www.synacktiv.com/ressources/advisories/Local_file_disclosure_mysql_npm_package_2.17.1.pdf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/269726.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java实现MD5加密

MD5加密是一种常见的加密方式,我们经常用在保存用户密码和关键信息上。那么它到底有什么,又什么好处呢,会被这么广泛的运用在应用开发中。 信息-摘要算法(Message-digest Algorithm 5,MD5)于90年代初由MIT …

jspwiki mysql_Wiki.js初体验

利用JSPWiki搭建简易企业wiki平台。今天介绍一下基于NodeJS技术的开源项目Wiki.js,其界面简洁美观,支持多种编辑器、多种用户验证方式、多种备份存储方式,支持国际化、自定义主题(Theme)、流量分析等。更多正在开发中的功能,界面也…

java中Map有哪些实现类

Java中的map是一个很重要的集合,他是一个接口,下面继承它实现了多个实现类,这些类各有千秋,各自有个各自的优点和缺点 如下图 map的主要特点是键值对的形式,一一对应,且一个key只对应1个value。其常用的map…

设备的分配与调度简单方案_连铸生产调度与动态重调度的优化与研究-3,炼钢技术(3)原创...

基于生产扰动分类的二阶段遗传算法求解动态重调度问题4.1引言电炉炼钢-连铸生产对整个生产的节奏要求较高,各个工序各个工位间配合要比较紧密,但实际的生产过程中总会存在许多不可避免的扰动因素,必须根据实时现场的监控数据来进行动态调度以…

敏捷开发总结(1)软件研发过程

敏捷开发总结(1)软件研发过程 转载于:https://www.cnblogs.com/lexiaofei/p/6644326.html

java for循环 嵌套for循环-标签使用

continue和break可以改变循环的执行流程,但在多重循环中,这两条语句无法直接从内层循环跳转到外层循环。在C语言中,可以通过goto语句实现多重循环的跳转,但在非循环结构中使用goto语句会使程序的结构紊乱,可读性变差。…

WPF 窗体边框处理

一般做wpf窗口时都不会使用默认的标题栏等,会把他隐藏掉 此时设置以下属性 WindowStyle、AllowsTransparency、ResizeMode 中的两个或三个都能达到目的。 有一种场景,针对.Net 4.0及以下版本,4.5 直接就支持操作 1. 隐藏边框 2.保留鼠标移动到…

mysql 查询时间转换_数据库查询时日期的转换

首先简单说明一下,laravel框架中查询并打印sql语句的办法,不管任何时候由于sql语句报错时,都可以先打印一下,分析一下是什么原因造成的错误①引入laravel框架DB类useIlluminate\Support\Facades\DB;②开启框架日志记录DB::connect…

浅谈Spring之@Nullable、@NonNull注解

NonNull 可以标注在方法、字段、参数之上,表示对应的值不可以为空 Nullable 注解可以标注在方法、字段、参数之上,表示对应的值可以为空

事务概念和事务四大特性和隔离级别

什么是事务 事务四大特性 原生的JDBC事务处理 事务的隔离级别

squid mysql认证_Squid 3.1.7通过mysql_auth方式认证

Squid 3.1.7通过mysql_auth方式认证(FreeBSD平台)一、下载相应软件及补丁#fetch http://people.arxnet.hu/airween/mysql_auth/mysql_auth-0.8.tar.gz#tar xvzf mysql_auth-0.8.tar.gz#cd mysql_auth-0.8#patch -p1 < ../additionalselect.patchpatching file src/confparse…

Spring事务传播属性和隔离级别

Spring事务传播属性和隔离级别 一、Spring事务传播属性&#xff08;Propagation&#xff09;&#xff1a; 1) REQUIRED&#xff08;默认属性&#xff09; 如果存在一个事务&#xff0c;则支持当前事务。如果没有事务则开启一个新的事务。 被设置成这个级别时&#xff0c;会为…

ClickHouse之简单性能测试

前面的文章ClickHouse之初步认识已经简单的介绍了ClickHouse&#xff0c;接下来进行简单的性能测试。测试数据来源于美国民用航班的数据&#xff0c;从1987年到2017年&#xff0c;有1.7亿条。 环境&#xff1a; centos 6.3&#xff0c;32G内存&#xff0c;24核 下载脚本&#x…

泛型数组

定义泛型数组 在写程序时&#xff0c;大家可能会遇到类似String[] list new String[8];的需求&#xff0c;这里可以定义String数组&#xff0c;当然我们也可以定义泛型数组&#xff0c;泛型数组的定义方法为 T[]&#xff0c;与String[]是一致的&#xff0c;下面看看用法&#…

是前端类库还是前端框架?

一、BootstrapBootstrap是一系列常用CSS和jQuery plugin的集合&#xff0c;典型的UI库&#xff0c;带给你的是栅格系统&#xff0c;是预置的按钮、表单、列表、导航、响应式等样式&#xff0c;它在你独立开发的时候非常有用。因为能节约用来设计网页的时间&#xff0c;而且这套…

Java泛型详解:<T>和Class<T>的使用,泛型类

单独的T 代表一个类型 &#xff0c;而 Class代表这个类型所对应的类&#xff0c; Class<&#xff1f;>表示类型不确定的类 E - Element (在集合中使用&#xff0c;因为集合中存放的是元素)T - Type&#xff08;Java 类&#xff09;K - Key&#xff08;键&#xff09;V - …

python入门知识大全_python基础知识有哪些

Python基础知识&#xff1a;1、引用和对象&#xff1b;2、可变数据类型和不可变数据类型&#xff1b;3、引用传递和值传递&#xff1b;4、深拷贝和浅拷贝&#xff1b;5、基本数据类型&#xff1b;6、关键字、标识符和内置函数&#xff1b;7、算术、赋值运算符等等。Python基础知…

Django开发1

Django开发1 初识Django1.安装django2.创建项目2.1 在终端2.2 Pycharm 3. 创建app4.快速上手4.1 再写一个页面4.2 templates模板4.3 静态文件4.3.1 static目录4.3.2 引用静态文件 5.模板语法//Django开发案例&#xff1a;联通新闻中心6.请求和响应案例&#xff1a;用户登录7.数…

编程式事务和声明式事物

编程式事务 声明式事物