xxl-job Hessian2反序列化漏洞深入利用

admin 2024年10月8日12:45:30评论91 views字数 1226阅读4分5秒阅读模式

 

前言

xxl-job Hessian2反序列化漏洞本身是一个挺老的漏洞了,影响版本也比较老,在一次项目中碰到了xxl-job,其/api接口可以未授权访问存在hessian2反序列化漏洞,但是不出网,于是有了这次利用。

漏洞分析

XXL-JOB <= 2.0.2,其/xxl-job-admin/api接口可以未授权访问,该接口存在Hessian2反序列化漏洞。

xxl-job Hessian2反序列化漏洞深入利用

未授权是因为设置了@PermessionLimit(limit=false)导致的。

xxl-job Hessian2反序列化漏洞深入利用

invokeAdminService方法中调用了handle方法。

xxl-job Hessian2反序列化漏洞深入利用

handle方法中满足if条件后,调用了parseRequest方法。

xxl-job Hessian2反序列化漏洞深入利用

在parseRequest方法中,获取请求的数据后,会调用this.xxlRpcProviderFactory.getSerializer().deserialize方法对传入的数据进行反序列化。

xxl-job Hessian2反序列化漏洞深入利用

this.xxlRpcProviderFactory.getSerializer()返回的是HessianSerializer。

xxl-job Hessian2反序列化漏洞深入利用

其deserialize方法中进行了Hessian2反序列化。

xxl-job Hessian2反序列化漏洞深入利用

利用链构造

网上提到的大部分都是jndi注入利用,在不出网的情况下就难以利用,这里选择利用hessian jdk原生反序列化利用链,其原理就是通过SerializerFactory.setAllowNonSerializable(true)关闭Serializable派生类检查,使得没有继承Serializable的类也可以反序列化。

javax.swing.UIDefaults中的内部类ProxyLazyValue的createValue中存在类方法的反射调用,可以调用任意类的静态public方法,调用堆栈如下图:

xxl-job Hessian2反序列化漏洞深入利用

这里可以选择com.sun.org.apache.bcel.internal.util.JavaWrapper类的_main方法,加载恶意类的_main方法。

xxl-job Hessian2反序列化漏洞深入利用

也可以使用sun.reflect.misc.MethodUtil.invoke反射调用sun.misc.Unsafe.defineClass方法来加载字节码,然后再实例化这个类。

xxl-job Hessian2反序列化漏洞深入利用

回显利用

bcel

xxl-job Hessian2反序列化漏洞深入利用

invoke反射调用defineClass

发送第一个包加载类字节码。

xxl-job Hessian2反序列化漏洞深入利用

发送第二个包实例化该类。

xxl-job Hessian2反序列化漏洞深入利用

因为微信公众号和阿里云盘都无法直接分享压缩包文件,payload项目这部分就打包放星球了。师傅们可以自己构造利用。

参考链接

https://xz.aliyun.com/t/11091

https://yzddmr6.com/posts/swinglazyvalue-in-webshell/

https://blog.wanghw.cn/security/hessian-deserialization-jdk-rce-gadget.html

原文始发于微信公众号(良月安全):[漏洞利用]xxl-job Hessian2反序列化漏洞深入利用

 

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月8日12:45:30
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   xxl-job Hessian2反序列化漏洞深入利用https://cn-sec.com/archives/3240429.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息