Skip to content

charonlight/xxl-jobExploitGUI

Repository files navigation

0x01 工具简介

工具支持检测xxl-job多种常见漏洞,并且支持多种利用方式。工具提供直观友好的图像化界面,用户能够轻松进行操作和管理。支持空间测绘、批量扫描功能,用户可以同时对多个目标进行漏洞检测,极大地提高了扫描效率。还支持暂停扫描、终止扫描、自定义多线程扫描、自定义请求头、内置随机User-Agent头、http代理、socks代理、扫描结果导出为表格等等功能。

0x02 工具检查能力

工具目前支持如下漏洞的检测,我们也会持续添加poc和各种漏洞利用方式。

XXL-JOB-Admin 默认登陆密码
XXL-JOB-Admin 后台RCE  ( 工具支持利用模块 :  内存马注入  )
XXL-JOB-Admin 前台api未授权 hessian2反序列化  ( 工具支持利用模块 :  命令执行 内存马注入  )
XXL-JOB-Executor Restful API 未授权访问命令执行  ( 工具支持利用模块 :  命令执行  )
XXL-JOB-Executor 默认accessToken权限绕过  ( 工具支持利用模块 :  命令执行  )

工具也支持资产测绘和批量扫描

0x03 漏洞利用

Hessian2反序列化命令执行

Hessian2反序列化注入内存马

后台一键注入vagent内存马,需要再设置里面配置好Cookie (目前仅支持部分版本,且需管理端和执行端在同一台服务器)

目标中需要xxl-job的二级目录,注入添加的执行器和日志会进行自动删除

注入的内存马用的是vagent,其中冰蝎连接方式如下

链接:以 /faviconb 结尾

密码:自定义加解密协议

private byte[] Encrypt(byte[] data) {
    byte[] dt = new byte[data.length];
    for (int i = 0; i < data.length; i++) {
        dt[i] = (byte) (data[i] + 1);
    }
    try {
        java.io.ByteArrayOutputStream o = new java.io.ByteArrayOutputStream();
        java.util.zip.GZIPOutputStream g = new java.util.zip.GZIPOutputStream(o);
        g.write(dt);
        g.close();
        byte[] c = o.toByteArray();
        byte[] ct = new byte[c.length];

        for (int i = 0; i < c.length; i++) {
            ct[i] = (byte) (c[i] + 1);
        }
        return ct;
    } catch (Exception ignored) {
    }
    return data;
}


private byte[] Decrypt(byte[] data) {
    byte[] dt = new byte[data.length];
    for (int i = 0; i < data.length; i++) {
        dt[i] = (byte) (data[i] - 1);
    }
    try {
        java.io.ByteArrayInputStream t = new java.io.ByteArrayInputStream(dt);
        java.util.zip.GZIPInputStream i = new java.util.zip.GZIPInputStream(t, dt.length);
        byte[] c = r(i);
        byte[] ct = new byte[c.length];
        for (int b = 0; b < c.length; b++) {
            ct[b] = (byte) (c[b] - 1);
        }
        return ct;
    } catch (Exception ignored) {
    }
    return data;
}
private byte[] r(java.io.InputStream i) {
    byte[] temp = new byte[1024];
    java.io.ByteArrayOutputStream b = new java.io.ByteArrayOutputStream();
    int n;
    try {
        while((n = i.read(temp)) != -1) {b.write(temp, 0, n);
                                        }} catch (Exception ignored) {
    }
    return b.toByteArray();
}

XXL-JOB-Executor 漏洞检测和利用需要在目标上Executor的端口上扫描,默认是9999,支持无回显命令执行