关于SQLancer
SQLancer,全称为Synthesized Query Lancer,该工具是针对数据库管理系统的DBMS自动安全测试工具。该工具可以帮助研究人员轻松识别应用程序实现中的逻辑漏洞。我们在这里提到的逻辑漏洞可以导致DBMS获取错误结果集的安全漏洞(如忽略数据记录等)。
SQLancer可在以下两个阶段操作:
- 数据库生成:这一阶段的目标是创建一个填充数据的数据库DBMS输入测试用例,尝试识别和检测不一致的数据库状态。然后,工具将创建一个随机表并随机选择SQL句子生成、修改和删除数据。此外,该工具还使用其他类型的句子(如创建索引和视图以及设置DBMS测试目标的语句)DBMS;
- 测试:本阶段的目标是生成数据库检测逻辑错误。
工具要求
- Java 8或以上版本;
- Maven(Ubuntu安装:“sudo apt install maven”);
- 需要测试的DBMS(项目中有SQLite,而SQLite是嵌入式DBMS)。
工具安装&使用
大多数研究人员可以使用下列命令将项目源代码克隆到当地,然后创建一个JAR,并开启SQLancer来测试SQLite,本过程采用非优化引擎结构(NoREC):
执行后,工具每5秒打印一次处理信息。SQLancer可能会找出SQLite在报告漏洞信息之前,请确保处理信息仍在打印中。我们可以按下它CTRL C组合键手动停止SQLancer如果SQLancer如果没有发现漏洞,它将继续运行。我们可以用它“--num-tries”来控制SQLancer发现多少漏洞后停止运行。此外,我们也可以使用它“--timeout-seconds”来指定SQLancer允许执行的最大超时。
如果SQLancer工具在没有参数的情况下输出所有可用的选项和命令。
支持的DBMS
由于各种DBMS使用的SQL形式差异很大,需要针对不同DBMS单独实现:
- SQLite
- MySQL
- PostgreSQL
- Citus
- MariaDB
- CockroachDB
- TiDB
- DuckDB
- ClickHouse
项目地址
SQLancer:【GitHub传送门】