codeql入门指南
tags: codeql
codeql入门指南
1. Intro
我是如何使用codeql挖掘CVE-2021-31856 Meshery sql注入的
2. codeql入门指南
2.1 工具安装
2.2 about codeql language
- QL tutorials
- Find the thief
- Catch the fire starter
- Crown the rightful heir
- Cross the river
2.3 Codeql 语言关键概念介绍
- 逻辑语言: QL tutorials已经介绍,可以类比形式化验证、z3约束求解中的类似概念
- QL 的语义基于 Datalog,这是一种声明式逻辑编程语言,通常用作查询语言
- 《Logic Programming and Databases》
- 在Codeql的招聘广告中我们可以看到codeql对于逻辑语言的需求
- 抽象语法树(Abstract Syntax Tree)
- 污点分析
2.4 reference(遇到问题在哪里解决)
- 某语言的codeql基础写法: CodeQL language guides
- codeql数据库
- 不知道代码应该怎么表达成查询语句时
- 通过codeql for vscode的AST VIEWER功能查询
- 通过文档查询
- 浏览所有的class,predicate,module: CodeQL standard libraries
- 搜索class,predicate,module: CodeQL library search
- 有哪些优秀的query可以学习?
3. codeql step by step
- CTF 1: SEGV Hunt
- CTF 2: U-Boot Challenge
- CTF 3: XSS-unsafe jQuery plugins
- CTF 4: CodeQL and chill
- CTF 5: Go and don’t return
- Codeql: Find CVE-2018-11776
- step by step
- 中文 (感谢melody)
- English Version
- reference: https://securitylab.github.com/research/apache-struts-CVE-2018-11776/
- step by step
4. 总结
- Q: 类似的技术不是有很多吗?为什么我们需要CodeQL?
- A: Codeql真正的价值不仅局限于技术本身,更体现在它让人们认同同一件事,这将成为一个事实上的标准化技术
使用codeql复现发现漏洞、挖掘漏洞的流程
- 分析历史漏洞
- 编译codeql数据库
- 编写query,并逐步优化,提升"采准率"
- 准确命中历史漏洞
- 扩展query,用于挖掘相关漏洞,或挖掘其他项目中的漏洞