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

admin 2025年7月1日16:27:14评论26 views字数 937阅读3分7秒阅读模式

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漏洞挖掘

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年7月1日16:27:14
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   使用Github CodeQL进行0day漏洞挖掘https://cn-sec.com/archives/901406.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息