壹 介绍
首先我们要确认什么是通用性漏洞?什么是事件性漏洞?
- 通用型漏洞是指一类软件或设备都具有的漏洞。
- 事件型漏洞是指某一个具体网站或应用的漏洞,需要主动针对网站或应用进行。
说白了,通用型漏洞更普遍,而且很多都是开源的框架或者软件,而事件型漏洞比较单一只针对个别网站,是该网站特有的漏洞。
贰 思路
那我们如何追踪通用型漏洞呢?首先我们需要从网站或者公众号中,找到自己想要追踪的通用型漏洞,然后就会有一些有poc
的,一些没有poc
的,有poc
的很简单就可以复现和分析,这里我们就不具体说了,而没有poc
的就需要我们根据其文章的复现的图片,内容进行分析,然后找到框架或者软件对应的源码,这时候我们可用通过开发者对该框架或者软件的更新说明,进行代码对比,从而得到修改的点,然后进行代码审计分析,最后构造poc
。
叁 以CVE-2023-28432漏洞为例
3.1 简单分析漏洞情况
我们以前几天刚出现的CVE-2023-28432
漏洞为例子进行追踪,我们以赛博昆仑CERT
的【复现】MinIO信息泄露漏洞(CVE-2023-28432)风险通告为出发点分析。
首先我们大致了解一下这篇文章的排版:
- 最前面都是该漏洞的基础说明,如漏洞编号、漏洞形式、漏洞名称、漏洞影响版本等,所以通常情况下一个漏洞的说明或者复现。
- 然后就是漏洞的复现,这里包括了漏洞的复现和
poc
,现在我们看到的这篇文章是没有poc
的,只有复现截图。 - 接着就是一些修复建议、参考链接和各大安全厂商组织团队的广告。
我们主要关注的是漏洞复现部分,从漏洞复现图片中,我们可以很清楚的了解到,该漏洞是一个POST
请求,然后没有body
内容,并且响应的内容是一堆接口泄露,可以联想到是一个未授权漏洞和信息泄露漏洞这两个大类,在接着看请求头没有什么特殊的poc
,说明漏洞主要是接口导致的。
接着我们可以通过CVE
官网去查看该漏洞的详细和参考。
进入Search CVE List
搜索列表,搜索漏洞CVE-2023-28432
:
根据参考链接,我们可以很明显的看到该漏洞是在github
上开源的系统,该系统的官网链接为:minio
当然我们也可以直接去github
上找该系统,要找这种开源的系统,都是选择星数最多的项目:
接着我们可以通过参考链接,大致了解到该漏洞出现的版本以及位置:
当然我们也可以通过Security Advisories
查看:
进入到安全日志里,我们可以清楚的了解到,该框架是用golang
写的,并且漏洞出现的地方是因为会将系统的MINIO
环境变量返回到了cfg
中,并使用logger.LogIf
记录日志,可以看到没有做什么限制。
我们可以通过Patches
获取请求结点#16853
,定位到修复后的源码处,发现添加了一个哈希和鉴权:
大致漏洞情况已经了解了,我们将源码下载下来,进行进一步分析,注意这里下载的源码一定是在该漏洞修复前的源码:这里我们可以根据Security Advisories
查看修改前后的版本号:
我们到code
去获取未修复的源代码,只要比修复该漏洞之前的源代码就可以了,这里我们下载了RELEASE.2023-03-13T19-46-17Z
:
3.2 代码审计
根据前面安全厂商发布的漏洞公告,我们可以看到是通过接口路由触发的未授权漏洞,所以我们直接跳转到关键函数getServerSystemCfg
中:
回溯谁调用了函数:
首先我们大概分析发现第一个搜索到的函数是出现该漏洞的关键(其实在搜索和查找关键点时是很漫长的一个过程),可以发现有一个路由,有两个子路由,其中上面的路由调用的是空的方法,只有下面才是正确的漏洞回溯路径,而且用的也是Post
请求,地址是bootstrapRESTVersionPrefix + bootstrapRESTMethodVerify
,调用了函数server.VerifyHandler
:
查找bootstrapRESTMethodVerify
的路由,得到/verify
:
查找bootstrapRESTVersionPrefix
,得到/v1
:
拼接后得到/v1/verify
,由于是子路由,我们需要找主路由,得到bootstrapRESTPrefix
的路由是/minio/bootstrap
:
拼接后得到/minio/bootstrap/v1/verify
,接着继续回溯,发现没有上一级路由了,加上也没有其他body
构造,所以我们直接构造poc
:
/minio/bootstrap/v1/verify
3.3 复现
通过fofa
等搜索引擎,查找在线的环境:
肆 小结
对于一个通用型漏洞追踪的思路就是通过安全厂家或者安全组织发布的公告,获取基本信息,然后通过互联网查找该漏洞框架或者已经公开的poc
,进行分析和代码审计,获得最后的poc
,最后通过fofa
的搜索引擎找现有的环境复现。