首先需要声明,本文纯属一个毫无远见和真才实学的小小开发人员的愚昧见解,仅供用于web系统安全方面的参考。
1、 简单说明
用户角色变更的应用,在一般的纯互联网应用中,是非常少见的。但是在一些其他的行业,比如我所熟悉的语音行业,就是非常常见的。
我们在电视里也经常看到,某某金融大鳄给经纪人打电话,这个股票,给我买入1000万;那个股票,马上现价抛出。
在这个时候,接听电话的经纪人就和金融大鳄的角色进行了变更。
2、 常见的“角色变更”的漏洞
如果我们要把自己打扮成金融大鳄,我们需要获取很多的信息;比如金融大鳄的电话号码,说话的语气和声音的模拟,常用的一些习惯等,这些往往就不是普通的漏洞了,如果要去模拟这些行为,恐怕是要严重触犯法律的。
但是对经纪人来说,他们所用的系统,就天生存在了“角色变更”的可能性。这些系统的常见漏洞一般是这些:
- A:隐藏的功能
一些隐藏的功能,不受常规访问控制管理。例如,一些网站用url:admin/super/control.jsp进行很多替代他们操作的事情,为什么会发生这种事情呢,因为很多人假设别人不知道这些信息;当然这个还不是全部,很多的老系统,当初是作为特殊、而且重要的系统进行建设的,这些系统往往都只能在内部局域网使用。后来经历一些互联网时代的冲击,马上进行了触网。很多系统就直接从内部局域网搬到了互联网… 当初很安全的系统,一下子就存在安全隐患了。
- B: 信任用户提交的数据
当判断用户是否进行伪装的时候,应用程序可能会信任用户提交的数据。比如提交正常的用户认证信息之外,还要提交一个特殊的key。但是在数据传输的时候,说不定有攻击者已经修改了这个值…
- C:后门
后门在很多的应用中都存在,这些后门一般都是一些不受常规规则约束的账号或者密码。比如以前一个系统,开发人员为了测试方便,设置验证码如果是“9999”,就不进行验证码验证,这种类似情况在一些“验证码”特别复杂的系统中广泛存在。
更加极端的一种是特殊的后门密码,这种密码可以和任何用户名一起使用。为什么会存在这种设计呢? 比如我们刚才提到的金融大鳄给经纪人打的电话,那么经纪人就有可能用金融大鳄的账户下单,但是一个经纪人可能要服务上百人,那么多密码哪里记得住,干脆用一样的好了….