涉及本校网络安全,请勿转载。
因为疫情 导致了我们学校出门必须要钉钉申请通行证才可以bypass门卫离开学校。通行证如图:
在学长学姐的基础上,逃离学校无非就这么几种方法:
1.和保安py,成功bypass(多名保安酌情考虑)
2.翻墙逃离(但几处学校的bug已被保卫处修复,暂未找到新的解决办法)
3.通过安卓手机悬浮窗功能,将绿码与红码贴合,绕过门卫的眼睛(有翻车案例,并且会导致学校的审查力度)
4.和保安闲聊说是等外卖,转身慢慢移开视线逃离(一定几率,建议人多高峰期使用,但是无法考虑返程的安全问题)
5.编写web前端绕过(需要一定仿站基础,但学长学姐写的网页不够好,不是很像,但是bypass保安还是没问题)
综上,我果断采用第五种方法。我虽然仿站强,但并不是用取色器,ps等制图工具进行测量仿制,而是通过他人的样式进行自我框架渲染而得。通过观察这个通行证,使用fiddler对钉钉进行抓包,访问通行证时获取以下几个界面。
找到一个我校网址的api接口,用浏览器打开是一个系统登录界面。
测试无SQL注入,使用自己的学号密码成功登录后台获取通行证的界面(红码)。
查看cookie只有一个鉴权字段GH,所以思考流程可知,钉钉通过oauth模拟登录获取学生学号并添加至cookie的GH字段中,然后获取数据渲染界面。此时可以先做第一步,获取界面源代码,轻松搞定
当天下午就去校外吃了一顿火锅。
返回学校也非常顺利,毕竟是原汁原味的绿色通行证。但是回到寝室我就在思考另一个问题。通过oauth方式,根据钉钉获取学生学号后返回班级,姓名这些数据,完全没有中间鉴权。如果用户直接获取数据接口修改GH字段,就可以获取其他人的信息。
动手测试后发现
成功通过修改GH的参数值,进入其他用户的通行证界面。OK,在这一步证明了越权的漏洞存在。然后换用burpsuite进行调试,进入rep模块就行重发包,对GH参数值添加'等常见SQL注入字符。
返回了报错,大概率存在注入。于是改用SQLmap进行测试,对cookie中的GH参数进行注入测试。成功获取数据库列表:
非常遗憾的是我不会对sqlserver进行提权或者getshell,并且由于这个接口设置于公网,并不想给自己添加麻烦。就仅当测试,并已经提交信息中心了。
当然我并不想做一个违反规则的人,只是实在被封校管理压得喘不过气,希望能够完善一下制度,统一师生的标准,减少学生的抵触情绪吧。