当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2012-07413

漏洞标题:宇初网络验证码图片地址未做动态处理

相关厂商:深圳市宇初网络技术有限公司

漏洞作者: Fish

提交时间:2012-05-22 14:38

修复时间:2012-05-22 14:38

公开时间:2012-05-22 14:38

漏洞类型:设计缺陷/逻辑错误

危害等级:低

自评Rank:3

漏洞状态:未联系到厂商或者厂商积极忽略

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2012-05-22: 积极联系厂商并且等待厂商认领中,细节不对外公开
2012-05-22: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

验证码图片地址为纯静态,且获取验证码时使用了 HTTP 302,通过很简单的方法就能突破验证码的限制。

详细说明:

获取验证码时,浏览器会访问 GET http://api.yucmedia.com/script/image?key=&action=request。但是这里返回的是一个 HTTP Redirection。通过读取 Location 就可以得到验证码图片的地址。
通过分析,易知验证码图片地址到验证码文本存在一一对应的关系。这样就可以迅速建立一个验证码识别库。通过这个识别库来识别验证码,甚至都不用下载验证码图片。
另外,即使今后验证码图片地址被隐藏起来,通过验证码图片的匹配(这个很简单)也可以建立验证码识别库。因此每次返回的验证码图片需要做足够多的变形(例如杂点、变色什么的),但是针对现成图片做变形,要达到足够好的效果是很困难的。

漏洞证明:

昨天写了个问卷星的刷票机,发现了这个 bug。
这是我的验证码库的部分内容。

http://api.yucmedia.com/script/image/diyibaihuo/0517d4.gif Car
http://api.yucmedia.com/script/image/uunetcall/zc.gif 60
http://api.yucmedia.com/script/image/diyibaihuo/0517d3.gif House
http://api.yucmedia.com/script/image/diyibaihuo/0517d2.gif 3
http://api.yucmedia.com/script/image/diyibaihuo/0517d5.gif Wife
http://api.yucmedia.com/script/image/diyibaihuo/0517d1.gif 1

修复方案:

避免返回图片的真实地址。
基于文本进行足够复杂的图像变换。

版权声明:转载请注明来源 Fish@乌云


漏洞回应

厂商回应:

未能联系到厂商或者厂商积极拒绝

漏洞Rank:8 (WooYun评价)


漏洞评价:

评论

  1. 2012-05-22 14:49 | xsser 认证白帽子 ( 普通白帽子 | Rank:254 漏洞数:18 | 当我又回首一切,这个世界会好吗?)

    这个有点意思,那些基于验证码的广告系统,是不是会一样存在缺陷

  2. 2012-05-22 17:28 | popok ( 普通白帽子 | Rank:117 漏洞数:24 | nothing)

    呵呵,这种验证码我也是前几天第一次遇到,从制作上看,一般都是静态制作完成的图片,数量肯定没几张的,就算跳转URL会变,也可以从图片的文件指纹上去对应图片验证码,比如每张图片取前200字节,做成识别库,每次对比查找华为网盘也是这种验证码:http://login.dbank.com/accounts/newAccount?i=&r=

  3. 2012-05-22 17:29 | popok ( 普通白帽子 | Rank:117 漏洞数:24 | nothing)

    @xsser 上条竟然没AT到。。。。对了,话说wooyun为什么验证码第一次都是错误,要刷新一次才可以?

  4. 2012-05-22 17:30 | xsser 认证白帽子 ( 普通白帽子 | Rank:254 漏洞数:18 | 当我又回首一切,这个世界会好吗?)

    @popok 额 怎么我没有遇到过啊

  5. 2012-05-22 17:33 | popok ( 普通白帽子 | Rank:117 漏洞数:24 | nothing)

    @xsser 可能我人品有问题吧,设置的验证码过期是多少毫秒

  6. 2012-05-22 17:34 | 蟋蟀哥哥 ( 普通白帽子 | Rank:363 漏洞数:57 | 巴蜀人士,80后宅男,自学成才,天朝教育失败...)

    @popok 因为你开了两个页面。。

  7. 2012-05-22 17:37 | popok ( 普通白帽子 | Rank:117 漏洞数:24 | nothing)

    话说好像有道理.

  8. 2012-05-22 17:40 | popok ( 普通白帽子 | Rank:117 漏洞数:24 | nothing)

    @xsser @蟋蟀哥哥 果然如此,看来验证码get时需要带个rand了,不然这么多页面公用一个验证码,容易被新页面的覆盖更新掉

  9. 2012-05-22 21:19 | 一刀终情 ( 普通白帽子 | Rank:156 漏洞数:28 | ‮‮PKAV技术宅社区-安全爱好者)

    @popok 就是这个原因,之前也费解很久,好多人有这个疑惑,上次@水滴也问了

  10. 2012-05-23 02:51 | Fish ( 路人 | Rank:8 漏洞数:1 | ...)

    还有个小问题:由页面刚刚读出的验证码,需要等待 2 ~ 3 s 之后才能提交,否则有很大几率被报“验证码错误”。是因为获取一个验证码之后还要一段时间才能生效么?