web-chians:一款全新的Java Payload生成框架

admin 2024年11月12日19:28:33评论77 views字数 6118阅读20分23秒阅读模式

简介

web-chians:一款全新的Java Payload生成框架

web-chains 包含但不限于以下功能:

  • Java 反序列化Payload生成
    • 支持的混淆:随机集合混淆、垃圾类插入、TC_RESET 填充、utf8 overlong encoding 混淆
  • Hessian 1/2 反序列化Payload生成
    • Hessian1 支持生成 HessianServlet 格式反序列化数据
    • 支持的混淆:随机集合混淆、垃圾类插入、utf8 overlong encoding 混淆
  • 字节码生成
    • 支持自定义类名
    • 支持自定义字节码版本
    • 支持生成TemplatesImpl格式 Payload:实现 AbstractTranslet 接口
    • 支持生成SnakeYaml Jar 格式 Payload:实现 javax.script.ScriptEngineFactory 接口
    • 支持生成Fastjson Groovy 格式 Payload:实现 ASTTransformation 接口
    • 支持生成 JavaWrapper 格式 Payload:添加 public static void _main(String[] argv) {} 方法
    • 支持生成 charsets.jar 格式 Payload
    • 内置 java echo generator(Jeg)、java memshell generator(Jmg),并根据实战进行魔改
    • ...
  • Exploit 模块
    • JNDI Exploit
    • Fake Mysql
    • JRMPListener
    • Tcp Server(Derby RCE)
    • HTTP Server

模块介绍

Payload Generate 模块

Payload生成模块

举一个栗子🌰,简单生成一个Java原生反序列化Payload,CB链:

web-chians:一款全新的Java Payload生成框架

Java反序列化生成(JavaNativePayload)

部分常用链展示:

  • CB链:CommonsBeanutils 19.x、CommonsBeanutils 18.x、CommonsBeanutils 1.6 版本
  • CC链:ommonCollection K1、CommonCollection K2、CommonCollection K3、CommonCollection K4
  • JSON相关链:Fastjson1、Fastjson2、Jackson
  • 二次反序列化相关:SignedObject 二次反序列化、RMIConnector 二次反序列化、C3p0 二次反序列化
  • DataSource 相关链:共计 13 个不同版本以及不同类的 getter 利用
  • C3p0:JNDI链、二次反序列化链、原生类加载链,支持两个不同的SUID版本
  • FindClass dnslog 探测类,搜集网上大部分gadget类,可探测100+个类。探测payload中间隔插入canary,可辅助判断哪些类被拉入黑名单导致探测失败。支持手动设置、文件读取,可自定义批量探测类

Hessian反序列化生成(HessianPayload)

  • 支持Hessian1、Hessian2版本的Payload
  • 部分Hessian链展示如下:
  • SwingLazyValue:JDK原生链加载BCEL
  • SwingLazyValue2:JDK原生链触发JNDI
  • SwingLazyValue3 + MethodUtil:JDK原生链执行任意字节码
  • UnixPrintService:JDK原生链,Linux命令注入
  • UnixPrintServiceLookup:JDK原生链,Linux命令注入
  • ProxyLazyValue + SerializationUtils:依赖spring,可实现二次反序列化
  • SpringAbstractBeanFactoryPointcutAdvisor:公开的spring jndi链
  • SpringPartiallyComparableAdvisorHolder:公开的spring jndi链
  • Xslt:本链做了整合,文件写入并加载Xslt文件实现字节码执行

例:xxl-job-admin/api hessian反序列化

web-chians:一款全新的Java Payload生成框架
web-chians:一款全新的Java Payload生成框架

字节码生成(BytecodePayload)

  • 支持常见渗透场景中,以下常用字节码生成:
  • 内置 Jmg 内存马注入工具
  • 内置 Jeg 回显利用工具
  • 命令执行字节码
  • http/dnslog 探测字节码
  • Sleep 探测字节码
  • 远程文件下载字节码
  • 远程文件下载并执行字节码
  • 反弹shell字节码
  • 写入文件字节码
  • 写入大文件字节码
  • 自定义字节码
web-chians:一款全新的Java Payload生成框架

其他 Payload 生成(OtherPayload)

  • 10+ 种 Jdbc url漏洞利用Payload,例如h2 js执行字节码、h2 groovy 执行命令、PostgreSQL jdbc的利用、mysql jdbc的利用等等
  • 10+ 种表达式注入Payload,例如Bcel执行字节码、JS执行字节码、EL执行字节码、Groovy执行字节码、Mvel执行字节码、Beanshell执行字节码
  • 支持 Snakeyaml 漏洞利用jar包生成、以及常见字符串解析payload生成
  • 支持 postgresql jdbc利用其中的 bean.xml 文件内容生成
  • 支持 Springboot下 charset.jar 包注内存马

例:生成becl调用jeg加载字节码实现不出网rce回显

web-chians:一款全新的Java Payload生成框架
web-chians:一款全新的Java Payload生成框架

PostgresQL (CVE-2022-21724)配合SpringBean加载字节码回显

web-chians:一款全新的Java Payload生成框架
web-chians:一款全新的Java Payload生成框架

JNDI Chains Exploit 模块

关于 JNDI Chains Exploit,由于是web端直接传入参数,根据当前时间戳生成一个简短的token,避免了在jndi payload中插入gadget参数的情况。同时提供了容错性,若没有匹配到任何token,默认返回最新生成的token,这样适用于 ldap 参数不可控的情况。

基于ObjectFactory的BeanFactory的一些利用:

class description remark
javax.el.ELProcessor#eval el表达式执行 tomcat自带,最常见的利用
groovy.lang.GroovyShell#evaluate Groovy表达式执行
org.mvel2.sh.ShellSession#exec mvel表达式执行
bsh.Interpreter#eval Beanshell表达式执行
org.yaml.snakeyaml.Yaml#load snakeyaml反序列化 springboot环境下测试成功
com.thoughtworks.xstream.XStream#fromXML xstream反序列化 xstream依赖需要在漏洞版本内
com.sun.glass.utils.NativeLibLoader 本地加载动态链接库 jdk自带类

适用于 BeanFactory 无法使用的场景,可替代的ObjectFactory的一些数据源工厂,可加载本地jdbc url,转为jdbc利用:

DataSource className description remark
org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory 加载本地jdbc url
org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory 加载本地jdbc url
org.apache.commons.dbcp.BasicDataSourceFactory 加载本地jdbc url
org.apache.commons.dbcp2.BasicDataSourceFactory 加载本地jdbc url
org.apache.tomcat.jdbc.pool.DataSourceFactory 加载本地jdbc url
com.alibaba.druid.pool.DruidDataSourceFactory 加载本地jdbc url 与 BasicDataSourceFactory 格式稍微不同;本地测试发现无限执行Payload
com.zaxxer.hikari.HikariJNDIFactory 加载本地jdbc url 与 BasicDataSourceFactory 格式稍微不同

使用示例

一、开启 JNDI 相关端口

默认为关闭状态

web-chians:一款全新的Java Payload生成框架

如果想自动化获取外网IP,请开启【Auto Fetch IP】选项

这里的 IP Address 是回连的IP,一般为公网IP

点击【Start】开启LDAP、HTTP服务

web-chians:一款全新的Java Payload生成框架
二、通过 DNSLog 探测链

该 Payload 适用于目标环境已配置DNS服务器,且DNS协议出网。

使用梭哈链,批量生成几十种 LDAP Payload URL,可以进行批量尝试

选择 JndiShowHandPayload -> DNSLogAndHttp,并配置好 DNSLog 地址

点击【Run】按钮,稍等片刻即可批量生成LDAP URL Payload地址

web-chians:一款全新的Java Payload生成框架

以Log4j漏洞为例,通过 Burpsuite 的 Intruder 模块批量发包

web-chians:一款全新的Java Payload生成框架

配置 Payload,以及根据实际情况取消URL编码

web-chians:一款全新的Java Payload生成框架

推荐使用单线程,并设置发包间隔至少为 3 秒

web-chians:一款全新的Java Payload生成框架

点击【Start attack】开始爆破

三、分析 DNSLog 结果

查看 DNSLog 平台,如果存在 DNSLog,说明一定存在字节码执行;如果没有任何DNSLog,存在以下可能性,需要自行排查:

  1. 发送的 Payload 被 WAF/RASP 拦截
    1. 解决办法:绕 WAF/RASP
  2. 目标服务器没有配置 DNS,或 DNS 协议不出网
    1. 解决办法:使用 Sleep 字节码,通过延迟判断利用链是否存在,或换用 HTTPReq gadget 进行判断,不使用 DNS 解析IP,直接通过IP发起请求,看 HTTP 协议是否出网
  3. 目标不存在常用链,或环境较为极端
    1. 解决办法:可根据 FindClass 等手段综合判断JDK版本、依赖,进行针对性利用或绕过。

如果进展顺利,会有很多 DNSLog 请求(只要出现一个 DNSLog 就可以直接R了):

web-chians:一款全新的Java Payload生成框架
web-chians:一款全新的Java Payload生成框架

如果存在 WebLog 说明 HTTP 出网

web-chians:一款全新的Java Payload生成框架

dnslog结果形如:

basic.dnslogandhttp.macos.bzz0e16c.eyes.sh
deser.jackson.templatesimpl.macos.bzz0e16c.eyes.sh
resourceref.tomcatelref.elconvert.macos.bzz0e16c.eyes.sh
reference.tomcatdbcp2jdbcattack.pgsql-jdbc-jndi.bean-xml.macos.bzz0e16c.eyes.sh

第一个字段含义

  1. basic:代表 JDK < 8u191的利用
  2. deser:代表使用的是 LDAP 反序列化,紧接着后面代表着是使用的反序列化链,例如cb1使用的是 CommonsBeanUtils1 链,jackson 代表使用的是 jackson 链
  3. resourceref:代表使用的是 Tomcat 下 BeanFactory 的利用,最常见的是 tomcatelref ,也就是EL表达式执行。
  4. reference:代表使用的是利用其他工厂类,用于对 BeanFactory 的绕过
四、选择可用链深入利用

basic.dnslogandhttp.macos.bzz0e16c.eyes.sh

该DNSLog结果对应的利用方式为如下(字节码列表可任意选择):

web-chians:一款全新的Java Payload生成框架

deser.jackson.templatesimpl.macos.bzz0e16c.eyes.sh

该DNSLog结果对应的利用方式为如下(字节码列表可任意选择):

web-chians:一款全新的Java Payload生成框架

resourceref.tomcatelref.elconvert.macos.bzz0e16c.eyes.sh

该DNSLog结果对应的利用方式为如下(字节码列表可任意选择):

web-chians:一款全新的Java Payload生成框架

reference.tomcatdbcp2jdbcattack.pgsql-jdbc-jndi.bean-xml.macos.bzz0e16c.eyes.sh

该DNSLog结果对应的利用方式为如下(字节码列表可任意选择):

web-chians:一款全新的Java Payload生成框架

由于部分gadget名称过长,可能在某些dnslog平台上无法回显,部分gadget做了alias别名操作,别名会在dnslog中出现,gadget与alias的对应列表如下:

Gadget 名称 别名
JndiBasicPayload basic
JndiReferencePayload reference
JndiResourceRefPayload ResourceRef
CommonsBeanutils1 cb1
CommonsBeanutils2 cb2
CommonsBeanutils3 cb3
CommonsBeanutils4 cb4
CommonsCollectionsK1 K1
CommonsCollectionsK2 K2
CommonsCollectionsK3 K3
CommonsCollectionsK4 K4
PostgreSqlJdbc4Jndi pgsql-jdbc-jndi
SnakeyamlJarConvert snake_convert
SnakeyamlJarSpi4JNDI snake_jar_jndi
SpringBeanXmlClassLoader bean-xml

Fake Mysql Chains Exploit 模块

通过 mysql 用户名进行传参,具体利用与 JNDI Chains Exploit 类似

web-chians:一款全新的Java Payload生成框架

批量生成几十种反序列化 Payload

web-chians:一款全新的Java Payload生成框架

放入burp中进行利用

web-chians:一款全新的Java Payload生成框架
web-chians:一款全新的Java Payload生成框架

JRMP Chains Exploit 模块

利用模块同 ysoserial 的 JRMPListener 模块

可配合 JRMPClient 链、JNDI 中的 RMI 反序列化注入使用,具体平台使用方法与 JNDI Chains Exploit 类似,不支持传参。

web-chians:一款全新的Java Payload生成框架

TCP Server 模块

将生成的 Payload 挂载到一个 TCP 端口上,主要用于Derby 反序列化RCE场景。

web-chians:一款全新的Java Payload生成框架

HTTP Server 模块

将生成的 Payload 挂载到HTTP端口上,方便某些 http url 的反连场合,用的较少,主要为了方便。

web-chians:一款全新的Java Payload生成框架

当前版本更新(v1.1.0)

  • [重要] 前端重构优化 @Ar3h
  • [重要] 提供 docker 启动脚本 @Ar3h @4ra1n
  • [重要] 提供了从 Jar 文件加载的插件系统 @Ar3h
  • [重要] 新增 h2 without js 全版本通杀链 @unam4
  • [功能] 基于 spring security 的登录功能 @springkill @4ra1n
  • [功能] 新增两种 equalsc3p0 jndi/jdbc@unam4
  • [功能] hessian 新增 groovy 利用链 @Ar3h
  • [功能] 字节码可添加 main 静态入口函数 @Ar3h
  • [BUG] 无法正确显示 favicon.ico 图标问题 @xcxmiku
  • [优化] server 探测新增 netty 框架探测 @Ar3h
  • [优化] 高版本 Oralce JDK 可以使用 BCEL 相关 @4ra1n
  • [优化] 优化某些仅 unix 类型的 gadget 提示信息 @4ra1n
  • [优化] 格式化输出日志,为日志附加颜色 @springkill
  • [优化] 启动时候检测 java 版本给出警告 @4ra1n
  • [优化] 优化拦截器逻辑 @ssrsec
  • [优化] 优化base64通用性 @ssrsec

工具地址

https://github.com/Java-Chains/web-chains

原文始发于微信公众号(台下言书):web-chians:一款全新的Java Payload生成框架

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

发表评论

匿名网友 填写信息