freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 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自动化漏洞检测入门
Notadmin 2024-09-04 18:07:50 183102

Codeql简介

codeql是一个可以对代码进行分析的引擎, 安全人员可以用它作为挖洞的辅助或者直接进行挖掘漏洞,节省进行重复操作的精力。

Codeql组成

Codeql主要由两个部分组成,解析引擎和SDK

解析引擎:用来解析我们编写的规则,本身不开源,可以直接在官网下载二进制文件使用

SDK:包含大部分现成的漏洞规则,可以利用其编写自定义规则。完全开源

引擎下载地址:https://github.com/github/codeql-cli-binaries/releases

SDK下载地址:https://github.com/Semmle/ql

CodeQL的使用协议里禁止在企业的CI/CD里部署

安装过程

新建一个codeql文件夹,并且从官网下载引擎以及SDK

引擎下载:https://github.com/github/codeql-cli-binaries/releases

SDK下载:git clone https://github.com/Semmle/ql

codesql文档:https://codeql.github.com/docs/

下载以后在codeql目录中有两个文件夹

1725443841_66d82f01b80a6d32ba5a5.png!small?1725443842565

设置codeql引擎的环境变量

1725443854_66d82f0ec0027167659cb.png!small?1725443855730


另外,我们可以在该目录下新建databases目录,用于存在codeql生成的数据库。

1725443863_66d82f1710969eeee942c.png!small?1725443863778

上面安装完成了引擎和SDK,下面我们需要安装一个vscode插件,以便我们可以方便的使用。

1725443867_66d82f1b8b2246b779dac.png!small?1725443868175

配置引擎路径

1725443911_66d82f47674e62050dc0e.png!small?1725443912210

先来大致看一下这个插件

包含了四个部分:

1)导入数据库:使用首先要导入一个codeql生成的数据库

2)VARIANT ANALYSIT REPOSITORIES:暂时不知道作用

3)query history:查询历史

4)AST VIEWER:可以查看生成的AST内容

1725443948_66d82f6ca859e239b7039.png!small?1725443949288

简单使用过程

1725443972_66d82f8420e74db95135e.png!small?1725443972784

首先使用命令通过codeql引擎生成可以别ql查询的数据库,然后编写ql查询语句查询数据库,根据设置的规则判断是否存在漏洞。

1.生成数据库

CodeQL的处理对象并不是源码本身,而是中间生成的AST结构数据库,所以我们先需要把我们的项目源码转换成CodeQL能够识别的CodeDatabase。

我使用了java漏洞靶场来生成数据库。

codeql database create E:\codeql\databases\hellojavasec-database --language=java --command="mvn clean install --file pom.xml" --source-root=E:\java靶场\Hello-Java-Sec-master --overwrite

1725444001_66d82fa1c111ddede2634.png!small

没有报错,则生成了AST数据库

1725444022_66d82fb68de59be5434b3.png!small?1725444023098

将数据库导入VScode中

1725444029_66d82fbd72b6d7235fd68.png!small?1725444030118

接下来,就可以编写查询语句进行查询了

codeql语法基础

AST语法树

要想学习codeql必须了解AST语法树,这个是学习的基础。

CodeQL是识别不了源码本身的,而是通过CodeQL引擎把源码转换成CodeQL可识别的AST结构数据库,所以想要真正理解CodeQL原理,要学会看懂分析AST抽象语法树。

1725444046_66d82fce5280af229

可试读前30%内容
¥ 19.9 全文查看
9.9元开通FVIP会员
畅读付费文章
最低0.3元/天
# web安全 # 企业安全
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 Notadmin 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
Notadmin LV.6
微信公众号:信安路漫漫
  • 88 文章数
  • 155 关注者
安卓7以上系统如何用burp抓包
2025-04-15
浅谈SSO认证原理及常见安全问题
2025-03-25
微信小程序测试技巧总结
2025-03-13
文章目录