当前位置: 首页 > 科技观察

如何使用SQLancer检测DBMS的逻辑漏洞

时间:2023-03-16 00:48:54 科技观察

关于SQLancerSQLancer,全称是SynthesizedQueryLancer,该工具是一款数据库管理系统DBMS的自动化安全测试工具。该工具可以帮助研究人员轻松识别应用程序实现中的逻辑漏洞。我们这里所说的逻辑漏洞是一种安全漏洞,会导致DBMS获取错误的结果集(如忽略数据记录等)。SQLancer能够分两个阶段运行:数据库生成:此阶段的目标是创建一个填充有数据的数据库,并将测试用例输入到DBMS,以尝试识别和检测不一致的数据库状态。然后,该工具将创建一个随机表并随机选择SQL语句来生成、修改和删除数据。除此之外,该工具还使用其他类型的语句测试目标DBMS,例如创建索引和视图以及设置DBMS特定选项的语句;测试:此阶段的目标是针对生成的数据库检测逻辑错误。工具要求Java8以上;Maven(Ubuntu安装:“sudoaptinstallmaven”);待测DBMS(项目中包含SQLite,SQLite是嵌入式DBMS)。工具安装&使用广大研究人员可以使用如下命令将项目的源代码克隆到本地,然后创建一个JAR,打开SQLancer对SQLite进行测试。这个过程使用了非优化的参考引擎结构(NoREC):gitclonehttps://github。com/sqlancer/sqlancercdsqlancermvnpackage-DskipTestscdtargetjava-jarsqlancer-*.jar--num-threads4sqlite3--oracleNoREC执行后,该工具会每隔5秒打印一次处理信息。SQLancer可能会发现SQLite中的漏洞,在报告漏洞信息之前,请确保处理信息仍在打印。我们可以通过按CTRL+C组合键来手动停止SQLancer的运行。如果SQLancer没有发现漏洞,它将永远运行。我们可以使用“--num-tries”来控制SQLancer在停止之前发现了多少漏洞。此外,我们还可以使用“--timeout-seconds”来指定SQLancer允许执行的最大超时时间。如果不带参数执行SQLancer,该工具将输出所有可用的选项和命令。支持的DBMS由于各种DBMS使用的SQL形式差异很大,需要针对不同的DBMS采用单独的实现方式:SQLiteMySQLPostgreSQLCitusMariaDBCockroachDBTiDBDuckDBClickHouse项目地址SQLancer:[GitHubPortal]