CodeQL初体验——j2eefast代码审计 一
本文记录了作者首次使用CodeQL进行代码审计的过程,介绍了CodeQL的核心特点及其在代码分析中的优势,并通过实际案例展示了如何利用CodeQL发现Shiro反序列化漏洞和多处SQL注入漏洞。 2025-8-11 11:40:53 Author: www.freebuf.com(查看原文) 阅读量:4 收藏

freeBuf

主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

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

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

FreeBuf+小程序

FreeBuf+小程序

前言

本文主要记录笔者初次借助CodeQL进行代码审计的过程,并不涉及CodeQL的安装部署和语法编写等深入教程,内容更偏向于审计过程中漏洞挖掘的实战。

一、CodeQL介绍

CodeQL 是一款最初是由 Semmle 公司开发的代码分析引擎,GitHub 为了增强其代码安全分析能力,以应对托管在其平台上的海量开源项目的安全风险,在 2019 年将其收购。目前,CodeQL已经成为GitHub 安全生态的核心工具,并且鼓励研究者提交漏洞规则。

窃以为,CodeQL除了免费之外,分析结果相对来说要更加灵活和精准一些。在使用过程中它会将源代码转换为 CodeQL 可分析的数据库,允许开发者像查询数据一样查询代码,将代码视为数据库。通过编写查询语句,开发者可以在代码库中搜索特定的模式,从而识别潜在的安全漏洞、错误和其他问题。

核心特点

1、相对于传统的静态代码分析工具,它能理解代码的上下文语义,如变量类型、数据流,而非简单的文本匹配。

2、它支持跨文件/跨函数分析,如追踪数据从用户输入到敏感函数的传播路径,这样就省去了我们手工审计时追踪参数或函数调用的过程。

二、j2eefast审计过程

当然,在这次使用CodeQL进行代码审计时,用的是CodeQL自带的标准查询语句,暂时并没有自己编写查询语句。毕竟笔者也是刚开始学习,也没有编程基础的,自写查询语句确实有些困难。

(一)shiro反序列化漏洞

本次审计的源代码是从码云上捞的,也是属于2k以上Star的项目,首先感谢作者的无私开源。注意到该项目使用的安全框架是Apache Shiro 1.X,因此也在使用CodeQL之前顺手看了一下shiro反序列化漏洞。

在pom.xml中可以看到版本是1.13.0,属实是很低的版本了。

密钥也是锃光瓦亮的在配置文件里,顺手先提现第一个漏洞。

(二)多处SQL注入

开始使用CodeQL官方提供的标准ql库来进行漏洞的自动化审计,我使用的是VS code插件。本着学习的态度,先将几个比较典型的漏洞使用标准库来查询。

官方也提供了多个安全漏洞扫描的代码,命令如:

codeql database analyze --threads 16 ./java-database java-security-and-quality.qls --format=csv --output=java-results.csv

因为项目是使用Spring Boot + MyBatis-Plus ,所以这里使用java\ql\src\experimental\Security\CWE\CWE-089\MyBatisMapperXmlSqlInjection.ql

可以看到能查到很多SQL注入点,提供了整个数据流包括输入点、SQL语句和具体的方法。

先看SQL语句,共有三个参数,其中两个是做了预编译处理,只有参数sql_filter是直接拼接的,很明显的SQL注入点。

再看用户输入点,也就是source,还有对应的方法。逻辑也很简单,就是提取通过POST请求的参数,并通过findPage来执行SQL语句。

整个数据流其实CodeQL已经整的很清楚了,从代码中看sql_filter参数就是一个查询条件的,这里直接测试一下。

此时服务器响应内容提示包含了非法字符,显然程序是对提交的数据有过滤的。通过搜索过滤器发现是通过@RequiresPermissions注解调用了检查SQL注入的过滤器,具体代码在这里。

通过黑名单过滤了大多数SQL字符串,包括常见的SQL注入字段,甚至连编码的函数都过滤了。

免责声明

1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。

2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。

3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。

已在FreeBuf发表 0 篇文章

本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)


文章来源: https://www.freebuf.com/articles/web/443833.html
如有侵权请联系:admin#unsafe.sh