it'sit reported thatt 的变体

拍照搜题秒出答案,一键查看所有搜题记录

拍照搜题秒出答案,一键查看所有搜题记录

}

拍照搜题秒出答案,一键查看所有搜题记录

拍照搜题秒出答案,一键查看所有搜题记录

}

作者:菜丝@蚂蚁金服巴斯光年实驗室

Electron 是一款基于 Web 技术(HTML5 + Javascript + css)构建图形界面的开发框架基于 nodejs 和 Chromium 开发。因为无痛兼容 nodejs 包管理(npm)的大量功能丰富的模块相对于 native 实现降低了开發难度和迭代成本,受到了开发者的青睐

可以看到除了 lpFile 之外其他参数可以保持完全一致。ShellExecuteExW 也是类似的情况

ShellExecute 系列函数在这里埋了两个坑。首先是可能存在开发者原本打算传入 url却被解析成本地路径而变成打开文件甚至运行可执行文件;其次是关联命令行里包裹参数 "%1" 的双引號竟然是可以被闭合掉的。

在 MSDN 中直接说明了闭合引号这一行为:

    
            

    尝试启动非法的外部程序将导致异常退出

    此外对于官方给出的临时解决措施,其实也正是 Chromium 本身防止参数注入的办法即在 “--” 开关之后出现的类似 --no-sandbox 参数将视作文件名处理。

    同样地作者还是使用了 -chrome 参数实现了對 Firefox 特权域的跨浏览器脚本攻击利用。

    在 2012 年某即时通讯软件爆出一个远程命令执行漏洞在修复前 poc 就被恶作剧式地传播开来:

    漏洞成因极有鈳能是实现打开网址时没有为其加入 http:// 前缀而直接传给了 ShellExecute 函数,导致域名被系统当成路径名结合目录遍历技巧可执行程序安装盘符下任意命令。但由于可控的参数仅为 lpFile无法增加其他参数开关(能够实现参数注入是 url 场景而不是本地文件),实际利用效果不理想

    时至今日,您仍然可以在 Windows 上通过一行代码复现这个问题:

    
          

    代码将会打开一个资源管理器将路径指向一个存在的可执行文件,可实现命令执行

    想要測试 ShellExecute* 的诡异特性的,可以直接用这个脚本或者干脆在开始菜单、运行里输入 url。

    在这个伪协议的一个参数中期望的输入类型是 http(s) 协议的网址。但开发者居然使用 _mbsstr (是否包含子串)来判断网址的有效性而不是检查字符串的前缀。

    最后的利用通过返回上层路径的方式绕过了其Φ的关键字检测成功执行任意路径可执行文件:


    本文由 Seebug Paper 发布,如需转载请注明来源本文地址:

}

我要回帖

更多关于 it reported that 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信