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,一经查实,立即删除!

相关文章

C# 对象与JSON串互相转换

DoNet2.0 需要借助于Newtonsoft.Json.dll 1 代码2 3 using System;4 using System.IO;5 using System.Text;6 using Newtonsoft.Json;7 8 namespace OfflineAcceptControl.UCTools9 { 10 public class JsonTools 11 { 12 // 从一个对象信息生成Json串 13 …

mysql 日期查询今天_Mysql 日期查询今天、昨天、近7天、近30天、本月、上一月、本季...

今天select * from 表名 where to_days(时间字段名) to_days(now());昨天SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) < 1近7天SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) < date(时间字段名)近30天SELECT * FROM 表名 whe…

java实现MD5加密

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

THINKPHP5判断当前浏览器请求方式

作用代码是否为 GET 请求if (Request::instance()->isGet())是否为 POST 请求if (Request::instance()->isPost())是否为 PUT 请求if (Request::instance()->isPut())是否为 DELETE 请求if (Request::instance()->isDelete())是否为 Ajax 请求if (Request::instanc…

jspwiki mysql_Wiki.js初体验

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

java中Map有哪些实现类

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

h2 mysql 兼容_H2内存数据库对sql语句的支持问题 sql放到mysql数据库中能跑

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼### The error may involve com.yrs.modules.classes.stu.teacher.mapper.ClassesStuTeacherMapper.queryStudentInfoByclasses### The error occurred while executing a query### SQL: SELECT ysi.stu_id, ysi.stu_name, ysi.stu…

poj1743 Musical Theme

神题&#xff01;&#xff01; 2333&#xff0c;要求可以给区间加减同一个数&#xff0c;然后我就懵逼了&#xff0c;&#xff0c;%%题解&#xff0c;可以用差分嘛2333 所以原来的区间长度差分之后就要减一了&#xff0c; 然后现在用sa搞出height数组&#xff0c;然后对于>l…

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

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

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

敏捷开发总结&#xff08;1&#xff09;软件研发过程 转载于:https://www.cnblogs.com/lexiaofei/p/6644326.html

mysql截取字符串中的部分内容_Mysql字符串截取及获取指定字符串中的数据

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航&#xff0c;为用户…

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

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

WPF 窗体边框处理

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

数据加密辅助类(默认编码UTF-8)

public final class SecurityUtil {private SecurityUtil() {}/*** 默认算法密钥*/private static final byte[] ENCRYPT_KEY { -81, 0, 105, 7, -32, 26, -49, 88 };public static final String CHARSET "UTF-8";/*** BASE64解码* * param key* return* throws Ex…

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

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

浅谈Spring之@Nullable、@NonNull注解

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

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

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

python中坐标怎么表示_如何在Python中以像素表示(有限)平面上的坐标

我假设你有十进制坐标&#xff0c;比如50.3869881&#xff0c;-4.6177269&#xff0c;南北优先。在因为你有一个相当小的地图&#xff0c;我们不需要担心地球的曲率&#xff0c;我们可以假设我们有一个线性地图&#xff0c;所以地图上点的(x&#xff0c;y)坐标将是x longitude…

2017.3.31 spring mvc教程(六)转发、重定向、ajax请求

学习的博客&#xff1a;http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本&#xff1a;4.2.0。博客的时间比较早&#xff0c;11年的&#xff0c;学习的是Spring3 MVC。不知道版本上有没有变化比较大的功能。 spring mvc教程&#xff08;六&#xff09;转发、重定向、a…