CVE-2019-9625分析
CVE-2019-9615分析
这是一个OFCMS
的Sql注入漏洞
OFCMS是基于Java技术的内容管理系统,在v1.1.3之前的OFCMS中发现了一个问题,在admin / system / generate / create?sql =
路径可以进行SQL注入,与SystemGenerateController.java
文件相关
但总的来说这个漏洞还是比较的鸡肋,前提是得进入到后台
下面来进行一些分析和复现
环境搭建
先去gitee把源码搞下来,整一个v1.1.2版本的
https://gitee.com/oufu/ofcms/releases
直接用idea打开项目就好了(高版本的是这样的)
然后再ofcms-admin/src/main/resources/dev/conf/
文件夹下打开db.properties
,修改数据包的账号密码
修改根目录下的pom.xml
,搜索mysql
,然后修改成自己机器上装的版本,然后点击import changes
然后就是下载所需要的jar
包
先右键这个ofcms
项目的文件夹然后点这个Maven -> Reimport
点击run -> exit configurations
配置Tomcat
服务,端口按本地情况进行修改
然后配置这个Deploymeent
,选择ofcms-admin:war
修改路径名为/ofcms-admin
(虽然不改也没事)
然后打开mysql
,创建一个名为ofcms
的数据库,导入ofcms/doc/sql
下的sql
文件就好了
然后启动项目,就可以访问了
站点地址: http://ip:port/ofcms-admin
后台地址: http://ip:port/ofcms-admin/admin/login.html
用户名: admin
密码: 123456
漏洞分析
漏洞存在的文件的位置在ofcms-admin/src/main/java/com/ofsoft/cms/admin/controller/system/SystemGenerateController.java
这里有一个create
函数
1 | public void create() { |
这个就使用getPara
获取传过去的sql
参数值,然后用Db.update
直接执行sql语句,返回json
格式的数据
这里对于传入的参数没有进行任何处理直接带入执行语句中,造成sql注入
然后我们去后台找到该段代码对应的功能点
随便写一点然后抓包传入测试的语句
1 | update of_cms_link set link_name='panda' where link_id = 4 |
平台的系统运营这有一个系统监控,然后有一个SQL监控,我们可以通过这个来查看运行的SQL语句
这个就是我们刚刚输入的sql语句,我们可以点这个链接进去看详细数据
这说明我们可以完全控制update
型的SQL注入语句,然后我们可以用以下语句尝试进行注入:
1 | update of_cms_link set link_name=updatexml(1,concat(0x7e,(user())),0) where link_id = 4 |
既然报错注入可以那么别的也可以执行,只是没有回显而已
修复方案
官网更新到了v1.1.4
,但是没有对这个漏洞进行修复,可能的原因就是我一开始说的后台注入得先有权限比较鸡肋。
- 首先就是由于这个注入是在后台产生的,可以考虑限制后台使用人员对此功能使用的权限,加强管理员密码的管理,还有一个就是把默认密码随机化。
- 过滤一些与
update
型注入相关的关键字,如updatexml, extractvalue,name_const,floor
等 - 接入一些RASP设备
总结
这是我正式开始整代审的第一个小项目,之后也会继续更新,应该还会再出一期JAVA中的SQL注入漏洞产生的原理和一些修复方案