CVE-2019-14540 exploit

中午突然想逛逛jackson 和 fastjson,发现了这个CVE,抱着学习的态度去写了一下利用,挺基础的,高手绕道,实现了有限制的 RCE。https://github.com/FasterXML/jackson-databind/issues/2410

漏洞简介

CVE-2019-14540 记录的 gadget 是 com.zaxxer.hikari.HikariConfig ,它来自 HikariCP 这个组件。影响的版本是jackson-databind <=2.7.9.6,2.8.11.4,2.9.9.3,对应的 commit 为 https://github.com/FasterXML/jackson-databind/commit/d4983c740fec7d5576b207a8c30a63d3ea7443de

同样也影响  fastjson,影响的版本是 <= 1.2.59。
修复的 commit 为 https://github.com/alibaba/fastjson/commit/5d09b913a533cf2d2eeea1124337681494804336

在 fastjson-blacklist 收录的 commit 为 https://github.com/LeadroyaL/fastjson-blacklist/commit/fe767f28b1e284e67277a2f1043581b11f2eccba

分析过程

我喜欢用 gradle 来管理项目,先依赖一个最新版的回来

观察 HikariConfig.java 的setter 和 getter 方法,稍微有点常识的人都能看出, setMetricRegistry  和 setHealthCheckRegistry  里有明显的lookup方法,下一步就是按照标准的剧本去利用一遍了,经典的jndi漏洞利用,老司机应该分分钟就搞定,但我从来没写过利用,就从头学习一下。

利用过程(常见的jndi利用)

首先,我利用的是 ldap 协议,需要在低版本(小于 java8u191)下利用,详细原理我不是很清楚,大致原理就是从远程加载一个 class文件,调用它的构造函数,在构造函数里可以执行任意代码。

然后,借用 https://github.com/mbechler/marshalsec.git 提供的转发功能,创建 ldap server,作用是转发到另一个 http server 上,使用非常方便。

然后编译一个 Exploit.class 出来,找个地方放好

然后在 Exploit.class 目录,开一个 http 服务

之后使用 jackson 进行反序列化

或者使用 fastjson 进行反序列化

即可触发弹计算器

文中代码的 github 地址:https://github.com/LeadroyaL/cve-2019-14540-exploit

参考链接:(搜关键词jndi其实挺多的)

https://www.restran.net/2018/10/29/fastjson-rce-notes/
https://paper.seebug.org/942/


=============================================================
随着访客的增多,LeadroyaL在本站流量的开支越来越多了,曾经1元能用1个月,现在1元只能用3天。如果觉得本文帮到了你,希望能够为服务器的流量稍微打赏一点,谢谢!

《CVE-2019-14540 exploit》有3个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

code