1. 极度安全首页
  2. 网络安全工具

JNDI注入漏洞利用工具

JNDI注入利用工具,生成JNDI连接并启动后端相关服务,可用于Fastjson、Jackson等相关漏洞的验证。工具基于JNDI-Injection-Exploit的基础服务框架上,重新编写了攻击利用代码,支持更多更强大的功能,并加入了多种方式进行回显的支持。

本工具支持了利用 JNDI 注入构造多种恶意 payload,其中包括:

名称功能简介
BasicInfo获取服务器基础信息打印出 System.getProperties() 中的信息
Command命令执行反射调用 forkandexec 执行命令
DataSourceHack获取Spring DataSource 明文获取缓存在上下文中的 DataSource
DirList目录遍历使用 File 对象列目录
FileDelete文件删除使用 File 对象删除文件
FileRead文件读取使用 FileInputStream 读取文件
FileWrite文件写入使用 FileOutputStream 写文件
SQL Query执行SQL语句使用 JDBC 发出查询
SSRF访问内网应用发送 HTTP 请求,并将结果返回

对于具体功能的构建比较简单,几乎就是正常的功能性编程,只不过部分功能使用了反射,可能不易于阅读。

对于各项参数的配置使用了配置文件的方式,由于是在调用时会读取文件,并未将值进行缓存,所以可以随时修改配置文件中 payload 的值,无需重启服务。

除去基本功能,本工具加入了多种回显方式,使 JNDI 注入的结果能够返回,这样在研究或测试中可以更方便的看到结果,本攻击支持了如下回显方式:

名称功能简介
ExceptionEcho报错回显throw 一个异常,message 是我们执行的结果
OOBEcho带外回显向 dnslog 平台发送数据包携带执行结果
TomcatEchoTomcat 回显通过 Tomcat 获取 response 将结果写入
WebLogicEchoWebLogic 回显通过 WebLogic 获取 response 将结果写入

有了这些功能,我们就可以把 JNDI 注入活活玩成 webshell。

使用

使用源代码执行:

下载项目源代码:

  1. git clone git@github.com:JosephTribbianni/JNDI.git

执行 org.su18.server.ServerStart 的 main() 方法,可以在控制台中看到启动消息。

使用 jar 文件执行:

在 release 下载打包好的文件,解压压缩包,确保配置文件与 jar 文件位于同一目录下,请根据自定义需求修改端口号及其他配置项,运行 jar 文件:

java -jar JNDI-1.0-all.jar

查看生成的恶意类

可以使用 org.su18.asm.frame.Frame 类的 main() 方法生成 .class 文件进行查看。

执行后,会在项目根目录生成文件,使用任意手段 decompile 后可查看逻辑。

使用展示

这里利用 fastjson 结合 jndi 来进行部分功能使用展示:

命令执行 id :

JNDI注入漏洞利用工具-极度安全

原创文章,作者: 极度安全 ,转载请注明出处:https://www.secvery.com/2127.html