freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

什么?听说你还不知道CodeQL(上)
我有一个小毛驴我从来都不骑 2022-09-15 17:16:55 252470
所属地 浙江省

作者:天启@涂鸦智能安全实验室

0x01简介

官方的定义是:CodeQL 是开发人员用来自动化安全检查的分析引擎,安全研究人员用来执行变体分析。在 CodeQL 中,代码被视为数据。 安全漏洞、错误和其他错误被建模为可以针对从代码中提取的数据库执行的查询。 您可以运行由 GitHub 研究人员和社区贡献者编写的标准 CodeQL 查询,也可以编写自己的查询以用于自定义分析。 查找潜在错误的查询直接在源文件中突出显示结果。

按照我的理解:CodeQL其实就是一个自动化的代码审计扫描器,不过他保存了代码中所有的代码变量以及结构化信息!并且官方提供了很多现成的接口,你可以使用这些接口像写脚本一样,非常灵活地查询这些结构化的数据并且从中挖掘漏洞!我遇到挺多同学,他们都以为codeQL只能在线运行查询!所以就有了这篇文章!下面我就介绍一下,如何在本地安装使用codeQL。

0x02本地安装

GitHub没有完全开源codeQL,所以我们无法在网上找到源码,只能下载已经编译好的二进制文件!接下来我们需要下载两个仓库:二进制文件的仓库,以及包含规则的CodeQL仓库:

https://github.com/github/codeql-cli-binaries/releases

https://github.com/github/codeql

0x021 本地安装 Visual Studio Code

由于CodeQL是GitHub开源的,而GitHub又被微软全资收购了,且Visual Studio Code又是微软开源的,所以CodeQL只对Visual Studio Code做了全面友好的支持,我们如果需要本地使用CodeQL,那就不得不下载Visual Studio Code!

https://code.visualstudio.com/

0x022 本地安装CodeQL

直接在插件市场搜索CodeQL插件并安装

1663226477_6322d26d4de6e8244110b.png!small?1663226478555

配置CodeQL插件

1663226926_6322d42e3d1d92e2cf8ee.png!small?1663226927708

配置前面下载的二进制文件的绝对路径

1663227035_6322d49b24e9540f2ab35.png!small?1663227036083

至此本地CodeQL安装完成

0x03如何使用

VSCode打开前面下载的包含规则的CodeQL仓库文件夹,界面如下所示

1663228471_6322da37e1e338316bdee.png!small?1663228473428

进入/Users/tools/scanner/codeql/java/ql/src/Security/CWE/这个文件夹下,该文件夹下面是所有官方已经写好的通用的查询脚本,如下所示

1663228598_6322dab69eb9e1d5e1c81.png!small?1663228599293

我们如何才能快速找到我们需要的脚本呢?比如我想找到xss的相关查询脚本,这么多CWE-文件夹总不可能一个一个点开查找吧?有没有更好的办法呢?其实是有的!我们直接在命令行中使用  tree   /Users/tools/scanner/codeql/java/ql/src/Security/CWE/ 命令并且直接搜索 xss 如下所示,这样就找到了这个查询文件,直接鼠标右键-选择CodeQL:Run Queries in select files 就可以执行查询了

1663230829_6322e36d1d068710d279a.png!small?1663230829732

1663231277_6322e52d3e82b0f58f2db.png!small?1663231278369

如果没有漏洞,结果如下图所示

1663231533_6322e62d980ecf9274840.png!small?1663231534495

0x04.后言

该篇文章简单介绍一下CodeQL本地的安装使用.下一篇文章将介绍一下一些进阶的玩法!

本文作者能力有限,文章若有纰漏请读者不吝赐教!
WeChat:5ed0c42e63c9c2145990351ccaec4da5

漏洞悬赏计划:涂鸦智能安全响应中心(https://src.tuya.com)欢迎白帽子来探索。
招聘内推计划:涵盖安全开发、安全测试、代码审计、安全合规等所有方面的岗位,简历投递sec#tuya.com,请注明来源。

# 渗透测试 # web安全 # 渗透测试工具 # 代码审计 # CodeQL
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 我有一个小毛驴我从来都不骑 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
我有一个小毛驴我从来都不骑 LV.4
这家伙太懒了,还未填写个人描述!
  • 8 文章数
  • 8 关注者
什么?听说你还不知道CodeQL(中)
2022-09-19
SDL建设过程中安全人员如何进行能力沉淀(下)
2022-06-28
SDL建设过程中安全人员如何进行能力沉淀(上)
2022-06-27
文章目录