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

请添加图片描述

0x00 前言

漏洞详情

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

原理分析

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

file:///C:/Program%20Files/Typora/resources/updater/updater.html
查看update.html源码。在这里插入图片描述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中的对应元素上。
在这里插入图片描述此时我们注意到几个关键点:

labels数组输入可控;

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

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

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

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

恶意payload如下:

小tricks:

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

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

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

漏洞复现

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

![在这里插入图片描述](https://img-blog.csdnimg.cn/5a0b5b83b14d48409507e31ab7d08c03.jpeg) 现在将poc.txt文件重命名为poc.md,并使用typora打开![。](https://img-blog.csdnimg.cn/e6bc390073ee4646a5d8ae3276b23c15.jpeg) 演示版本为:![在这里插入图片描述](https://img-blog.csdnimg.cn/a64dfd5cdc524af7aa540a13b7833123.jpeg)

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

请添加图片描述
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/81688.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java随机数

package com.itheima;import java.util.Random;public class 生成随机数字 {public static void main(String[] args) {//创建对象Random r new Random();int number r.nextInt(100);//小括号里为范围 生成随机数(099) 范围一定从0开始 (左闭右开)System.out.println(number…

公司固定资产管理定制方案怎么写

有效的固定资产管理对企业的成功至关重要。然而,如何制定一套既符合公司需求又具有前瞻性的固定资产管理定制方案,是每个企业都需要面对的挑战。本文将从创新、流畅和清晰的角度出发,探讨如何撰写一份成功的固定资产管理定制方案。 创新  …

Spring实例化源码解析(一)

invokeBeanFactoryPostProcessors 前言 AbstractApplicationContext类的refresh方法是spring实例化流程的开始。本章主要是介绍invokeBeanFactoryPostProcessors(beanFactory)方法,对其内部源码进行详细分析。接下来就来看看这句简单的代码后面具体做了什么。Spri…

Java后端使用POST请求向mysql中插入Json数据的问题

1.后端请求正常 但数据表中value没有值 原因 json数据属性不符合spring解析格式,json属性名称的大写字母不符合spring要求 以下为为错误示范 1 Test 以大写字母开头, 2 tTest 小写字母开头,但是第二个字母是大写解决方案 实体类属性加上Jso…

R语言绘图-3-Circular-barplot图

0. 参考: https://r-graph-gallery.com/web-circular-barplot-with-R-and-ggplot2.html 1. 说明: 利用 ggplot 绘制 环状的条形图 (circular barplot),并且每个条带按照数值大小进行排列。 2 绘图代码: 注意:绘图代码中的字体…

获取四个季度的最后一天

package test; import java.time.LocalDate; import java.time.Month; import java.time.Year;public class lastjidu {public static void main(String[] args) {LocalDate lastDayOfCurrentQuarter getLastDayOfCurrentQuarter();System.out.println("当前季度的最后一…

构建本地Web小游戏网站:Ubuntu下的快速部署与公网用户远程访问

文章目录 前言1. 本地环境服务搭建2. 局域网测试访问3. 内网穿透3.1 ubuntu本地安装cpolar内网穿透3.2 创建隧道3.3 测试公网访问 4. 配置固定二级子域名4.1 保留一个二级子域名4.2 配置二级子域名4.3 测试访问公网固定二级子域名 前言 网:我们通常说的是互联网&am…

redis集群部署

redis集群部署 本次部署为三台服务器,部署三主集群和三主三从集群 1.IP主从规划 规划IP主机名192.168.2.57master192.168.2.197slaves1192.168.2.43slaves2 三个主节点分别是:192.168.2.57:6379、192.168.2.197:6379、192.168.2.43:6379 三个从节点…

C++QT day 5

实现一个图形类(Shape),包含受保护成员属性:周长、面积, 公共成员函数:特殊成员函数书写 定义一个圆形类(Circle),继承自图形类,包含私有属性:半…

linus调试器---gdb的操作介绍

目录 一.背景 二.gdb的常用的操作介绍 小技巧:gdb会记住上一次的命令,按回车即可打出上次的命令。 1.看代码 2.打断点 3.删断点 4.禁用与开启断点 5.查看断点信息 6.调试 7.调试 8.查看变量 9.运行至某行 10.打印变量值 11.从一断点直接运行…

决策树案例分析

决策树(Decision Tree)常用于研究类别归属和预测关系的模型,比如是否抽烟、是否喝酒、年龄、体重等4项个人特征可能会影响到‘是否患癌症’,上述4项个人特征称作‘特征’,也即自变量(影响因素X),‘是否患癌…

【面试刷题】——Linux基础命令

Linux基础命令是在Linux操作系统中执行常见任务的一组命令。以下是一些常用的Linux基础命令,它们用于管理文件系统、执行系统任务、查看文件内容等。 文件和目录操作: ls: 列出目录中的文件和子目录。 pwd: 显示当前工作目录的路径。 cd: 更改当前工作…

超低功耗段码LCD液晶显示驱动IC-VKL144A/BQFN48超小体积液晶驱动

产品品牌:永嘉微电/VINKA 封装形式:TSSOP48/QFN48L 产品年份:新年份 沈先生 135 、547/44,703 原厂,工程服务,技术支持! VKL144A/B 概述: VKL144A/B 是一个点阵式存储映射的LCD 驱动器,可…

AI助力安全监管:TSINGSEE视频智能分析系统烟火识别算法

水火无情人有情,火灾一旦发生没有被及时发现,就能在极短的时间内酿成无法挽回的大祸,所以烟火的监管与处理极为重要。为了让火患在刚发生时就能得到扼制,TSINGSEE青犀AI智能分析网关烟火识别算法具有重要意义。 TSINGSEE青犀AI智能…

国际版腾讯云/阿里云:全站加快有哪些功用?有哪些优势?适用于什么场景?

腾讯云全站加快有哪些功用?有哪些优势?适用于什么场景? 产品功用 全站加快 ECDN 经过在全球各区域部署加快节点,有用下降跨国拜访推迟,保证全球加快作用。 最优链路 各加快节点两两相连,实时勘探&#xff0…

MySQL BufferPool缓存与Redo日志是如何提升事务性能的

文章目录 引言一、BufferPool缓存的作用与优势1.1 BufferPool缓存的定义与作用1.2 BufferPool缓存的作用1.3 Change Buffer 作用 二、BufferPool缓存的优势2.1 减少磁盘IO操作的次数2.2 提高数据的读取速度2.3 减轻磁盘负载,提升整体系统性能 三、BufferPool缓存的工…

web浏览器公网远程访问jupyter notebook【内网穿透】

文章目录 前言1. Python环境安装2. Jupyter 安装3. 启动Jupyter Notebook4. 远程访问4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5. 固定公网地址 前言 Jupyter Notebook,它是一个交互式的数据科学和计算环境,支持多种编程语言,如…

Day14 03-Shell函数定义及应用

文章目录 1.11 Shell函数定义及应用 1.11 Shell函数定义及应用 函数代表着一个或一组命令的集合,表示一个功能模块,常用于模块化编程,通常能提升重复利用和简化复杂程序。以下是关于函数的一些重要说明: 在shell中,函…

选择器进阶与表单表格

华子目录 选择器并集选择器后代选择器子代选择器伪类选择器伪元素选择器结构选择器属性选择器相邻选择器 表单(form)label标签 表格(table标签)合并单元格 选择器 下面是我们之前学习过的选择器 *{}:通配符选择器&am…

GaussDB(DWS)云原生数仓技术解析:湖仓一体,体验与大数据互联互通

文章目录 前言一、关于数据仓库需求场景分类二、数据仓库线下部署场景2.1、线下部署场景介绍及优劣势说明2.2、线下部署场景对应的客户需求 三、数据仓库公有云部署场景3.1、公有云部署场景介绍及优劣势说明3.2、公有云部署场景对应的客户需求 四、为何重视数据共享&#xff08…