图形验证码大小可控造成DOS攻击

# 0x01 巧遇【新型漏洞】

次饭的时候看到知乎推了一篇文章,名为“新类型【漏洞】验证码大小可控导致的拒绝服务攻击漏洞”。

WTF,这不是刚刚正在测得图形验证码的地方么,竟然就看到这个文章了,你说巧不巧~~~

# 0x02 发现问题

1
2
GET /userCenter/token/getImageToken.do?width=500&height=20&dt=Mon%20Aug%2013%202018%2011:32:46%20GMT+0800 HTTP/1.1
Host: www.xxx.com

GET请求中包含width和height参数,返回的相应内容即是刷新后的图形验证码。

获取验证码

参考文章中的思路,修改可控图形参数“width”“height”,宽度扩大到百倍50000,对比返回包的大小和返回时间,如下所示;

  • width为500,height为200:

500*200

  • width扩大100倍,height不变:

50000*200

清晰的看到,返回包的大小从5000 bytes增加到了45000 bytes,时间从0.141s变成了1.462s

再次尝试将height扩大10倍,再看请求的延时会增加多少。

返回大小为420139 bytes,时间变为9.073s

50000*2000

# 0x03 验证问题

  • 使用Intruder重放上一请求10次,使用另一IP访问网站资源,发现文字类的加载为常规速度,但附属的所有图片类资源的加载延迟特别高;
  • 关闭重放攻击后,使用上一步IP访问网站,文章和图片均加载速度回归常速,可判断问题确实存在。
  • 因为文字类和图片的加载速度差异,可猜测图片服务部署在一个单独服务器中的可能性很大。