安云网 - AnYun.ORG | 专注于网络信息收集、网络数据分享、网络安全研究、网络各种猎奇八卦。
当前位置: 安云网 > 技术关注 > DataBase > Mybatis框架下易产生SQL注入漏洞场景分析

Mybatis框架下易产生SQL注入漏洞场景分析

时间:2017-06-02来源:未知 作者:安云网点击:
在基于Mybatis框架的Java白盒代码审计工作中,通常将着手点定位在Mybatis的配置文件中。通过查看这些与数据库交互的配置文件来确定SQL语句中是否存在拼接情况,进而确立跟踪点。通过总结,Mybatis框架下易产生SQL注入漏洞的情况主

在基于Mybatis框架的Java白盒代码审计工作中,通常将着手点定位在Mybatis的配置文件中。通过查看这些与数据库交互的配置文件来确定SQL语句中是否存在拼接情况,进而确立跟踪点。通过总结,Mybatis框架下易产生SQL注入漏洞的情况主要分为以下三种:

//copyright AnYun.ORG

1. 模糊查询like //本文来自安云网

还以第一节中提到的新闻详情页面为例,按照新闻标题对新闻进行模糊查询,如果考虑安全编码规范问题,其对应的SQL语句如下:

//安云网,anyun.org

Select * from news where title like ‘%#{title}%’,

//ANYUN.ORG

但由于这样写程序会报错,研发人员将SQL查询语句修改如下:

//ANYUN.ORG

Select * from news where title like ‘%${title}%’, //copyright AnYun.ORG

在这种情况下我们发现程序不再报错,但是此时产生了SQL语句拼接问题,如果java代码层面没有对用户输入的内容做处理势必会产生SQL注入漏洞。

//安云网,anyun.org

2. in之后的参数

//ANYUN.ORG

在对新闻进行同条件多值查询的时候,如当用户输入1001,1002,1003…100N时,如果考虑安全编码规范问题,其对应的SQL语句如下:

//内容来自安云网

Select * from news where id in (#{id}), //ANYUN.ORG

但由于这样写程序会报错,研发人员将SQL查询语句修改如下:

//ANYUN.ORG

Select * from news where id in (${id}), //copyright AnYun.ORG

修改SQL语句之后,程序停止报错,但是却引入了SQL语句拼接的问题,如果研发人员没有对用户输入的内容做过滤,势必会产生SQL注入漏洞。 //内容来自安云网

3. order by之后 //内容来自AnYun.ORG

当根据发布时间、点击量等信息对新闻进行排序的时候,如果考虑安全编码规范问题,其对应的SQL语句如下:

//内容来自安云网

Select * from news where title =‘京东’ order by #{time} asc, //安云网咨询系统

但由于发布时间time不是用户输入的参数,无法使用预编译。研发人员将SQL查询语句修改如下:

//安云网,anyun.org

Select * from news where title =‘京东’ order by ${time} asc, //安云网,anyun.org

修改之后,程序通过预编译,但是产生了SQL语句拼接问题,极有可能引发SQL注入漏洞。 //安云网,anyun.org

  //本文来自安云网

摘录于:http://www.open-open.com/lib/view/open1474963603800.html //copyright AnYun.ORG


//本文来自安云网

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
验证码: 点击我更换图片
相关内容
推荐内容