当XXL-JOB 2.2.0遇上不出网:手把手教你用GLUE_GROOVY打入Netty内存马(附完整哥斯拉Payload)

张开发
2026/5/28 16:09:30 15 分钟阅读
当XXL-JOB 2.2.0遇上不出网:手把手教你用GLUE_GROOVY打入Netty内存马(附完整哥斯拉Payload)
XXL-JOB 2.2.0不出网环境下的高级渗透技术解析在分布式任务调度系统的安全评估中XXL-JOB因其广泛部署而成为重点研究对象。当遇到目标服务器不出网且管理端口关闭的特殊场景时常规渗透手段往往失效。本文将深入剖析如何利用GLUE_GROOVY特性在Netty框架中植入内存马的技术细节提供一套完整的无反弹shell渗透方案。1. XXL-JOB漏洞环境深度分析XXL-JOB的架构设计分为admin管理端和executor执行端两个核心组件。在2.2.0及以下版本中执行端默认未配置身份验证机制这为攻击者提供了可乘之机。通过分析其网络通信模式我们可以发现三个关键攻击面REST API未授权访问执行端开放的9999端口接收未经认证的调度请求动态代码加载机制GLUE特性支持Groovy/Shell/Python等多语言代码实时加载Netty框架特性基于事件驱动的网络通信模型允许handler动态注入典型漏洞利用请求示例POST /run HTTP/1.1 Host: target_ip:9999 Content-Type: application/json { jobId: 1, executorHandler: demoJobHandler, glueType: GLUE_GROOVY, glueSource: 恶意代码片段 }2. 不出网环境的技术突破路径当目标服务器无法外连且管理后台不可达时传统反弹shell方式失效。此时需要采用更高级的内存驻留技术主要解决以下技术难点通信信道建立复用现有HTTP服务端口实现双向通信无文件落地避免触发安全设备的文件监控告警权限维持绕过常规进程检测机制技术对比表技术类型优点缺点适用场景反弹shell交互方便依赖出网常规环境WebShell隐蔽性强需文件写入有Web服务内存马无文件落地技术复杂不出网环境3. Netty内存马核心技术实现基于Netty框架的特性我们可以通过反射机制动态修改pipeline中的handler链。关键实现步骤包括定位NioEventLoop线程组ThreadGroup group Thread.currentThread().getThreadGroup(); Field threads group.getClass().getDecledField(threads); Thread[] allThreads (Thread[]) threads.get(group);注入自定义ChannelHandlerchannel.pipeline() .addLast(new IdleStateHandler(0, 0, 30, TimeUnit.SECONDS)) .addLast(new HttpServerCodec()) .addLast(new HttpObjectAggregator(5 * 1024 * 1024)) .addLast(new MaliciousHandler());实现加密通信模块public byte[] encrypt(byte[] data, boolean isEncrypt) { Cipher cipher Cipher.getInstance(AES); cipher.init(isEncrypt ? ENCRYPT_MODE : DECRYPT_MODE, new SecretKeySpec(key.getBytes(), AES)); return cipher.doFinal(data); }4. 完整攻击链构建与实践结合上述技术我们可以构建完整的攻击流程漏洞探测阶段端口扫描确认9999端口开放发送测试请求验证GLUE_SHELL执行权限检查系统网络出站限制情况载荷投递阶段构造包含内存马代码的Groovy脚本通过/run接口提交恶意任务验证handler是否成功注入后渗透阶段使用加密信道与内存马通信导出数据库凭证等敏感信息清理入侵痕迹保持隐蔽性关键数据库导出命令mysqldump -u root -proot_pwd --all-databases full_backup.sql在实际测试环境中这种技术方案成功绕过了传统安全防护设备的检测实现了在严格网络限制条件下的权限获取。值得注意的是这种高级技术应当仅用于合法的安全测试和防御研究任何未经授权的系统测试都可能违反法律法规。

更多文章