首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CVE-2023-41892:Craft CMS远程代码执行漏洞

作者:XbnWa@Timeline Sec 本文字数:2231 阅读时长:2~4min 声明:仅供学习参考使用,请勿用作违法用途,否则后果自负 0x01 简介 Craft CMS一个开源的内容管理系统...,它专注于用户友好的内容创建过程,逻辑清晰明了,是一个高度自由,高度自定义设计的平台吗,可以用来创建个人或企业网站也可以搭建企业级电子商务系统。...json字符串,在json中获取name的并移除new-rule-type的元素 接着,通过调用Craft::app->getConditions()方法获取条件服务对象,再创建条件对象 判断路由conditions...调用Action类的构造函数id, controller, 继续跟踪Controller,该类用于处理用户请求和响应, 这里主要看传入的id参数进行处理,遍历id参数是否包含在模块中, 包含则返回...true反之false 为true时,使用array_unshift函数,module插入modules数组的开头, 表示该模块通过了beforeAction方法的检查。

1.4K10

Switchquery:移动端秒级配置触达平台

tcp或websocket长连接:通过建立一条客户端服务端之间的长连接通道,此方案可以在发生配置信息变更后实时信息传递至客户端,但是需要耗费较大的服务器资源,来维护一条长连接通道。...通过调研,采取了一种配置信息服务端实时触达到客户端的新方案,方案的具体描述为:先搭建一个信息配置管理CMS平台,同时构建一个客户端获取配置信息的客户端组件,由用户在CMS配置信息,然后由CMS后台配置信息的版本号信息同步至统一网关...4) Switchquery CMS配置后台配置信息数据写入和保存一份静态数据jsonCDN,防止接口降级或者失败以后可以降级CDN拉取配置信息数据。...8) 开关配置:布尔开关默认不展示,整形或者字符串类型的配置类型需设置开关; 9) 开关描述:通过描述知道开关配置的用途; 04 收益 理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板...未来Switchquery配置平台会为更多的业务模块提供配置服务,同时赋能更多的App,支持一整套配置客户端组件控制后台CMS支持多App切换以及网关实时秒级触达的一整套秒级触达的高性能移动配置技术方案

19010
您找到你想要的搜索结果了吗?
是的
没有找到

618技术大揭秘:Switchquery秒级配置触达平台的设计与实现

02 技术原理 理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后通过表达式引擎解析表达式并取得正确的...2)tcp或websocket长连接:通过建立一条客户端服务端之间的长连接通道,此方案可以在发生配置信息变更后实时的信息传递至客户端,但是需要耗费较大的服务器资源,来维护一条长连接通道。...通过调研,采取了一种配置信息服务端实时触达到客户端的新方案,方案的具体描述为: 先搭建一个信息配置管理CMS平台,同时构建一个客户端获取配置信息的客户端组件,由用户在CMS配置信息,然后由CMS后台配置信息的版本号信息同步至统一网关...4)Switchquery CMS配置后台配置信息数据写入和保存一份静态数据jsonCDN,防止接口降级或者失败以后可以降级CDN拉取配置信息数据。...03 支持多APP 理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后通过表达式引擎解析表达式并取得正确的

20020

「内容管理系统」34个无头CMS应该在你的技术雷达上

2022年,我们的家庭和办公室拥有超过4000万台物联网设备。这包括所有的东西,我们厨房台面上的智能扬声器,到我们手腕上的人工智能设备,再到当地商场里的屏幕兜售亭。...这听起来会适得其反,但这个想法是,由于缺乏一个前端交付层-品牌前端工具可以使用任何他们想要的内容,这意味着它们可以传递内容以外的网站和应用程序,达到任何频道亭smartwatches甚至在虚拟现实耳机。...解耦的CMS以同样的方式工作,但是它提供了一些方便的前端工具,如模板和高级的拖放内容建模特性。因此,它有一个头部,它只是它解耦,允许组织在特别的基础上草拟其他前端工具。...Butter CMS的特性包括自定义页面类型,关系内容建模,网络钩子,CDN支持,多站点支持,测试环境,以及一个可以轻松定制的管理界面。...开发人员可以api、Docker支持、CSS框架支持以及Vue等流行的JavaScript框架支持中获益。js, React.js。, Ember.js。 可用性:免费下载。 6.

7.1K11

XView 架构升级之路

图2.升级阶段 02 升级方案 理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后通过表达式引擎解析表达式并取得正确的...,转换完成后通过表达式引擎解析表达式并取得正确的,通过事件解析引擎解析用户自定义事件并完成事件的绑定,完成解析赋值以及事件绑定后进行视图的渲染,最终将目标页面展示屏幕。...04 数据中心 理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后通过表达式引擎解析表达式并取得正确的...05 现状和未来规划 理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后通过表达式引擎解析表达式并取得正确的...06 XView实际案例 理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后通过表达式引擎解析表达式并取得正确的

25450

你的博客用不着什么JavaScript框架

作者 | Iain Bean 译者 | 王强 策划 | 小智 今年年初,终于决定将自己的网站基于 PHP 的 CMS 移植基于 JavaScript 的静态网站生成器(SSG)了。...想看看是否可以不用客户端 JavaScript 来构建功能完善的博客,这样就用不着什么插件来删除它了。于是转向了另一个选项: Eleventy 鼓励你按照自己的意愿构建网站。...Eleventy 为你提供了十种可以任意搭配的模板语言选项,包括 markdown、nunjucks 和 liquid;这意味着可以 Craft 中复制并粘贴旧的模板,更改文件扩展名,并做一些细微的调整就能运行在...Eleventry 还有一些让感到困惑的事情:有一阵子一直搞不懂它的分页功能,认为它只是帖子分页指定大小的一些组中,之后才意识可以动态生成全新的页面;还发现自己在同一文件中混用了模板语言:...黑暗模式切换——虽然可以只用 CSS 来实现,无需访问 cookies 或本地存储,但我没办法在页面之间保持设定的是否会在不久的将来在网站上加入 JavaScript 呢?

4.1K10

详解模板注入漏洞(上)

数据绑定示例 在模板中,开发人员需要为动态定义静态内容和占位符。在运行时,模板交由引擎处理,以映射模板中的动态引用。 Hello {{firstName}} {{lastName}}!...嵌套属性示例 像上面这样的嵌套属性并不会直接交由语言进行处理,相反,而是由引擎来解析占位符内的动态user.firstName。引擎直接调用方法或字段firstname。...在实践中,如果我们把自己限制在最流行的库中,当我们知道使用的语言时,我们可以注意力集中在23个潜在的库上面。 C#(StringTemplate,Sharepoint上动态使用的ASPX)。...在我们的练习中,我们还将用到Craft CMS,它是一个内部使用Twig的内容管理系统。 模板语法基础知识 Twig语法不仅简单,而且非常紧凑。下面是几个基本的变量绑定的例子。...它将提供一个非常简单的表单,其中只有一个字段。 JDK 16 即将发布,新特性速览! 在这个表单中,您可以提交一个简单的表达式来确认模板是否用于显示。下面的表达式进行减法运算。

1.4K20

微服务 day04:页面静态化

页面静态化以及页面发布的流程 业务流程 业务流程如下 获取模型数据 制作模板 对页面进行静态化 静态化生成的 html 页面存放在文件系统中 存放在文件系统的 html 页面发布服务器 二、FreeMarker...=:判断两个是否不等. 3 > 或者gt:判断左边是否大于右边 >= 或者 gte: 判断左边是否大于等于右边 < 或者 lt: 判断左边是否小于右边 <= 或者 lte...c} json字符串转成对象 一个例子: 其中用到了 assign标签,assign的作用是定义一个变量。...根据模板管理的流程,最终将模板信息存储 MongoDB 的 cms_template 中,模板文件存储 GridFS中。...cms_page找一个页面进行测试。注意:页面配置一定要正确,需设置正确的模板 id 和dataUrl。

1.9K10

分享 35 道 JavaScript 基础面试题

一个函数在另一个函数中定义时,就会发生闭包,即使在外部函数完成执行之后,内部函数也可以其外部函数访问变量。 4. JavaScript 中原型继承如何工作?...对象解构是一项功能,允许您对象中提取属性并以更简洁和可读的方式将它们绑定变量。它在处理复杂对象时简化了代码。 22.什么是ES6模块? ES6 模块是一种代码组织单独文件中的方法。...回调函数是作为参数传递另一个函数的函数,然后在外部函数内部调用该函数。回调是 JavaScript 中异步编程和事件处理的基础。 25. 什么是 Promise?...以及如何检查是否为 NaN? NaN 代表“Not a Number”,是一个特殊,表示数学运算中无法表示的结果。...要检查是否为 NaN,可以使用 isNaN() 函数或 Number.isNaN() 方法。 32. 如何检查一个是否是数组?

15310

35道JavaScript 基础内容面试题

一个函数在另一个函数中定义时,就会发生闭包,即使在外部函数完成执行之后,内部函数也可以其外部函数访问变量。 4. JavaScript 中原型继承如何工作?...对象解构是一项功能,允许您对象中提取属性并以更简洁和可读的方式将它们绑定变量。它在处理复杂对象时简化了代码。 22.什么是ES6模块? ES6 模块是一种代码组织单独文件中的方法。...回调函数是作为参数传递另一个函数的函数,然后在外部函数内部调用该函数。回调是 JavaScript 中异步编程和事件处理的基础。 25. 什么是 Promise?...以及如何检查是否为 NaN? NaN 代表“Not a Number”,是一个特殊,表示数学运算中无法表示的结果。...要检查是否为 NaN,可以使用 isNaN() 函数或 Number.isNaN() 方法。 32. 如何检查一个是否是数组?

6510

手把手教你用500行 Python 代码实现模板引擎

要在我们的程序中使用 HTML 模板,我们需要一个模板引擎:一个使用静态模板来描述页面的结构和静态内容的函数,以及提供动态数据插入模板动态上下文。...模板引擎模板和上下文结合起来生成完整的 HTML 字符串模板引擎的工作是解释模板,用真实数据替换动态片段。 支持的语法 模板引擎在它们支持的语法中有所不同。...渲染模板具体涉及: 管理动态上下文,数据的来源 执行逻辑元素 实现点访问和筛选执行 解析阶段传递什么呈现阶段是关键。 解析可以提供什么?有两种选择:我们称它们为解释和编译。...,即数据字典: 在创建对象时,我们会传递模板的文本,这样我们就可以只执行一次编译步骤,然后调用多次来重用编译后的结果。...CodeBuilder 对象保存了一个字符串列表,这些字符串一起作为最终的 Python 代码。它需要的另一个状态是当前的缩进级别: CodeBuilder 做的事并不多。

2.6K50

微服务 day09:Eureka、Feign、课程预览实现

3、微服务需要调用另一个微服务时 Eureka Server 中获取服务调用地址,进行远程调用。...0x04 服务注册 1、 cms 注册 Eureka Server 1)在 cms 服务中添加依赖 <!...下图是课程管理服务远程调用 CMS 服务的流程图: ? 工作流程如下: 1 、cms 服务将自己注册注册中心。 2、课程管理服务注册中心获取 cms 服务的地址。...") //这里可以所有服务做成一个枚举列表 //@FeignClient(value = XcServiceList.XC_SERVICE_MANAGE_CMS) public interface CmsPageClient...1、向 cms_page 表插入一条页面记录或者 cms_page 找一个页面进行测试。 注意:页面配置一定要正确,需设置正确的模板 id 和 dataUrl。 如下,是一条页面的记录。

1.1K30

DedeCMS v5.7 SP2后台SSTIRCE再到GetShell

,如果未安装则重定向安装向导页面,之后判断请求中upcache是否设置以及index.html是否存在,在我们进行漏洞利用时我们第一次访问网站主页时默认upcache为"1",即不为空(具体可见漏洞复现环节...之后在index.php中会通过数据库查询来获取homepageset的数据信息,并且templet字段的作为参数传递给MfTemplet函数: ?...,故而进入else语句中,之后在这会进行一个写文件操作,然后再L384调用loadCahe函数并将filename作为参数传递: ?...,过滤相关的敏感函数,而我们这里不会进入Save函数自然也就不会有函数限制,所以可以使用一切函数进行写shell以及执行命令等操作(当然:如果要过save函数也可以,因为是后台所以可以直接通过配置系统参数的方式来实现...'yes'时则调用"Runphp"并且将该属性标签以及作为参数进行传递,之后跟进RunPHP函数,该函数主要用于运行PHP代码,在这里,只是简单的数据对象中提取出来,做一些简单的字符串替换,便可成功执行代码

8.5K20

历代GC算法角度剖析ZGC

02 判断对象是否已死 理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后通过表达式引擎解析表达式并取得正确的...03 清除已死对象的方式 理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后通过表达式引擎解析表达式并取得正确的...04 历代垃圾收集器简介 理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新shouoji模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后通过表达式引擎解析表达式并取得正确的...又满了进行再次标记,此时会连带Survivor Region一起标记 (6)存活对象复制另一个Survivor Region (7)再次清理Eden Region和被标记过的Survivor Region...06 总结 理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后通过表达式引擎解析表达式并取得正确的

34710

模板注入漏洞全汇总

1、 模板引擎介绍 1.1 模板引擎介绍 在MVC的设计模式下,一般 Model 层中读取数据,然后数据传到 View 层渲染(渲染成 HTML 文件),而 View 层一般都会用到模板引擎...除了常规的 XSS 外,注入模板中的代码还有可能引发 RCE(远程代码执行)。通常来说,这类问题会在博客,CMS,wiki 中产生。虽然模板引擎本身会提供沙箱机制,但攻击者依然有许多手段绕过它。...通过传递传递参数到该函数中,可以调用任意 PHP 函数,注册 exec 为 filter 的回调函数并调用造成命令执行: ?...这些JavaScript变量的可以手工设置的,或者静态或动态JSON资源中获取,但只能进行XSS攻击。 Payload如下: ?...4.2 防御手段 对于不同的模板引擎,防御方案也不相同。但做好对用户输入的清理/过滤,将能大大的降低此类问题带来的安全威胁。另一个选择是创建一个安全加固/沙箱环境,禁用或删除潜在的危险指令。

8K20

styled-components 深入浅出 (一) : 基础使用

前言 styed-components 是一个基于 JavaScript 的样式库,它通过标签模板字符串的方式样式化组件,它允许我们使用 JavaScript 直接编写 CSS 样式,并且样式是组件级隔离...在网上找中文相关的资料不是很多,貌似国内用这个不多,于是就根据我的使用经历记录一下如何使用这个库,以及和大家一起解读一下源代码是如何实现的。该知识分为多篇文章分享记录。...通过 styled.tagname 这种标签模板字符串的语法来创建样式化组件,其中 tagname 就是 html 的标签名。...如果一个组件被另一个或多个组件包裹着,外层组件可以通过 forwardedAs 属性来传递多态属(as)性内部组件。...而临时属性不会传递最终渲染的 react 组件上。那假如我需要动态控制某些属性能不能传递最终渲染的 react 组件上时,就可以通过 shouldForwardProp 属性来控制。

56610

FreeMarker与JSP 2.0 + JSTL组合进行比较

知道当您另一个模板中包含/导入模板时,如果您没有启动模板名称/,它将相对于包含模板的目录进行解释。错误消息包含完整(已解析)的名称,因此您应该注意这一点。...当您模板调用Java方法时,您可能希望null作为参数传递 (因为该方法被设计为在Java语言中使用,其中的概念 null已知)。...在这种情况下,您可以利用FreeMarker的错误(我们不会修复,直到我们为null方法传递提供正确的解决方案):如果指定一个缺失的变量作为参数,那么它不会导致错误,但是null将被传递给该方法。...(或#import转换)一个动态构造的变量名(比如将名称存储在另一个变量中)?...如果你真的不能避免这样做(你应该是混淆的),你可以通过在一个字符串动态构建适当的FTL源代码,然后使用interpret 内置函数来解决这个问题。

5.4K40

纯手工打造车载车牌识别检测系统,现已开源!

但是当边界框变大时,我们可以CRAFT 模型检测字母的位置,这样每个字母的位置就可以非常精确; 最后,我们可以每个单词的边界框 CRAFT 传递 CRNN 模型,以预测处实际单词。...预测的车牌号码将以文本格式返回; 每个检测到的牌照(带不带识别后的文本都可以)推到另一个队列,最终将其广播到浏览器页面。...这个 consumer 在另一个进程上单独运行,它还必须尝试保持队列的大小固定为指定,以便以一致的帧速率显示帧。...显然,如果队列大小下降,那么帧率的下降是成比例的,反之亦然; 与此同时,在主进程中还会运行另一个线程,另一个队列获取预测和 GPS 数据。...总而言之,如果所有的优化都到位,那么 gpu 的数量 20 个减少一个实际上是可行的。如果进行了适当的优化,甚至一个 gpu 的资源都用不完。

1.4K10

构建Vue.js组件的10个技巧

组件可以在全局或本地加载 ? Vue.js提供了两种加载组件的方法:一种在Vue实例全局,另一种在组件级别。两种方法都有其自身的优点。 全局加载组件使其可以应用程序中的任何模板(包括子组件)访问。...必须的属性 有很多方法可以为组件创建props。您可以传递表示prop名称的字符串数组,也可以传入一个带有键作为prop名称和配置对象的对象。...Expected Number 对于更复杂的验证,我们可以函数传递给validator属性,该属性接收 prop 作为参数并返回true或false。...一个使用很多的功能是,运行 vue serve,后边跟上一个Vue组件的路径。...调用时,Vue将自动构建单个文件组件,CSS移动到外部CSS文件(可选,您也可以内联),以及创建 UMD 和 Common .js文件以导入其他JS项目中。 ?

2.1K10
领券