漏洞深度分析orgslingbase存在JNDI注入漏洞
项目介绍
Apache Sling提供对可插入资源提供程序的支持。虽然这允许将自定义数据提供程序非常灵活和高效地集成到Sling中,但这种集成是在Sling的资源 API 级别上完成的。可能依赖于能够将资源适配到JCR节点并继续使用JCR API的遗留代码将不适用于此类资源提供者。
为了支持遗留代码,这个包提供了一个SPI接口org.apache.sling.jcr.base.spi.RepositoryMount,它扩展了JackrabbitRepository(并通过这个javax.jcr.Repository)。注册为RepositoryMount的服务使用服务注册属性 RepositoryMount.MOUNT_POINTS_KEY 注册自己,这是一个 String+ 属性,包含 JCR 树中的路径,其中挂载接管 JCR 节点的控制。RepositoryMount可以注册在一个或多个路径。
由于RepositoryMount扩展了JackrabbitRepository挂载的实现需要实现整个 JCR API。与ResourceProvider相比,这是很多工作,因此只有在需要支持使用 JCR API 的遗留代码时才应使用RepositoryMount 。
JCR 基础包提供 JCR 实用程序类和对存储库安装的支持。项目地址
https://github.com/apache/sling-org-apache-sling-jcr-base
https://sling.apache.org/漏洞概述
在 JDK 1.8.191 或更低版本中运行 Apache Sling JCR Base 且项目版本小于 3.1.12 时可能存在注入漏洞,由于 RepositoryAccessor.java 中的 getRepository 方法和 getRepositoryFromURL 方法对传入的参数验证不当导致 JNDI 或 RMI 注入漏洞。远程攻击者可以通过 JDNI 和 RMI 连接访问存储在服务器上的任意数据。影响版本
org.apache.sling:org.apache.sling.jcr.base@(- , 3.1.12)环境搭建
下载源码,运行构建即可。漏洞分析
sling 项目的jcr基础库(/sling-org-apache-sling-jcr-base)提供两个函数
RepositoryAccessor#getRepository 和 RepositoryAccessor#getRepositoryFromURL
其中 RepositoryAccessor#getRepositoryFromURL
这个函数的功能是根据给定的 URL 获取仓库对象 Repository,这个函数可能是为应用程序提供访问存储在远程位置的数据的方法
该函数将传入的 jndi name 和 内容传给类里的另一个函数 RepositoryAccessor#getRepository
这个函数的作用是根据给定的 URL 获取仓库对象 Repository。
函数的参数:url:一个字符串,表示仓库对象的 URL。
函数的返回值:如果成功获取仓库对象,则返回仓库对象。如果无法获取仓库对象,则抛出异常。
如果 URL 的前缀是 "jndi://",则函数会尝试从 JNDI 环境获取仓库对象。否则,它会使用 getRepository 函数尝试从 JNDI 和 RMI 两种途径获取仓库对象。
但是存在直接使用 initialContext.lookup(repositoryName) 的漏洞点,
仅存在一个if判断 jndiContext 是否为空或大小是否为 0,并未对用户可控的值进行检查
source点如下所示
lookup存在两个重载
看一下 lookup 的调用方法,传进 InitialContext#getURLOrDefaultInitCtx
lookup 拿到 name ,getURLScheme匹配 :和 /;之后获取链接内容,getURLContext 解释包含样例
For example, if the scheme id is "ldap", and the Context. URL_PKG_PREFIXES property contains "com.widget:com.wiz. jndi", the naming manager would attempt to load the following classes until one is successfully instantiated:
· com.widget.ldap.ldapURLContextFactory
· com.wiz.jndi.ldap.ldapURLContextFactory
· com.sun.jndi.url.ldap.ldapURLContextFactory
而我们可以控制 lookup 函数的参数,使客户端访问提前设置好的恶意的 RMI 服务链接来加载恶意的对象class 字节码文件来实例化,从而执行代码,完成利用。
该类并不存在任何黑/白名单对用户传入进行过滤,用户可直接传入rmi 恶意链接执行命令。确定该处存在 jndi注入,可被利用导致命令执行修复方式
组件 org.apache.sling:org.apache.sling.jcr.base 升级至 3.1.12 及以上版本参考链接
https://nvd.nist.gov/vuln/detail/CVE-2023-25141
查看更多安全漏洞: 快速查询安全漏洞 柒巧板
南北方人的生活习惯有哪些不同?北方人南方比北方冷正所谓一方水土养一方人,生活的环境不同,就造成了风俗习惯的不同。在我国,由于北方和南方的地理环境有着明显的差异,因此两方的生活习惯就有着很大的差别。接下来和大家一起看看,南北两方的
向往的生活开播口碑不佳,节目味道变了,张艺兴被吐槽普信男4月29日晚,向往的生活第六季第1期节目开播。这档节目已经陪伴观众六年,有非常高的知名度,这一季选择在海南录制,此前刘昊然沈腾等嘉宾前往录制的消息曾被媒体报道,所以首期节目有很高的
炖排骨时,记住2不放2窍门,肉香十足味道正,没腥味排骨在我们国家,可以说是受到了无数人的喜爱。在我们的餐桌上,经常都能够看到排骨的身影,可能是一道香芋蒸排骨,也可能是一道糖醋排骨,更有可能是一道炖排骨。许多人都喜欢吃炖排骨,但却总
江苏13市一季度主要经济数据出炉据江苏省统计局近日发布,一季度全省实现生产总值27859亿元,同比增长4。6。面对复杂严峻的国际环境和国内疫情频发影响,一季度江苏经济运行总体保持平稳态势。今年以来,全省统筹疫情防
MIT设计新实验或可观测超空间现象进入所谓超空间后,物体将沐浴在一种温暖的由大量粒子组成的光束下。(Shutterstock)科学家设计了一种实验,称有希望在实验室内看到科幻小说中描述的超空间(hyperspace
新疆遍地是热巴?别逗了,热巴在新疆也是现象级的美女文家有小甜椒儿(原创不易,请勿抄袭,欢迎个人转载分享)图来源网络(如有侵权请联系删除)新疆美女迪丽热巴火了,其实她的美貌比演技更受关注。迪丽热巴的美带有西域风格,可以很乖巧,可以很
刚知道,啤酒也会过期!过期后能不能喝?看完涨知识如果你也喜欢美食,点击关注,每天不断更新精彩内容!导语啤酒也会过期?过期后能不能喝?酿酒师告诉你真相,别不懂装懂!相信大家也知道,每年到了当下这个季节的时候,天气越来越燥热了,但是
每晚喝瓶啤酒,身体会出现哪些变化?看完,希望你能正确对待爱乐养生指南现如今,随着天气逐渐转暖,温度越来越高,马上就将迎来炎热的夏季。这个时候很多男性朋友也会习惯约上三五好友,坐在路边看边吃烧烤边喝啤酒,可以说是人们最爱吃的美食搭配。也有
刘强东成名不忘江苏父老,忍痛隐退保住兄弟们打下的江山2018年,明州事件彻底将刘强东拉下了神坛。这一年,刘强东被卷进了悉尼性侵案,也就是明州事件的总称。事情一经发酵,外界恨不得将刘强东打入十八层地狱。几乎是没有定论的情况,大众便将强
为什么百度百科要把中国南海说成南中国海我们先看一张百度百科搜索永暑礁的截图。(原创不易,觉得说的有道理请点赞)心细的读者或者地理知识强的读者肯定发现了其中的端倪,没有发现问题的读者也不要慌。大家一起来慢慢分析,将百度百
延迟退休,这5点不能忽视随着我国老龄人口的不断增加,国家养老基金的支付压力也越来越大,因此为了保障养老金的良性运作和可持续按时发放,延迟法定退休年龄成了一件迫在眉睫的事。因为单单在2020年这一个年度中,