1. 基本概念
(参考
)
jndi 简单的说就是 把一种功能服务,用另一种方式表现出来,这种方式就是jndi。
举个例子:
我想要获取磁盘上的 一个文件,假如说是“C:/aaa.txt”
正常的情况下我就要:File file =new File("C:/aaa.txt");
这样我就得到了文件对象,然后对干对象进行操作。
然而还可以使用 jndi来实现这种功能:
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");
Context ctx = new InitialContext(env);
//(以上3句可以这样写,其实这个部分就是启动jndi服务)
System.setProperty(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");
Context ctx = new InitialContext();
接下来
Object obj = ctx.lookup(“C:/aaa.txt”);
File file = (File)obj;
这样也获取了这个文件对像。
以下做一下简单总结:
- jndi是一组接口
- 我们自己可以实现这个接口,实现自己的一套jndi
- sun本身提供了很多的已经实现的jndi,可以看http://java.sun.com/products/jndi/downloads/index.html
点击 download进入:
这里提供了一些jndi实现,其中就包括 上面我们使用的com.sun.jndi.fscontext.RefFSContextFactory,叫做File System Service Provider, 1.2 Beta 3,还包括dns、rmi等的一些jndi,还有一个例子JNDI Demo Browser (source and binaries) 教我们自己 怎么样实现一个简单的jndi。每个下载里面的都有自己的例子。
- 在tomcat环境下,tomcat实现了一个自己的jndi,可以参见toncat的org.apache.naming.java.javaURLContextFactory,所以在tomcat中就不用前面2句话来启动 jndi了,tomcat容器在启动时候就做了。
另附:获取tomcat下的jndi 名称的方法
NamingEnumeration n=ctx.list("");
while(n.hasMoreElements()){
System.out.println(n.nextElement());
}
然后逐层往下找:
会有
UserTransaction: org.apache.naming.TransactionRef
env: org.apache.naming.NamingContext
Resources: org.apache.naming.resources.ProxyDirContext
JNDI可访问的现有的目录及服务有:
DNS、XNam 、Novell目录服务、LDAP(Lightweight Directory Access Protocol 轻型目录访问协议)、 CORBA对象服务、文件系统、Windows XP/2000/NT/Me/9x的注册表、RMI、DSML v1&v2、NIS。
2. JNDI访问RMI
3. JNDI访问LDAP
Go>>
分享到:
相关推荐
java asm jndi_JNDI-Injection-Exploit,用于log4j2漏洞验证 可执行程序为jar包,在命令行中运行以下命令: $ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address] 其中: -C ...
# JNDI-Inject-Exploit ## 免责声明 本工具仅面向**合法授权的企业安全测试**,如您需测试本工具的可用性请自行搭建靶机环境,在使用本工具进行检测时,您应确保该行为符合当地的法律法规,并且已经取得了足够的...
hibernate 3.1+tomcat 5.5.x(配置jndi)hibernate 3.1+tomcat 5.5.x(配置jndi)hibernate 3.1+tomcat 5.5.x(配置jndi)hibernate 3.1+tomcat 5.5.x(配置jndi)hibernate 3.1+tomcat 5.5.x(配置jndi)hibernate 3.1+...
简单我tomcat5.0中的JNDI应用
jboss配置MySql的JNDI
JNDI(Java Naming and Directory Interface)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI SPI的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,...
JNDI服务利用工具 RMI/LDAP,支持部分场景回显、内存shell,高版本JDK场景下利用等,fastjson rce命令执行,log4j rce命令执行 漏洞检测辅助工具
自定义jndi数据源factory类,用于解密jndi中的加密数据,解密方式为DES,具体可根据实际需求修改。
$ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address] where: -C - command executed in the remote classfile. (optional , default command is "open /Applications/...
jndi所依赖的jar包,fscontext.jar和providerutil.jar,jndi.jar 将jndi.jar复制到%JAVA_HOME%\jre\lib\ext目录下就可得到持久的扩展
Windows_7_下搭建LDAP服务器并使用JNDI Windows_7_下搭建LDAP服务器并使用JNDI Windows_7_下搭建LDAP服务器并使用JNDI
jndi,就是命名服务(n:naming)和目录服务(d:directory). 命名服务:把对象映射到方便记忆的名字的机制.可以通过域名系统dns来理解,例如我们访问百度,只要输入www.baidu.com而不是百度的IP地址. 目录服务:其实也是一种...
配置了tomcat之后发现jndi好简单啊,可是碰到了hibernate该怎么做呢,本例详细解析
TOMCAT8 JNDI对用户名和密码加密
在JAVA编程中对JNDI的支持.是一个开放的源码.
JNDI-Injection-Exploit-1.0-SNAPSHOT-all
1.1 Apache Tomcat各版本 1.2 Apache Tomcat Versions 1.3 Java事务处理总结 1.4 JavaBean中使用JDBC...1.22 JNDI配置原理详解 1.23 JSF+Seam框架学习心得 1.24 java jdbc驱动的四种类型 1.25 resource-ref元素
首先配置Tomcat服务器文件 ... <Resource name="jdbc/jndidemo" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="sa" password="1" driverClassName=...
jndi入门学习资料,介绍jndi基本原理,安装和使用,基本配置
如何在spring中等价配置得到原本由jndi配置实现的数据源? 现在的问题是:由于各种原因,当不想使用jndi方式,如何等价的在spring工程内部实现配置?