CVE-2021-47812CVE-2021-47812是GravCMS 1.10.7版本中的一个严重安全漏洞,CVSS评分高达9.8分(严重级别)。该漏洞存在于CMS的调度器(scheduler)功能端点中,允许未经身份验证的远程攻击者通过利用admin-nonce参数绕过安全验证机制,向系统注入任意YAML配置文件内容。攻击者可以将包含恶意PHP代码的有效载荷进行base64编码后注入到系统的自定义作业配置中,从而在服务器上实现任意代码执行。这意味着攻击者可以完全控制目标服务器,执行系统命令、上传恶意文件、建立后门访问等操作。由于该漏洞无需任何用户交互或认证即可被利用,且影响互联网上的所有暴露该端点的GravCMS实例,因此被评定为严重威胁级别。建议受影响的用户立即采取修复措施或实施临时缓解方案。
该漏洞的技术原理主要涉及以下几个层面:首先,GravCMS的scheduler端点存在身份验证缺陷,攻击者可以通过admin-nonce参数绕过管理员权限验证;其次,系统在处理YAML配置文件时存在注入漏洞,允许攻击者写入任意配置内容;最后,通过创建自定义作业并注入base64编码的PHP代码,攻击者可以在作业执行时触发代码执行。具体利用过程如下:攻击者构造包含恶意YAML配置的特殊请求,配置中定义一个自定义作业,该作业的command或args参数包含base64编码的PHP代码如system(base64_decode(...))。当scheduler执行该作业时,PHP代码会被解析执行,从而在服务器上运行任意系统命令。由于GravCMS使用Symfony YAML解析器处理配置,攻击者可以利用YAML的特定语法构造恶意载荷,实现配置注入和代码执行。漏洞的利用复杂度低,无需任何前置条件(如有效凭证或用户交互),对系统的机密性、完整性和可用性均造成严重影响。