【墨菲安全实验室】Ghost博客系统后台代码执行漏洞分析

漏洞简述

Ghost 是以Node.js语言开发的一款开源博客程序,在Github上其star为超过4万。

  • 6月15日,Ghost官方修复了一个RCE漏洞。由于Ghost调用的moment.js库,存在已知漏洞(CVE-2022-24785)导致攻击者可以通过帖子编辑器中的文件上传功能上传文件,进而执行任意代码。

  • 漏洞等级中危,利用需要攻击者获得博客后台账户权限,利用成本:

漏洞分析

漏洞因为需要后台权限,有一定利用条件,有趣的点在于Ghost的RCE漏洞是由于moment.js下的路径遍历和文件包含漏洞,再加上Ghost中的文件上传和指定locale功能。moment.js中的文件包含漏洞,在一般情况下可能影响较小,但结合某些功能设计或其他漏洞使得参数和内容可控,造成了RCE的产生。

Moment CVE-2022-24785

Moment.js 是一个用于解析、校验、操作、显示日期和时间的JavaScript 工具库,在Github上具有4万+的star。在4.4日,公开了一个moment.js的路径遍历漏洞和潜在的文件包含漏洞。漏洞触发点在lib/locale/locales.js文件的loadLocale方法中

aliasedRequire = require;
aliasedRequire('./locale/' + name);

Ghost路径穿越

在Ghost中造成执行命令的漏洞缺陷点是core/frontend/helpers/date.js的locale参数,漏洞触发点位于登录后台配置中的可自定义参数locale。

在后台(settings>General>Publication Language)可以看到默认为en。功能上对应的是为了支持多语言环境,预置了相应的语言配置文件,进行动态加载。

对应core/frontend/services/theme-engine/i18n/i18n.js中locale参数。

constructor(options = {}) {
this._basePath = options.basePath || __dirname;
this._locale = options.locale || this.defaultLocale();
this._stringMode = options.stringMode || 'dot';

this._strings = null;
}
......
defaultLocale() {
return 'en';
}

在date.js中会接收前端发送的locale参数,通过moment中的方法进行解析。

可以发现locale参数没有经过过滤直接拼接,因此如果能够指向一个攻击者可控的地址,则可以执行任意js代码。

Ghost文件上传

文章编辑器默认支持文件上传,并会按照原文件名上传到特定的本地目录,因此攻击者可以上传恶意的js(如evil.js),而后在locale参数填写控制加载对应路径。

漏洞验证

前提:经过Ghost身份验证的用户

1、docker启动Ghost

2、访问页面 http://localhost:3001/ghost,进行管理员配置

3、上传恶意js文件,并记录文件路径

4、在settings>General>Publication Language处输入刚刚获得的路径,如../../../content/files/2022/06/abc

5、刷新前端页面,可以发现恶意js文件被执行

参考链接

https://github.com/TryGhost/Ghost/security/advisories/GHSA-7v28-g2pq-ggg8

https://github.com/TryGhost/Ghost/commit/b82dc7ae7c61269352d86041f3ea3c42e389037a

https://github.com/TryGhost/Ghost

【使用墨菲安全的开源工具帮您快速检测代码安全】
墨菲安全旗下开源组件安全检测产品,为帮助每一个开发者更安全的使用开源代码,核心引擎已开源,欢迎广大开发者使用!

开源地址:https://github.com/murphysecurity/murphysec
产品官网:https://murphysec.com
IDE插件:欢迎在Jetbrains IDE插件市场搜索 “murphysec” 安装检测插件,一键检测一键修复~

CLI工具:

控制台详情:


墨菲安全是一家为您提供专业的软件供应链安全管理的科技公司,能力包括代码安全检测、开源组件许可证合规管理、云原生容器安全检测、软件成分分析(SCA)等,丰富的安全工具助您打造完备的软件开发安全能力(DevSecOps)。产品支持SaaS、私有化部署。公司核心团队来自百度、华为等企业,拥有超过十年的企业安全建设、安全产品研发及安全攻防经验。

【关于墨菲安全实验室】
墨菲安全实验室是墨菲未来科技旗下的安全研究团队,专注于软件供应链安全相关领域的技术研究,关注的方向包括:开源软件安全、程序分析、威胁情报分析、企业安全治理等。
 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值