大数跨境

Ghost博客曝出代码执行漏洞,OSCS开源社区建议开发者进行修复

Ghost博客曝出代码执行漏洞,OSCS开源社区建议开发者进行修复 OSCS
2022-06-17
0
导读:OSCS(开源软件供应链安全社区)致力于让每一个开源项目变的更安全,也帮助每一个开发者更安全的使用开源代码。

点击蓝字 · 关注我们

OSCS(开源软件供应链安全社区)致力于让每一个开源项目变的更安全,也帮助每一个开发者更安全的使用开源代码。


漏洞简述

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

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

漏洞等级:

中危

利用需要:

攻击者获得博客后台账户权限

利用成本:

影响版本:[*, 4.48.2),[5.0.0, 5.2.3) ,官方已在5.2.3、4.48.2版本中修复了此问题:https://github.com/TryGhost/Ghost/releases/tag/v5.2.3


漏洞分析

漏洞因为需要后台权限,有一定利用条件,有趣的点在于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文件,并记录文件路径

   

在 settings>General>Publication Language

处输入刚刚获得的路径,

如../../../content/files/2022/06/abc


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


参考链接

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

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

https://github.com/TryGhost/Ghost


使用墨菲安全的IDE插件帮您快速检测代码安全

在Jetbrains IDE插件市场搜索 “murphysec” 安装检测插件,一键检测一键修复~


了解更多

基于现行的法律法规约束下,OSCS(开源软件供应链安全社区)社区会第一时间发布开源项目最新的安全风险动态,包括开源组件安全漏洞、事件等信息,社区用户可通过邮件、企微、钉钉、飞书等订阅情报信息,如果您是开源项目作者也可加入oscs社区守护计划。

社区官网:

https://www.oscs1024.com

相关文档:

https://www.oscs1024.com/docs/oscs/

开源项目:

https://github.com/murphysecurity/murphysec



【声明】内容源于网络
0
0
OSCS
携手全球开发者,共建开源生态安全
内容 101
粉丝 0
OSCS 携手全球开发者,共建开源生态安全
总阅读27
粉丝0
内容101