从伪造通行证到SQL注入
  • 2020-10-23


    涉及本校网络安全,请勿转载。


    因为疫情 导致了我们学校出门必须要钉钉申请通行证才可以bypass门卫离开学校。通行证如图:

    5f91b2777235c.png

    在学长学姐的基础上,逃离学校无非就这么几种方法:

        1.和保安py,成功bypass(多名保安酌情考虑)

        2.翻墙逃离(但几处学校的bug已被保卫处修复,暂未找到新的解决办法)

        3.通过安卓手机悬浮窗功能,将绿码与红码贴合,绕过门卫的眼睛(有翻车案例,并且会导致学校的审查力度)

        4.和保安闲聊说是等外卖,转身慢慢移开视线逃离(一定几率,建议人多高峰期使用,但是无法考虑返程的安全问题)

        5.编写web前端绕过(需要一定仿站基础,但学长学姐写的网页不够好,不是很像,但是bypass保安还是没问题)

    综上,我果断采用第五种方法。我虽然仿站强,但并不是用取色器,ps等制图工具进行测量仿制,而是通过他人的样式进行自我框架渲染而得。通过观察这个通行证,使用fiddler对钉钉进行抓包,访问通行证时获取以下几个界面。

     5f91b4c38f5c5.png

    找到一个我校网址的api接口,用浏览器打开是一个系统登录界面。

5f91b59243e24.png

    测试无SQL注入,使用自己的学号密码成功登录后台获取通行证的界面(红码)。

    查看cookie只有一个鉴权字段GH,所以思考流程可知,钉钉通过oauth模拟登录获取学生学号并添加至cookie的GH字段中,然后获取数据渲染界面。此时可以先做第一步,获取界面源代码,轻松搞定

    5f91b7ff7511a.png

    当天下午就去校外吃了一顿火锅。

    返回学校也非常顺利,毕竟是原汁原味的绿色通行证。但是回到寝室我就在思考另一个问题。通过oauth方式,根据钉钉获取学生学号后返回班级,姓名这些数据,完全没有中间鉴权。如果用户直接获取数据接口修改GH字段,就可以获取其他人的信息。

    动手测试后发现

5f91b7e21563a.png

    成功通过修改GH的参数值,进入其他用户的通行证界面。OK,在这一步证明了越权的漏洞存在。然后换用burpsuite进行调试,进入rep模块就行重发包,对GH参数值添加'等常见SQL注入字符。

    5f91b87425712.png

        返回了报错,大概率存在注入。于是改用SQLmap进行测试,对cookie中的GH参数进行注入测试。成功获取数据库列表:

    5f91b8bfc3d07.png

5f91b8f16bae5.png


    非常遗憾的是我不会对sqlserver进行提权或者getshell,并且由于这个接口设置于公网,并不想给自己添加麻烦。就仅当测试,并已经提交信息中心了。

    再聊一聊的就是疫情,我觉得高校的严格管控是正确的,但是我观察所知,学校对学生老师的通行码进行了区分,只有学生是红码,老师一律是绿码,这让我感觉非常不舒服,觉得只是在管理一小部分人,只有学生是肺呼吸。

    并且如果单纯只是设置眼睛观察的方式进行管理,确实能够给学生找到很多破绽,最好的方法当然是设置门禁,类似地铁,机器扫描后可返回相关信息判断开门,不过仍然存在bypass的可能(无非是一些返校时间,出门时间记录在码中,稍微琢磨下还是能够破解出来)。

    当然我并不想做一个违反规则的人,只是实在被封校管理压得喘不过气,下次不会了~