输入下面的链接地址,就会出现下面的获取数据,这个漏洞还是比较严重的啊
http://localhost:8080/nbcio-boot/sys/ng-alain/getDictItemsByTable/'%20from%20sys_user/*,%20'/x.js
通过上面方式可以获取用户信息了
如下:
@RequestMapping(value = "/getDictItemsByTable/{table}/{key}/{value}", method = RequestMethod.GET)
public Object getDictItemsByTable(@PathVariable String table,@PathVariable String key,@PathVariable String value) {
//return this.ngAlainService.getDictByTable(table,key,value); //by nbacheng 有sql注入漏洞
return null;
}
看代码是上面接口部分
@Override
public List<Map<String, String>> getDictByTable(String table, String key, String value) {
return this.mapper.getDictByTableNgAlain(table,key,value);
}
这个下面的sql语句本身就漏洞,还好,本身也不用了,所以可以注释掉了或去掉。
@Deprecated
@Select("select ${key} as \"label\",${value} as \"value\" from ${table}")
public List<Map<String,String>> getDictByTableNgAlain(@Param("table") String table, @Param("key") String key, @Param("value") String value);
感谢网友提供的漏洞信息。