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

渗透技巧 2年前 (2022) admin
879 0 0

CodeQL介绍:

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

Github CodeQL使用:

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

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

后选择CodeQL Analysis,如图:

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

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

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

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

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

扫描完成之后在Security-Code scanning alerts就可以看到结果:使用Github  CodeQL进行0day漏洞挖掘

查看详情,查看路径:使用Github  CodeQL进行0day漏洞挖掘

也提供了漏洞示例,如图:使用Github  CodeQL进行0day漏洞挖掘

 案例:

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

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

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

分析代码,先用node启动一个http服务:使用Github  CodeQL进行0day漏洞挖掘

获取url,用?分割,然后判断最后字符串是否以/结尾,所以只需要不以/结尾的url就不会被加上index.html,这里传入/../../aaa为例使用Github  CodeQL进行0day漏洞挖掘

判断是否为/live_reload,然后拼接outDistRootDir目录使用Github  CodeQL进行0day漏洞挖掘

这个目录定义为空:使用Github  CodeQL进行0day漏洞挖掘

在利用path.normalize方法将路径规范化,查看文档:使用Github  CodeQL进行0day漏洞挖掘使用Github  CodeQL进行0day漏洞挖掘

结果:/abc,如图:

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

结果:/aaa/abc,如图:使用Github  CodeQL进行0day漏洞挖掘

最终的absPath为/aaa,然后调用fs.readFile读取/aaa文件,写入res,最终导 致任意文件读取,如图所示:使用Github  CodeQL进行0day漏洞挖掘使用Github  CodeQL进行0day漏洞挖掘


使用体验

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

原文始发于微信公众号(毕方安全实验室):使用Github CodeQL进行0day漏洞挖掘

版权声明:admin 发表于 2022年3月1日 下午8:17。
转载请注明:使用Github CodeQL进行0day漏洞挖掘 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...