这是一款GUI版的JNDI注入工具
参考了 JNDIExploit 项目的部分代码
- Basic : 直接通过设置
javaCodeBase
属性值进行远程恶意类的加载 (利用要求很高) - Deserialization : 通过设置
javaSerializedData
属性值为一个反序列化漏洞利用链的序列化数据,在进行ldap查询时进行反序列化攻击本地的Gadgets (要求本地存在可利用的反序列化漏洞) - Tomcat : 通过利用在Tomcat中存在的
MemoryUserDatabaseFactory#getObjectInstance
方法进行XXE漏洞的触发 - TomcatCommonsConfiguration : 通过利用在Tomcat中存在的
BeanFactory
或者GenericNamingResourcesFactory
配合CommonsConfiguration依赖利用SystemConfiguration#setSystemProperties
进行系统属性的覆盖,进而能够再次使用Basic的方式进行JNDI注入 - TomcatEL : 通过利用在Tomcat中存在的
BeanFactory
类结合el-api依赖通过调用ELProcessor#eval
执行任意javascript代码进行JNDI的注入 - TomcatGroovy : 通过利用在Tomcat中存在的
BeanFactory
类结合Groovy依赖,利用GroovyShell#evaluate / GroovyShell#parse / GroovyClassLoader#parseClass
等多种方法进行任意的Groovy脚本的执行 - TomcatMVEL : 通过利用Tomcat中存在的
BeanFactory
类结合mvel依赖,利用ShellSession#exec
方法执行任意的mvel表达式 - TomcatOrDruidJdbc : 通过利用在dbcp-tomcat / commons-dbcp / tomcat-jdbc / druid等中存在的
BasicDataSourceFactory / DruidDataSourceFactory
等Factory类结合JDBC-driver进行特定的JDBC-attack - TomcatSnakeYaml : 通过利用在Tomcat中存在的
BeanFactory
类结合SnakeYaml依赖,利用Yaml#load
进行任意的yaml脚本的执行(这里内置了动态修改Jar包的功能) - TomcatXStream : 通过Tomcat中存在的
BeanFactory
类结合XStream依赖,利用XStream#fromXML
方法进行任意的xml的加载,可以通过XStream的攻击方法进行注入
- DnsLog : 支持dns查询
- Command : 支持命令执行
- ReverseShell : 执行简易的反弹shell的方法
- File : 支持在可以执行任意的脚本的使用使用在
/data
文件夹下的文件,进行特定的脚本文件执行(javascript代码 / Groovy脚本 / MVEL表达式 / yaml脚本 / 加载的xml文件) - JavaFile : 支持加载指定的.java内存马文件
注意
在内存马中,涉及路由都是/shell
,涉及传参都是cmd
Header头
- TomcatEcho : 支持Tomcat的回显马注入
- TomcatServlet : 支持Tomcat中间件在Servlet层的内存马注入
- TomcatListener : 支持在Tomcat中间件在Listener层的内存马注入
- TomcatFilter : 支持Tomcat中间件在Filter层的内存马注入
- TomcatExecutor : 支持Tomcat中间件在Executor层的内存马注入
- TomcatUpgrade : 支持Tomcat中间件在Upgrade层的内存马注入
- TomcatValve : 支持Tomcat中间件在Valve层的内存马注入
- TomcatWebsocket : 支持Tomcat中间件在Websocket层的内存马注入
- SpringEcho : 支持Spring中间件的回显🐎的注入
- SpringController : 支持Spring中间件在Controller层的回显🐎的注入
- SpringInterceptor : 支持Spring中间件在Interceptor层的回显🐎的注入
首先在jar包的同级目录创建data
文件夹,并复制本项目的data文件夹下内容
之后直接在图形化界面中进行目标环境的选择
- 头部分别是ldap服务的ip地址,端口和对应的http服务的端口号
- 中部从左到右分别是:JNDI注入方式的选择,对应Payload的选择, 特定参数的输入和对应的ldap查询链接的生成
- 尾部是一些日志的输出(选用log4j)
- 添加更多样化的内存马注入和注入方式
- 进行命令执行的优化(支持绕过RASP等防护)