利用Vulnhub复现漏洞 - Jackson-databind 反序列化漏洞(CVE-2017-7525)

本文档详细介绍了如何复现Vulnhub上的Jackson-databind漏洞(CVE-2017-7525和CVE-2017-17485)。通过理解漏洞原理和复现步骤,包括环境启动、端口设置、BurpSuite配置,展示了如何利用Jackson-databind的Polymorphic Deserialization特性进行代码执行。
摘要由CSDN通过智能技术生成

Vulnhub官方复现教程

https://vulhub.org/#/environments/jackson/CVE-2017-7525/

漏洞原理

Jackson-databind 支持 Polymorphic Deserialization 特性(默认情况下不开启),当 json 字符串转换的 Target class 中有 polymorph fields,即字段类型为接口、抽象类或 Object 类型时,攻击者可以通过在 json 字符串中指定变量的具体类型 (子类或接口实现类),来实现实例化指定的类,借助某些特殊的 class,如 TemplatesImpl,可以实现任意代码执行。

所以,本漏洞利用条件如下:

  • 开启 JacksonPolymorphicDeserialization,即调用以下任意方法

    objectMapper.enableDefaultTyping(); // default to using DefaultTyping.OBJECT_AND_NON_CONCRETE
    objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
    
  • Target class 需要有无参 constructor

  • Target class 中需要需要有字段类型为 Interface、abstract class、Object,并且使用的 Gadget 需要为其子类 / 实现接口

复现过程

启动环境

https://blog.csdn.net/JiangBuLiu/article/details/93853056
进入路径为

cd /root/vulhub/jackson/CVE-2017-7525

搭建及运行漏洞环境:

docker-compose build && docker-compose up -d

用时:2分钟
环境启动后,访问

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值