给孩子报名培训时发现了个网站漏洞...几千个学生信息可被越权得到...然后...
业务逻辑有点问题
前几天某个晚上由于小孩的学习需要,在某个公司的小网站上进行了报名.
这次是第二次报名了,算是老生,这里有个业务规则是老生可以优先提前报名…
上次是我老婆注册帐号报名的,但是忘了帐号了,于是我跟老婆说:完了,肯定不算老生了,用我手机号重新注册一个帐号是不是它就算我是新生不能先报名了(如果拿不到身份证号码做判断的话要是我来写肯定这么写…)…
但毕竟还是要试一下的,不然以后的周末就没事干了.结果还真可以,由于在录入信息的时候,孩子信息只输入了姓名和出生日期没输身份证号码…这么一看,是直接拿名字和日期等非独特信息来判断是否同一个人了…也可能根本就没判断…
判断是否老生的逻辑肯定有问题.
URL地址以及权限判断
在我查看已填写的个人信息以及查看我的订单信息时,发现id是放在URL中的,也就是说要查看哪个订单以及查看哪个学员信息,是靠URL传递的参数.
忽然想到,如果连业务逻辑都没想清楚,是不是权限判断也有问题,直接就信任了前端传过来的id参数?
改了下后面的数字…….还真是…
第一个学员:
最后一个学员:
而且还能修改…修改完挂我名下了…程序写得好糟糕…
订单也是相同的情况,只需要改id就能看到报名情况以及全部信息…说不定还能操作别的订单退款以此来抢先报名呢…不敢试了省得麻烦…
那天的第一个订单
那天的最后一个订单
生产环境开调试输出给普通用户
输错参数还直接给我调试信息了…
框架版本没及时更新
用的还是测试的版本,THINKPHP 5.0.0 RC4…
网上随便一搜都可以看到有很多漏洞,包括远程执行漏洞…可惜我不专业…折腾了一下没搞懂怎么弄也不想学PHP了…
处理
查了下网络安全法,确认了只是获取信息不盈利也是有罪的,当晚忍住了写脚本获取这个网站上所有信息的冲动(虽然隔天还是蠢蠢欲动…调试都能打开…逻辑那么蠢…说不定普通操作的审计日志都没开…)
我的个人信息也在上面,希望能尽快被处理掉,至少先把网站关停…于是,我报警了…可是迟迟没有响应…其实我在报警邮件中是有提到要转给网络安全支队处理,也可能我对他们的工作内容理解有误…
没办法,搜了下专业的处理方式,就在在国家信息安全漏洞共享平台报送了
倒是国家信息安全漏洞共享平台处理得挺快了,当天就确认归档并且送给我10积分哈哈哈,再多拿10分就可以兑换成200元京东卡了…
恰好隔天单位内部正在应上级要求整改app,某系统管理员(无计算机专业知识的管理员)似乎在电话中跟我们领导说他们app没问题…我们领导说了句很经典的话”你觉得没有问题就是最大的问题“…
结论
对于开发者:
-
逻辑漏洞很难防,得靠开发者自己思考清楚,在各个关键操作环境校验逻辑,本文中的漏洞属于越权漏洞,相信了前端已登录用户的输入,看到了无权看到的
-
所依赖的系统和框架要时时更新到最新,像THINKPHP在5.0版本以及5.1版本即爆出很多框架远程执行漏洞,而且在网上有公开的补丁,也就是说对于专业的恶意攻击者来说,攻击方法是已知了,被攻击是肯定的…除非别人不知道你这个站点(这网站端口是非标准的…)…
-
别在生产开调试…,暴露版本信息后,一搜版本的公开漏洞分分钟被黑…
对于网站管理单位:
-
预算有限,但是有更好的办法的,比如依托更大的平台做这事,同样是市属单位的其它同类单位,就把报名网站依托在浙江省某较大平台下…相对安全可靠…同理也不要自建WordPress了,直接依托现有的CMS还比较安全…
-
非要自己开发,风险很大,这网站要是给反g黑k知道了,被替换下首页内容…不知道这单位年底各种奖金会不会没掉…
对于普通用户:
-
不要在小网站和小应用上暴露太多信息,他们没能力保护你的信息,收到精准广告信息不要太意外(比如我经常收到幼儿培训的电话…),不一定是网站管理人员故意泄露的
-
每次注册使用的密码最好和别的不一致,不然小网站被黑客整个盗取数据库信息后(脱库)(很可能也是明文保存密码),里面所有的用户名和密码数据会拿去在其他系统尝试登录(撞库)…总有一样的被撞到…
-
以后看到URL中带的顺序参数可以自己改下,或许也能赚个100元(好少…)外快并保护自己的个人信息
不用太担心
但是业务部门有时为了搜集信息方便(如签到/报名)…会用一些第三方的服务…有些看起来还挺危险…第三方网站的辅助信息收集(微信上这种服务很多)…
也没啥办法啊,只能照做…但也不用太担心,现在国家对信息安全的保护力度很大,只拿到你的几个信息其实也做不了什么,如果你关注信息安全,大概也不太可能被骗…
后续
第三天早上打给该单位的技术部门座机,回复我说已经收到漏洞通知并且正在看了…看来这个漏洞共享中心还是靠谱,里面宣称3个工作日内报送到有关单位还真是不假…但是却还不关停……
第四天早上,发现已解决权限问题,但是调试还是开着并且框架版本还是旧的没变…再次打电话提醒了下说网上有关于此版本框架版本的远程执行漏洞的公开利用信息,可惜我不懂PHP没法试一下…这个就不管了,到此为止,就把此文发出去了.