OFCMS代码审计--CVE-2019-9615复现


前言

OFCMS是基于Java技术的内容管理系统,在v1.1.3之前的版本存在SQL注入漏洞。

复现一下CVE-2019-9615,作为java代码审计的学习。

测试版本:OFCMS v1.1.2

  • IntelliJ IDEA
  • Java 1.8.0
  • Mysql 8.0.12
  • Tomcat 9.0

案例搭建

打开 IDEA,点击 import Project ,选择下载的源码,然后选择Import project from external model中的 Maven。

然后打开 ofcms-admin/src/main/resources/dev/conf/ 下的 db.properties ,修改数据的账号密码

然后修改根⽬录下的 pom.xml ,搜索 mysql ,然后修改成⾃⼰对应的版本,然后点击import change

PS:速度太慢修改maven为阿里镜像(项目右键->maven->create settings.xml)

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <mirrors>

        <mirror>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>

        <mirror>
            <id>uk</id>
            <mirrorOf>central</mirrorOf>
            <name>Human Readable Name for this Mirror.</name>
            <url>http://uk.maven.org/maven2/</url>
        </mirror>

        <mirror>
            <id>CN</id>
            <name>OSChina Central</name>
            <url>http://maven.oschina.net/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>

        <mirror>
            <id>nexus</id>
            <name>internal nexus repository</name>
            <url>http://repo.maven.apache.org/maven2</url>
            <mirrorOf>central</mirrorOf>
        </mirror>

    </mirrors>
</settings>

PS:这里没有找到对应该版本的包就换成了8.0.12的mysql。

然后下载需要的jar包资源:

配置Tomcat 服务, run-->edit configurations--> + -->tomcat server-->local

配置好tomcat目录和端口。

配置Deployment:+ --> Artifict --> 选择ofcms-admin:war -->修改名字

最后打开 MySQL,创建⼀个名为 ofcms 的数据库,导⼊ofcms/doc/sql下的 sql ⽂件:

mysql> use ofcms
Database changed
mysql> set names utf8;
mysql> source /Users/lanvnal/Files/代码审计/ofcms/doc/sql/ofcms-v1.1.2.sql

然后启动,访问127.0.0.1:8006/ofcms_admin/

后台地址:http://localhost:8006/ofcms_admin/admin/index.html

用户名/密码:admin/123456

漏洞分析

漏洞存在的文件为:ofcms-admin/src/main/java/com/ofsoft/cms/admin/controller/system/SystemGenerateControlle r.java

    /**
     * 创建表
     */
    public void create() {
        try {
            String sql = getPara("sql");
            Db.update(sql);
            rendSuccessJson();
        } catch (Exception e) {
            e.printStackTrace();
            rendFailedJson(ErrorCode.get("9999"), e.getMessage());
        }
    }

使⽤ getPara 获取 sql 参数,然后update⽅法直接执⾏sql 语句,返回 json 格式的数据。这⾥对于传⼊的参数没有任何的处理就直接带⼊执⾏语句中,造成了 SQL 注⼊。

该功能是后台代码生成中的增加功能。update型的注入,可以通过报错进行注入。

总结

是个后台的sql注入,利用起来挺鸡肋的,复现这个主要是环境的搭建和入门的学习。


文章作者: LANVNAL
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 LANVNAL !
  目录