ofcms V1.2 代码审计(二)
本文由
创作,已纳入「FreeBuf原创奖励计划」,未授权禁止转载
1、越权
漏洞发现
注意:首先要自行生成几条测试的用户数据,直接在cms当中可能无法增加,建议在数据库当中进行新建,语句:
INSERT INTO `of_sys_role` (role_name, role_desc, role_type, create_time, update_time, status, remark) VALUES ('财务', '财务', '1', NOW(), NOW(), '1', '11');
常见的SRC套路:越权查看他人信息
漏洞复现
该系统可能没有完成开发,对某些权限校验不严格
黑盒测试:
当前有三个角色:
权限除了管理员,剩余都给了部分权限,现在随便来到一个账户
点击基本资料,直接将自己的权限提升到管理员即可。
代码方面分析:
使用burp进行抓包,来到对应路径处SysUserController.java -- update()
,具体可以见上篇。
数据包当中有role_id=1
是来判断权限的,从代码层面可以看出,是没有任何的权限校验
String roleId = (String) params.get("role_id");
if (!StringUtils.isBlank(roleId)) {
SqlPara sql = Db.getSqlPara("system.user.role_update", params);
Db.update(sql);
}
2、未授权访问
项目当中使用到了druid
,直接进行访问即可(需要登录一个正常账户)
位置http://192.168.1.15:8080/ofcms_admin/admin/druid/header.html
由于项目当中使用到了shiro,查看shiro.ini文件,发现
[urls]
/admin/logout.html = anon
/admin/login2.html = anon
/admin/login.html = anon
/admin/dologin.json = anon
/api/** = anon
/static/** = anon
/admin/** = authc
/** = anon
admin目录下的所有东西都需要进行认证才可以访问,所以需要一个正常登录的账户。
3、XSS
此cms没有配置过滤器,但是配置了拦截器,根据文件名称来猜测,其中一个为配置字体的拦截器,一个是配置Restful风格的拦截器。通常情况下XSS的拦截是在过滤器当中的,需要重写doFilter等方法,但是搜索后未发现,于是此cms对XSS没有任何过滤。
于是可以直接进行黑盒测试,由于没有对应的拦截,任何XSS payload均可。
此cms使用到了freemarker组件,所以一般在常规的思路上可以加入对setAttr等函数的审计。
技巧
idea当中正则表达式的搜索,使用CTRL+SHIFT+F来进行正则表达式方式的搜索
例如:当前cms的SQLI搜索可以直接使用
(?<!SqlPara sql = Db\.getSqlPara\(.*\);\s*)Db\.update\(sql\);
来进行搜索
总结
改cms可能没有开发完成,各种权限基本没有做校验,部分只是做了简单的权限校验
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
文章目录