接口/sys/api/queryFilterTableDictInfo存在SQL注入漏洞
通过审计jeecgboot 3.6.0源代码,发现jeecgboot表接口存在SQL注入漏洞,通过构造表名和字段名,直接获取到数据库中的数据。
漏洞代码:
参数table、text、code可以直接带入到前端url,查询出数据库中任意数据表的数据。
构造漏洞url: http://192.168.10.100/jeecg-boot/sys/api/queryFilterTableDictInfo?table=sys_user&text=username&code=password&filterSql=&pageSize=1000&pageNo=1
漏洞复现:登录后使用用户token,访问http://192.168.10.100/jeecg-boot/sys/api/queryFilterTableDictInfo?table=sys_user&text=username&code=password&filterSql=&pageSize=1000&pageNo=1,获取了数据库中sys_user表所有的用户名和密码,修改table、text和code参数的值可以获取到onenext_init库中所有表的信息,导致数据库敏感信息泄露。
利用前提:获取到token
漏洞接口:/sys/api/queryFilterTableDictInfo
漏洞POC:
?table=sys_user&text=username&code=password&filterSql=&pageSize=1000&pageNo=1
table参数带入mysql表查询,返回的错误信息表onenext_init.mysql不存在,暴露了当前库名为onenext_init,在已知表字段的情况下,能查询onenext_init库中所有表的信息。
获取了sys_user表中的用户名和密码
查询tax_task表的数据
整改建议:前端用户可控参数不能直接带入到用户可控参数table中进行查询,或禁用前端用户对/sys/api/queryFilterTableDictInfo接口访问。