CVE-2022-2073 Grav CMS Twig SSTI RCE 漏洞及最新版补丁绕过

渗透技巧 2年前 (2022) admin
879 0 0

★且听安全-点关注,不迷路!



★漏洞空间站-优质漏洞资源和小伙伴聚集地!


漏洞信息


Grav 是一个快速、简单、灵活、基于文件的开源网络平台,在 Github 上的 Star 达到 13.3k 。


Grav CMS 可以通过 Twig 来进行页面的渲染,曾经爆出过模板注入漏洞 CVE-2021-29440 ,但是修复不彻底, 近期监测又通报了 CVE-2022-2073 ,这个漏洞可以理解为是 CVE-2021-29440 补丁的绕过吧。影响最新版 v1.7.34 以下的版本。


Twig 渲染


Grav CMS 支持 Twig 模板引擎进行页面渲染:



对应在 `/user/pages` 页面模板目录下存在配置信息:


title: Homebody_classes: 'title-center title-h1h2'process:    markdown: true    twig: true


默认安装的 Twig 为 v1.x 系列:



接到请求后通过 `Twig#processSite` 来加载页面:



函数会调用 `$page#content` 来获取页面内容,如果开启了 Twig 渲染页面功能,将进入 `processTwig` 函数:



Twig 完成页面渲染的主要代码段如下:



CVE-2021-29440 及补丁


Twig 模板引擎的沙箱功能禁用了 PHP 函数,但是可以通过 `registerUndefinedFunctionCallback` 注册回调函数的方式执行 PHP 函数,而 Grav CMS 在 `Twig#init` 完成 Twig 定义时刚好就注册了回调过程,历史上 Grav CMS 就曾经在这个地方爆出过 RCE 漏洞 CVE-2021-29440 ,影响 v1.7.10 及以下版本,当时定义的 `registerUndefinedFilterCallback` 回调过程没有对 PHP 函数进行任何限制:



直接通过 `system(‘id’)` 就可以实现命令执行。在新版本中增加了危险函数检查:



函数黑名单如下:



常见的 PHP 执行命令、包含文件、读写文件以及回调处理等函数都加入了黑名单,对 PHP 才粗学浅没有找到遗漏的可利用函数,尝试在 PHP 函数名和括号间加入控制符号绕过黑名单也没有成功(小伙伴有兴趣可以找找漏掉的…)。


CVE-2022-2073


绕过上面的补丁非常简单,因为 Twig 模板渲染还可以使用过滤器来实现 RCE :



修复方式及绕过


v1.7.34 版本中修复了漏洞,补丁对比如下:




对过滤器 `filter` 增加了检查:



但是也很好绕过。



由于传播、利用此文档提供的信息而造成任何直接或间接的后果及损害,均由使用本人负责,且听安全及文章作者不为此承担任何责任。



★且听安全-点关注,不迷路!



★漏洞空间站-优质漏洞资源和小伙伴聚集地!

原文始发于微信公众号(且听安全):CVE-2022-2073 Grav CMS Twig SSTI RCE 漏洞及最新版补丁绕过

版权声明:admin 发表于 2022年7月17日 下午9:01。
转载请注明:CVE-2022-2073 Grav CMS Twig SSTI RCE 漏洞及最新版补丁绕过 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...