反序列化工具链的自动发掘

作者:{fr4nk}@ArkTeam

原文作者:Ian Haken

原文标题:Automated Discovery of Deserialization Gadget Chains

原文会议:Black Hat USA 2018

近年来反序列化漏洞被持续挖掘来进行网络攻击,2015年Frohoff和Lawrence公布了一个Apache Commons工具集远程代码执行漏洞。随后Java反序列化漏洞飙升,去年Black Hat大会上,Muñoz和Miroshis提出了对危险JSON反序列化库进行的研究。由于很多自动化检测技术都集中在漏洞触发的入口点,很大程度上找到一个可进行漏洞利用的工具链仍然需要大量的手工操作。

在原文中,作者对已有的反序列化漏洞利用工具进行了调研分析,其中ysoserial主要是对某些特定库以及JDK ObjectInputStream的漏洞利用。但当遇到非标准库的情况下,这些工具则往往无法有效利用。作者针对Java提出了一种可自动发现反序列化工具链的技术,并研发了基于Java字节码发掘反序列化工具链的分析工具Gadget Inspector。

图1 Gadget inspector示意图

在研发过程中作者通过枚举war包中类、方法的层次关系,发掘了直通数据流和调用图,并在此基础上使用已知的tricks枚举了可能源,最后在数据流的调用图中使用BFS算法发掘工具链。在性能表现上,Gadget Inspector支持对最受欢迎的前100个Java库的检测,并且在检测效果中可以发掘一些最新的工具链。虽然有少量的误报,但这些误报大多源于反射链。

图2 Gadget inspector发掘的不同入口点

对Netflix app的部分检测结果如下:

图3 部分Netflix 内部Web应用程序检测结果

最后,作者发布了一个利用这种方法的开源工具包,用在内部应用程序和开源项目中并开发出更多反序列化漏洞利用程序。

工具链接:https://github.com/JackOfMostTrades/gadgetinspector

发表评论

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