9.5 验证码自动识别测试
9.5.1 测试原理和方法
前面几小节介绍的测试方法主要针对业务逻辑设计上存在缺陷的验证码机制,而事实
上还有很大一部分验证码机制在逻辑上并不存在问题,这就涉及与验证码机制本身的正面
对抗,也就是验证码识别技术。
网站登录页面所使用的图形验证码是出现最早也是使用最为广泛的验证码,我们就以
图形验证码为例来讲解如何对其进行自动识别。
一般对于此类验证码的识别流程为:图像二值化处理→去干扰→字符分割→字符识
别。
图像二值化就是将图像上像素点的灰度值设置为 0 或 255,也就是将整个图像呈现出明
显的黑白效果。
为了防止验证码被自动识别,通常用加入一些点、线、色彩之类的方式进行图像干
扰,如图 9-24 所示。
图 9-24 验证码图像干扰
所以为了达到良好的识别效果,需要对图像进行去干扰处理。
字符分割主要包括从验证码图像中分割出字符区域,以及把字符区域划分成单个字
符。
字符识别就是把处理后的图片还原回字符文本的过程。
9.5.2 测试过程
攻击者访问网站登录页面,通过刷新验证码页面查看验证码组成规律,进行图像二值
化、去干扰等处理,并进行人工比对,存储成功识别的验证码包,截入工具,利用工具对
登录页面进行暴力破解,根据返回包的大小和关键字判断是否破解成功,如图 9-25 所示。
以某游戏站点为例。
图 9-25 验证码自动识别测试流程
步骤一:首先通过多次刷新验证码,发现验证码主要由数字或小写字母组成,于是通
过 PKAV HTTP Fuzzer 工具设定一个验证码包含的字符范围,如图 9-26 所示。
图 9-26 设定验证码字符范围
步骤二:通过第三方识别工具可以自动对验证码图像进行二值化、去干扰等处理,然
后通过人工比对来完善识别的准确率,如图 9-27、图 9-28 所示。
步骤三:当识别的准确率符合自己预期的效果后(比如达到 90%以上),就可以对登
录页面进行抓包分析了,通过 Burp Suite 工具抓取登录的数据包,如图 9-29 所示。
图 9-27 验证码人工比对
图 9-28 验证码人工比对
图 9-29 抓取登录数据包
步骤四:将抓取到的请求数据包放至 PKAV HTTP Fuzzer 工具的请求包内,设置验证
码标志位,用户名和密码标志位,如图 9-30 所示。
图 9-30 设置请求包
单击即可开始对账号密码进行暴力破解,验证码会自动载入,如图 9-31 所示。
图 9-31 暴力破解
查看请求结果,可发现一个长度为 611 的返回包,用户名和密码为 admin:admin,可
成功登录网站,如图 9-32 所示。
图 9-32 成功登录
9.5.3 修复建议
针对验证码被自动识别的风险,建议通过以下几个方面来进行加固:
(1)增加背景元素的干扰,如背景色、背景字母等;
(2)字符的字体进行扭曲、粘连;
(3)使用公式、逻辑验证方法等作为验证码,如四则运算法、问答题等;
(4)图形验证码和使用者相关,比如选择联系人头像、选择购买过的物品等作为验
证码。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论