Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/Roboterh/JNDI-injector


https://github.com/Roboterh/JNDI-injector

Last synced: 3 months ago
JSON representation

Awesome Lists containing this project

README

        

# JNDI-injector

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

参考了 [JNDIExploit](https://github.com/feihong-cs/JNDIExploit) 项目的部分代码

## 支持的JNDI注入方式

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

## 支持的利用Payload

### 常见的Payload

- [DnsLog](src/main/java/net/roboterh/injector/enums/PayloadEnum.java) : 支持dns查询
- [Command](src/main/java/net/roboterh/injector/enums/PayloadEnum.java) : 支持命令执行
- [ReverseShell](src/main/java/net/roboterh/injector/enums/PayloadEnum.java) : 执行简易的反弹shell的方法

### 特殊文件的指定

- [File](src/main/java/net/roboterh/injector/enums/PayloadEnum.java) : 支持在可以执行任意的脚本的使用使用在`/data`文件夹下的文件,进行特定的脚本文件执行(javascript代码 / Groovy脚本 / MVEL表达式 / yaml脚本 / 加载的xml文件)
- [JavaFile](src/main/java/net/roboterh/injector/enums/PayloadEnum.java) : 支持加载指定的.java内存马文件

### 内存马Payload

**注意**

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

- [TomcatEcho](src/main/java/net/roboterh/injector/templates/TomcatEcho.java) : 支持Tomcat的回显马注入
- [TomcatServlet](src/main/java/net/roboterh/injector/templates/TomcatServlet.java) : 支持Tomcat中间件在Servlet层的内存马注入
- [TomcatListener](src/main/java/net/roboterh/injector/templates/TomcatListener.java) : 支持在Tomcat中间件在Listener层的内存马注入
- [TomcatFilter](src/main/java/net/roboterh/injector/templates/TomcatFilter.java) : 支持Tomcat中间件在Filter层的内存马注入
- [TomcatExecutor](src/main/java/net/roboterh/injector/templates/TomcatExecutor.java) : 支持Tomcat中间件在Executor层的内存马注入
- [TomcatUpgrade](src/main/java/net/roboterh/injector/templates/TomcatUpgrade.java) : 支持Tomcat中间件在Upgrade层的内存马注入
- [TomcatValve](src/main/java/net/roboterh/injector/templates/TomcatValve.java) : 支持Tomcat中间件在Valve层的内存马注入
- [TomcatWebsocket](src/main/java/net/roboterh/injector/templates/TomcatWebsocket.java) : 支持Tomcat中间件在Websocket层的内存马注入
- [SpringEcho](src/main/java/net/roboterh/injector/templates/SpringEcho.java) : 支持Spring中间件的回显🐎的注入
- [SpringController](src/main/java/net/roboterh/injector/templates/SpringController.java) : 支持Spring中间件在Controller层的回显🐎的注入
- [SpringInterceptor](src/main/java/net/roboterh/injector/templates/SpringInterceptor.java) : 支持Spring中间件在Interceptor层的回显🐎的注入

## Usage

![img.png](img.png)

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

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

## TODO

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