CVE-2019-9615复现
描述
An issue was discovered in OFCMS before 1.1.3. It allows admin/system/generate/create?sql= SQL injection, related to SystemGenerateController.java. |
---|
分析
根据描述,跟进到SystemGenerateController.java
与参数sql
相关,跟进到getPara()
这里调用的是HttpServletRequest
中的getParameter
函数,作用是获取请求中指定参数的值。可见获取参数没有做任何过滤。
跟进Db.update(sql)
260行获取数据库连接,然后执行update
调用jdbc的api,创建PreparedStatement
,预编译sql语句,使用参数化查询,其实这里什么参数都没填,全是空的。
我们可以输入整句update的sql语句,不使用任何占位符,绕过预编译。
漏洞产生原因:获取 sql 参数(没有过滤),传入update中直接执行,返回 json 格式的数据(包含了异常信息,能够回显)。
Payload
update of_cms_ad set ad_id = updatexml(1,concat(0x7e,(user())),0) where ad_id = 5
复现
需要关注的知识点:
报错注入
jdbc是如何预防sql注入的