(1)从应用程序中获取一个令牌,对其进行系统化的修改,以确定整个令牌是否有效,或者令牌的某些成分是否被忽略。尝试以一次一个字节(或者一次一个位)的方式更改令牌的值,然后重新向应用程序提交修改后的令牌,看应用程序是否仍然接受这个令牌。如果发现令牌中的某些部分实际上并无作用,可以将它们排除在深入分析之外,以减轻工作负担。可以使用Burp Intruder中的“char frobber”有效载荷类型修改令牌的值,每次修改一个字符,以帮助完成此任务。
(2)在不同时间以不同的用户登录,记录服务器发布的令牌。如果应用程序允许自我注册,可以选择自己的用户名,用一系列存在细微差别的相似用户名登录,如A、AA、AAA、AAAA、AAAB、AAAC、AABA等。如果其他与某一名用户有关的数据(如电子邮件地址)在登录阶段提交或保存在用户资料中,对其进行与前面类似的系统化修改,并记录登录后收到的令牌。
(3)对令牌进行分析,查找任何与用户名和其他用户可控制的数据有关的内容。
(4)分析令牌,查找任何明显的编码或模糊处理方案。如果用户名包含一组相同的字符,在令牌中寻找可能使用XOR模糊处理的对应字符序列;在令牌中寻找仅包含十六进制字符的字符序列,它表示应用程序可能对ASCII字符串进行了十六进制编码处理,或者披露其他信息。寻找以等号(=)结尾的字符序列或仅包含其他有效Base64字符的序列,如a~z、A~Z、0~9、+和/。
(5)如果对会话令牌样本进行逆向工程可获得任何有意义的结果,看看是否拥有足够的信息可猜测出应用程序最近向其他用户发布的令牌。找到一个依赖会话的应用程序页面(即如果不使用有效会话访问,就会返回错误消息或指向其他位置的重定向页面),通过Burp Intruder之类的工具可使猜测出的令牌向该页面提出大量请求。监控页面被正确加载的所有情况的结果,这表示会话令牌有效。