mybatis tablename sql injection
BACMiao opened this issue · 2 comments
BACMiao commented
sql mappings
以下的**${businessTable}**存在SQL注入的风险
src/main/resources/mappings/modules/act/ActDao.xml
<mapper namespace="com.thinkgem.jeesite.modules.act.dao.ActDao">
<update id="updateProcInsIdByBusinessId">
UPDATE ${businessTable} SET
proc_ins_id = #{procInsId}
WHERE id = #{businessId}
</update>
</mapper>
RequestMapping
com.thinkgem.jeesite.modules.act.web.ActTaskController 类中的 start 方法
Call Stack
SQL Inject
当用户为jdbc.url添加**&allowMultiQueries=true**并启动程序后,此时Spring允许批量更新,就能进行SQL注入了
测试表为aa表
任意用户执行以下url,
Mybatis将SQL进行拼接并删去aa表,
再次执行上述url时,此时已经不存在aa数据表了
查看mysql,发现aa表已经被删除
heshaojin commented
这是来自QQ邮箱的假期自动回复邮件。你好,我最近正在休假中,无法亲自回复你的邮件。我将在假期结束后,尽快给你回复。