某次做项目的时候遇到了XXL-JOB
,当时并未公开任何xxl-job的漏洞,于是有了下面的代码审计,找到一处API接口的RCE,拿下一个严重漏洞。
一、XXL-JOB简介
XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。简单来说,xxl-job用于管理分布式任务,若任务的管理功能出现未授权访问,将造成相当大的影响。
二、代码审计
1.下载xxl-job的源码,查看项目的开发框架、根据框架特性查找所有的API接口
访问xxl-job项目地址 ,查看项目信息:Java语言开发、maven项目
直接下载并使用IDEA打开,如下:
根据pom.xml
文件内容可以确定,项目中使用了Spring
、Freemarker
、Jackson
、Hessian
、MyBatis
等组件,可以先将上述组件涉及的漏洞列入代码审计的重点排查对象,包括:EL注入
、模板注入
、反序列化漏洞
、Sql注入
等
因为该项目使用的是Spring
框架,因此直接利用Spring
注解查找API接口:@(.*?)Mapping\(
根据查找到的接口梳理出API地址
/
/toLogin
/login
/logout
/help
/api
/jobcode
/jobcode/save
/jobgroup
/jobgroup/save
/jobgroup/update
/jobgroup/remove
/jobinfo
/jobinfo/pageList
/jobinfo/add
/jobinfo/reschedule
/jobinfo/remove
/jobinfo/pause
/jobinfo/resume
/jobinfo/trigger
/joblog
/joblog/getJobsByGroup
/joblog/pageList
/joblog/logDetailPage
/joblog/logDetailCat
/joblog/logKill
/joblog/clearLog
利用dirsearch
扫描目标,查找可未授权访问的API接口,找到/api
接口
2.利用找到的API接口,FUZZ目标网站&#