嵌入式数据库derby,SQL注入漏洞,影响版本:

Nacos <=1.4.1

漏洞讲解:

/nacos/v1/cs/ops/derby是Nacos的数据库接口路径,该路径编写的代码出现了鉴权缺少的情况,导致任意人员都可以通过sql参数查询任意数据。不过由于代码限制,该参数仅允许进行select查询操作。

漏洞复现:

访问首页

访问此漏洞存在路径/nacos/v1/cs/ops/derby

直接就提示了必要参数"sql"不存在,我们加上去试试。

提示只运行进行查询操作,1.4.1以下版本的nacos默认表名称有以下这些:

users

permissions

roles

tenant_info

tenant_capacity

group_capacity

config_tags_relation

app_configdata_relation_pubs

app_configdata_relation_subs

app_list

config_info_aggr

config_info_tag

config_info_beta

his_config_info

config_info

进行sql查询测试

查询成功,复现完毕。

漏洞成因

根据derby,sql,select关键词,或是直接根据空参数报错提示字符寻找关键代码处。

这里可以看见,进行了两组字符比较,那么它把sql函数和什么东西比较了?往上找一下

找到了,那么这段代码就可以简化成

if (StringUtils.startsWithIgnoreCase(sql, select)) {

if (!StringUtils.containsIgnoreCase(sql, ROWS FETCH NEXT)) {

sql += OFFSET 0 ROWS FETCH NEXT 1000 ROWS ONLY;

}

}

return RestResultUtils.failed("Only query statements are allowed to be executed");

只要传参的第一个字符为select,就可以进行数据库操作,不过也局限于这个现在,只能进行查询操作,最后这个limit函数意思很明确,从第0页开始获取接下来1000行的数据。

总结:

该漏洞一开始被发现是因为该接口路径通过代码审计暴露,发现并没有做鉴权处理,可直接访问,然后通过访问页面的提示词逐步追溯到关键代码区块进行审计,从而完成闭环,造成严重漏洞。

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐