漏洞概要 关注数(24) 关注此漏洞
缺陷编号: WooYun-2016-183256
漏洞标题: 正方教务系统手机端APP可查任何学生照片信息成绩(未登录)
相关厂商: 正方教务管理系统
漏洞作者: 甩葱哥丶
提交时间: 2016-03-11 14:40
公开时间: 2016-04-29 16:32
漏洞类型: 设计缺陷/逻辑错误
危害等级: 高
自评Rank: 20
漏洞状态: 已交由第三方合作机构(cncert国家互联网应急中心)处理
漏洞来源:www.wooyun.org ,如有疑问或需要帮助请联系
Tags标签: 敏感接口缺乏校验 逻辑错误 设计不当 认证设计不合理 设计缺陷
漏洞详情
披露状态:
2016-03-11: 细节已通知厂商并且等待厂商处理中
2016-03-15: 厂商已经确认,细节仅向厂商公开
2016-03-25: 细节向核心白帽子及相关领域专家公开
2016-04-04: 细节向普通白帽子公开
2016-04-14: 细节向实习白帽子公开
2016-04-29: 细节向公众公开
简要描述:
正方教务系统手机APP接口漏洞
详细说明:
这里使用某学院的手机端APP做分析(…………对不起了母校)
下载地址:
我发现的起源是因为我之前想做个可以做课程表、查成绩、选课的手机APP,然后正方的网页端惨不忍睹,就只能从手机端开始分析了,果断上神器Fiddler:
登陆:
嗯,看起来是一个很正常的POST请求,看看内容:
=_=||,竟然是明文的。。好吧,不管那么多了,看起来strKey应该是关键了,再看看回应:
bj是班级,xm是姓名,,这个程序员英语就这么差?好吧,不管这么多了,我看看有没有sessionid之类的凭据......
一定是我打开的方式不对,,为什么没有凭据,那它之后怎么请求的??
我带着这样的疑惑反编译了apk文件..
dex2jar再jd-gui,然后我在com.zfsoft.business.jw.login.b.a包里的a类里找到了这样一段代码:
根据代码,可以分析出函数的paramString1参数是用户学号,paramString2参数是密码,其他的就暂且不管,根据抓包应该是静态值,rule参数应该是用户权限等级,(alone应该是单一登陆?),主要就是这个strKey了,于是我导航到了这个函数:
好吧,那去b函数:
于是在我一番跳之后我发现它的加密方式为:
随即我随手写了个c#程序调试,果然效果一样。。。
然后我怎么调用其他接口呢。。
。。。。
我只能再次抓包,这次在手机APP中选择学生信息功能。
这次发了5个包,主要信息在前两个包中,后面三个都是空的soap包。
第一个是这个:
看Action里写的,貌似是获取头像接口,果然回应里是一个base64字符串:
我试着解了一下,发现了jpg头:
嗯,那么我看看它是怎么请求的。
又是strKey,好吧,那我倒想看看你是怎么请求的,然后我在com.zfsoft.studentinfo.business.studentinfo.c.c包中的a类里发现了请求的方法:
经过我又一轮跳来跳去,我发现strKey的加密方式是这样的:
!!!!!
!!!!!
!!!!!
仅仅只是学号加上salt值就行!!!
那么其他人呢?
为了证明这个猜想,我随手写了个程序:
!!!真的是这样的!!!(感觉我这样的剧情,下一步可以遍历下来全校所有的证件照,然后搞个证件照选美,然后再创办一个某社交网站,然后出任总经理,当上CEO,迎娶白富美,走上人生巅峰。。。。。)
我兴奋的到Fiddler里打开第二个包:
再看看回应:
经过分析,加密方式与获取头像的机密方式一模一样。。
随即我又分析了获取课程表,它的strKey加密方式为:
后面获取成绩等等功能加密方式都如出一辙。
在apk文件中我找到了config.xml文件,里面写着学校教务系统服务器接口地址,也就是说这是一套通用系统,且只要是学校里安装了该系统,使用通过同样的方法,同样可以获取别的学校中的学生信息,可以说是影响巨大,望尽快修复。
漏洞证明:
修复方案:
修改权限逻辑。。。这个错误真的不应该犯。
版权声明:转载请注明来源 甩葱哥丶@乌云
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:14
确认时间:2016-03-15 16:32
厂商回复:
CNVD未直接复现所述情况,已由CNVD通过软件生产厂商公开联系渠道向其邮件通报,由其后续提供解决方案并协调相关用户单位处置。
最新状态:
暂无
漏洞评价:
对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值
漏洞评价(共0人评价):
登陆后才能进行评分
评论