长亭百川云 - 文章详情

使用Github CodeQL进行0day漏洞挖掘

毕方安全实验室

58

2024-07-13

CodeQL介绍:

CodeQL 是一个语义代码分析引擎,它可以扫描发现代码库中的漏洞。使用 CodeQL,可以像对待数据一样查询代码。用户可以使用 ql 语言编写自定义规则识别软件中的漏洞,也可以使用ql自带的规则进行扫描。GitHub已免费提供CodeQL ,我们可以在GitHub项目中的Action功能来使用CodeQL

Github CodeQL使用:

登录github之后,先Fork一个项目,然后选择Security-Code scanning alerts-Set up code scanning:

然后选择CodeQL Analysis,如图:

支持的语言:C, C++, C#, Go, Java, JavaScript, TypeScript, Python, and Ruby developers。然后会创建一个Action的模板,一般不用改动,github会自动识别项目的开发语言。

提交commit即可,然后就可以在Action中看见任务了,等待扫描完成会发送邮件。

扫描完成之后在Security-Code scanning alerts就可以看到结果:

查看详情,查看路径:

也提供了漏洞示例,如图:

 案例:

在github找到个项目,扫描后发现一个任意文件读取:

 

分析代码,先用node启动一个http服务:

获取url,用?分割,然后判断最后字符串是否以/结尾,所以只需要不以/结尾的url就不会被加上index.html,这里传入/../../aaa为例

判断是否为/live_reload,然后拼接outDistRootDir目录

这个目录定义为空:

在利用path.normalize方法将路径规范化,查看文档:

结果:/abc,如图:

结果:/aaa/abc,如图:

最终的absPath为/aaa,然后调用fs.readFile读取/aaa文件,写入res,最终导 致任意文件读取,如图所示:

使用体验

总体感觉不错,比较方便,感觉对javascript支持比较好,测试了一些java和C的项目,经常遇到build错误,项目大了也耗时比较久。可以本地化基础到devsecops流程中,也可以用来批量扫一些开源项目,刷CVE等。

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2