长亭百川云 - 文章详情

Codeql 入门

赛博少女

53

2024-07-13

一、背景


至于为什么学习Codeql还是因为审计中遇到一个需求,三梦师傅丢出Codeql秀了我一脸,感觉可以花点时间看一看。

二、环境搭建及使用


这里建立在已经知道Codeql是什么的情况下,Codeql基本概念介绍移步这里https://www.4hou.com/posts/yJOW

基本的环境搭建和使用我参考的14yn3师傅的文章:https://www.freebuf.com/articles/web/283795.html

1.安装

CodeQL本身包含两部分解析引擎+SDK。

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

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

Codeql-Cli:https://github.com/github/codeql-cli-binaries/releases 下载好后配置环境变量即可

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

接下来就是VSCode,大多都是使用VSCode进行规则的开发和调试,插件很好装,直接在插件市场搜索CodeQL 安装即可,安装好后配置codeql引擎路径

2.使用

想要体验Codeql使用大概就分为两步:创建数据库 -> 使用ql对数据库进行查找

之前刚入门的时候写过几个web_demo项目,这下正好试下。

生成数据库有两种方式,当然真正审计项目的时候就是本地生成database。可能是因为当时项目写的不规范产生编译为题导致数据库生成失败

这里偷个懒,直接用lgtm

简单运行一个查询语句可以使用CodeQL: Quick Query,这里简单查询一下所有内容为空的方法

import java

结果如下

如果想要保存自己的语句,可以参考创建ql包,编写qlpack.yml文件即可

https://codeql.github.com/docs/codeql-cli/about-ql-packs/#about-ql-packs

三、学习路线资料


网上公开的学习资料有一些,最近看了很多,这里推荐些自己觉得不错的

官方文档 https://codeql.github.com/docs/codeql-overview/

CodeQL 概述部分大概说明了CodeQL 的工作原理、CodeQL 分析支持的语言和库,以及工具的使用和一些术语。建议大概过一遍。

第二部分大概讲了Codeql-VScode的使用,以及相关配置文件的规范

第三部分就是cli的命令行参数

第四部分编写QL语句,这里推荐看这个教程https://www.4hou.com/posts/o6wX

第五部分是codeql语言参考指南,这里面给处理Codeql针对不同语言下的查询原理及ql编写,我是读了一遍官方文档后,有些地方有点无法理解,比如数据流部分,建议多读几遍,另外这部分还有中文版https://www.cnblogs.com/goodhacker/p/

如果AST的前置不足可以参考下这些(Sumersec师傅说AST学好了,写ql很简单:

https://www.jianshu.com/p/ff8ec920f5b9

https://www.jianshu.com/p/4bd5dc13f35a

https://www.jianshu.com/p/68fcbc154c2f

四、总结

我觉得看完这些差不多就算入门了吧,第一遍看不懂就多看几遍咯,接下来就是多多实践,官方给出了很多示例ql,还有lgmt上公开的很多ql,然后再有一些现成的结合漏洞编写ql的文章,争取每个都仔细看过

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

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