freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

ofcms V1.2 代码审计(二)
2024-09-13 21:45:37

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套路:越权查看他人信息

漏洞复现

该系统可能没有完成开发,对某些权限校验不严格

黑盒测试:

当前有三个角色:
1721388958366.png
权限除了管理员,剩余都给了部分权限,现在随便来到一个账户

1721389040550.png

点击基本资料,直接将自己的权限提升到管理员即可。
1721389086209.png

代码方面分析:

使用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可能没有开发完成,各种权限基本没有做校验,部分只是做了简单的权限校验

# 漏洞 # web安全 # 漏洞分析 # 代码审计 # Java代码审计
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录