01
漏洞描述
近日泛微发布了新的安全漏洞补丁,修复了信息泄露和任意用户登录漏洞,该漏洞是由于系统未对系统接口的响应进行合理的处理,导致该系统会泄漏用户信息,由于系统硬编码了AES的KEY值,攻击者可利用信息泄露漏洞获取到的loginid导致任意用户登录系统。
02
信息泄露
根据补丁对比找到接口。
第一处:
漏洞位置:
/mobile/plugin/changeuserinfo.jsp
可以根据手机号模糊查询loginid。
首先查一下共有多少个,数量大于1响应为{"status":"0"},当等于1时输出查到的loginid。
第二处比较鸡肋:
大致就是根据提供的用户ID列表,获取这些用户的信息,然后将获取到的信息返回。
获取到的只有id、name、avatar_url三个字段。
03
登录绕过
漏洞位置在
mobile/plugin/1/ofsLogin.jsp
重点在if语句上,当loginTokenFromThird等于loginTokenFromThird2时进入else中,前者的值是参数传进来的,后者经过为AES加密得到的。
AES加密的key是syscode+Prop.getPropValue
("transferE9","secretkey")对receiver+timestamp进行加密。
看AES加密部分。
首先是key。
Prop.getPropValue("transferE9","secretkey")为中从配置文件transferE9.properties中获取secretkey的值。
那么key就等于传递过来的参数syscode加上secretkey的值。
secretkey还是硬编码在配置文件中的。此时我们调用AES加密并将加密后的值通过loginTokenFromThird传入即可进入else中。
可以看到首先是确定登录方式,查看数据库,默认安装的ofs_sendinfo表中hrmtransrule是空的,所以此时hrmtransrule参数必定会被赋值为1,因此登录方式固定为loginid,loginid由receiver决定所以将信息泄露中获取到的loginid传递给receiver参数就可以完成登录了。
这里查询的库是HrmResource所以并不能登录管理员。
第一处可以直接模糊匹配,第二处信息泄露并未返回loginid字段,所以要根据name猜测login的值,随后加密后登录即可。
04
修复建议
1、及时更新补丁:泛微OA不断推出新的安全补丁,建议管理员及时升级以确保系统的安全性。
2、建议管理员将用户权限设置为最低限度,避免普通用户对系统进行恶意操作。
3、建议部署防火墙、入侵检测和反病毒软件等安全设备,减少网络攻击的风险。
4、建议定期进行安全审计,以及时发现和排除系统漏洞。
5、开启访问控制,配置访问控制列表(ACLs)限制外部IP访问,仅允许受信任的IP地址访问网络。
6、经常备份关键数据,并将备份文件存放在一个安全的位置,以防意外损失或攻击。
往期回顾
原文始发于微信公众号(安恒信息安全服务):九维团队-绿队(改进)| 泛微Ecology信息泄露&前台任意用户登陆漏洞简要分析及防御
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论