Roboterh / JNDI-injector

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

JNDI-injector

这是一款GUI版的JNDI注入工具

参考了 JNDIExploit 项目的部分代码

支持的JNDI注入方式

  1. Basic : 直接通过设置javaCodeBase属性值进行远程恶意类的加载 (利用要求很高)
  2. Deserialization : 通过设置javaSerializedData属性值为一个反序列化漏洞利用链的序列化数据,在进行ldap查询时进行反序列化攻击本地的Gadgets (要求本地存在可利用的反序列化漏洞)
  3. Tomcat : 通过利用在Tomcat中存在的MemoryUserDatabaseFactory#getObjectInstance方法进行XXE漏洞的触发
  4. TomcatCommonsConfiguration : 通过利用在Tomcat中存在的BeanFactory或者GenericNamingResourcesFactory配合CommonsConfiguration依赖利用SystemConfiguration#setSystemProperties进行系统属性的覆盖,进而能够再次使用Basic的方式进行JNDI注入
  5. TomcatEL : 通过利用在Tomcat中存在的BeanFactory类结合el-api依赖通过调用ELProcessor#eval执行任意javascript代码进行JNDI的注入
  6. TomcatGroovy : 通过利用在Tomcat中存在的BeanFactory类结合Groovy依赖,利用GroovyShell#evaluate / GroovyShell#parse / GroovyClassLoader#parseClass等多种方法进行任意的Groovy脚本的执行
  7. TomcatMVEL : 通过利用Tomcat中存在的BeanFactory类结合mvel依赖,利用ShellSession#exec方法执行任意的mvel表达式
  8. TomcatOrDruidJdbc : 通过利用在dbcp-tomcat / commons-dbcp / tomcat-jdbc / druid等中存在的BasicDataSourceFactory / DruidDataSourceFactory等Factory类结合JDBC-driver进行特定的JDBC-attack
  9. TomcatSnakeYaml : 通过利用在Tomcat中存在的BeanFactory类结合SnakeYaml依赖,利用Yaml#load进行任意的yaml脚本的执行(这里内置了动态修改Jar包的功能)
  10. TomcatXStream : 通过Tomcat中存在的BeanFactory类结合XStream依赖,利用XStream#fromXML方法进行任意的xml的加载,可以通过XStream的攻击方法进行注入

支持的利用Payload

常见的Payload

特殊文件的指定

  • File : 支持在可以执行任意的脚本的使用使用在/data文件夹下的文件,进行特定的脚本文件执行(javascript代码 / Groovy脚本 / MVEL表达式 / yaml脚本 / 加载的xml文件)
  • JavaFile : 支持加载指定的.java内存马文件

内存马Payload

注意

在内存马中,涉及路由都是/shell,涉及传参都是cmdHeader头

  • 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层的回显🐎的注入

Usage

img.png

直接在图形化界面中进行目标环境的选择

  • 头部分别是ldap服务的ip地址,端口和对应的http服务的端口号
  • 中部从左到右分别是:JNDI注入方式的选择,对应Payload的选择, 特定参数的输入和对应的ldap查询链接的生成
  • 尾部是一些日志的输出(选用log4j)

TODO

  1. 支持命令行界面
  2. 添加更多样化的内存马注入和注入方式
  3. 进行命令执行的优化(支持绕过RASP等防护)

About


Languages

Language:Java 99.8%Language:JavaScript 0.1%Language:Groovy 0.0%