OFCMS代码审计-freemaker注入&sql注入&xxe&xss&文件上传

发布于:2025-05-14 ⋅ 阅读:(13) ⋅ 点赞:(0)

环境搭建

下载地址:https://gitee.com/oufu/ofcms/repository/archive/V1.1.2?format=zip

SSTI模板注入(freemaker)

FreeMarker模板注入实现远程命令执行 - Eleven_Liu - 博客园

在admin中找到这个

发现请求的是这个

找到他

<#assign value="freemarker.template.utility.ObjectConstructor"?new()>${value("java.lang.ProcessBuilder","calc.exe").start()}

这么输入然后保存

刷新

文件上传

查看源代码可以发现

这个是通过新建file来改文件的所以我们可以直接从后端来改

改成后门就可以造成文件上传漏洞

XSS

56:代码审计-JAVA项目Filter过滤器及XSS挖掘 - zhengna - 博客园

先看看

有没有xssfilter过滤器

发现都只存在与前端,那就相当于没有了

那直接随便找就可以找到xss了

sql注入

跟普通的sql注入不一样,他是直接执行sql语句,不是直接的参数传入

直接跟进到代码

int update(Config config, Connection conn, String sql, Object... paras) throws SQLException {
    PreparedStatement pst = conn.prepareStatement(sql);//做了预编译,但是没有传入参数所以没有用
    config.dialect.fillStatement(pst, paras);
    int result = pst.executeUpdate();//这里直接执行传入的sql语句
    DbKit.close(pst);
    return result;
}

注意这个是excuteupdata所以他只会执行这种update,insert,delete这种函数,而且不会有回显,就相当于直接执行sql语句

成功操作,由于没有回显所以我们得使用报错注入

INSERT INTO of_sys_user_site (user_role_id, role_id, site_id, status) VALUES (6, extractvalue(1,concat(0x7e,user(),0x7e,version(),0x7e)), 6,5);

XXE漏洞

JRXmlloader

首先先搜索jrxmlloader

看这些类之中有哪个实现这个代码的

这里有个小技巧:因为这些类都是导入的jar包内部的,这说明,不是每个类和方法都会被使用到;
与之不同的则是项目自己写的类和方法,一般都会被用到。
因此:我们可以先查找类中方法的调用,确定有没有使用到,没有使用到就不用管了,这样可以节省大量的时间。

发现到一个,而且被writeapi调用

可以看到,同类下的execute()方法对其有调用,但是通过查找execute()的调用,发现并没有被使用。因此,此处就不需要再往下进行了。

例如:

找到一个这个,find in usages

发现被这么调用

找到前端调用的接口、

先上传一个文件到这个目录下

写入xxe的文件

成功反弹

xmlreader

也是像上面的方法一样一起找

找到了这个类

但是找使用run的类发现有很多,但是不是由run传进来的,就不知这个方法的参数是否可以调用

发现是从这里调用的

博主累了,后面就先不分析了


网站公告

今日签到

点亮在社区的每一天
去签到