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

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

缺陷编号:wooyun-2013-018982

漏洞标题:新浪微博登录逻辑漏洞导致密码hash成为明文密码

相关厂商:新浪微博

漏洞作者: 刘海阳

提交时间:2013-02-21 11:18

修复时间:2013-02-26 11:19

公开时间:2013-02-26 11:19

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

危害等级:中

自评Rank:6

漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2013-02-21: 细节已通知厂商并且等待厂商处理中
2013-02-26: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

微博的登录没有通过https,采用js本地加密的方法,该方法导致后台的password sha1 hash成为明文密码

详细说明:

研究了下微博登陆:
1,没用https,
2,用如下算法加密:SHA1(SHA1(SHA1(password))+servertime+nonc),
3,servertime和nonc由prelogin.php从服务端颁发。
微博采用这样方式的动机应该是:
1,http性能好又方便,https部署麻烦,支持多终端不方便。所以选择http作为认证协议。
2,基于#1的决策,为了防止网络嗅探用户被盗用密码,所以在js中 SHA1(password),一层不放心,做两层:SHA1(SHA1(password))
3,为了防止用户弱口令,加上salt
4,为了防止暴力破解,采用salt服务器端颁发的方式
基于#1,2,3,4的逻辑链,产生了现在的登录流程和密码加密算法。
这样做的隐患是:
基于现在的逻辑,微博后端user表中的password只能存储SHA1(password)或者SHA1(SHA1(password)),或者存储明文密码
这时会导致hash算法f(x)后的digest等效为明文(就像等式两端用相同的f(x)运算后,等式恒等)
所以,万一被拖库:
黑客拿到数据库中的password digest,不需要费力查彩虹表就能登陆,而且是100%成功
不需要枚举破解,这也使得动机#4失效,
password hash的原始目的是让password hash digest泄漏出去也不可用,现在的登录逻辑有违于此。

漏洞证明:

下图为微博前端js中的password加密部分

6aed536dgw1e20dcq66w0j.jpg

修复方案:

1,启用https,必须的。
2,取消js加密算法

版权声明:转载请注明来源 刘海阳@乌云


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2013-02-26 11:19

厂商回复:

最新状态:

暂无


漏洞评价:

评论

  1. 2013-02-21 11:19 | se55i0n ( 普通白帽子 | Rank:1567 漏洞数:173 )

    mark

  2. 2013-02-21 11:46 | px1624 ( 普通白帽子 | Rank:1036 漏洞数:175 | px1624)

    霸气~

  3. 2013-02-21 13:36 | Coody 认证白帽子 ( 核心白帽子 | Rank:1565 漏洞数:189 | 不接单、不黑产;如遇接单收徒、绝非本人所...)

    标记

  4. 2013-02-21 14:34 | 水滴 ( 普通白帽子 | Rank:146 漏洞数:24 )

    m

  5. 2013-02-21 15:27 | zidane ( 路人 | Rank:13 漏洞数:2 | 噢 乖,你们应该明白 这样下去对我们谁都不...)

    ma

  6. 2013-02-21 15:36 | wefgod ( 普通白帽子 | Rank:1807 漏洞数:179 | 力不从心)

    这个只看标题和一点描述还真不知道是怎么回事

  7. 2013-02-26 13:18 | sunshine1988 ( 路人 | Rank:11 漏洞数:1 | 一只带点文艺范儿的程序猿~)

    这个。。。 。。。

  8. 2013-02-26 14:36 | oldcat ( 实习白帽子 | Rank:88 漏洞数:14 )

    新浪安全说这个是假的。根本就不是这么认证的

  9. 2013-02-26 14:49 | hacx ( 实习白帽子 | Rank:52 漏洞数:6 )

    这个。。。盛大吴锐做过一个PPT,里面提到有不用SSL也可以保障传输、存储安全的解决办法。http://vdisk.weibo.com/s/is-Mw

  10. 2013-02-27 16:36 | 刘海阳 ( 路人 | Rank:0 漏洞数:1 | @海阳的阳)

    @hacx 多谢,我研究一下。

  11. 2013-02-27 17:31 | 刘海阳 ( 路人 | Rank:0 漏洞数:1 | @海阳的阳)

    @hacx 多谢分享。刚好解决了我正在处理的问题。sina的这种登陆做法在此ppt里也提到了,是一种不够安全的做法。我赞同ppt里提到的多阶hash+对称加密的方法。

  12. 2013-02-27 17:34 | 刘海阳 ( 路人 | Rank:0 漏洞数:1 | @海阳的阳)

    @oldcat 哪个安全说的?我js代码里扣出来的啊。应该没错。

  13. 2013-02-27 19:29 | oldcat ( 实习白帽子 | Rank:88 漏洞数:14 )

    @刘海阳 安全部门的老大 新浪微博@cy07 据说算法其实是rsa。你这个是假的

  14. 2013-02-27 22:48 | 刘海阳 ( 路人 | Rank:0 漏洞数:1 | @海阳的阳)

    @oldcat 囧,难不成他们往js里放混淆代码?去微博私信他交流交流。多谢。

  15. 2013-02-27 23:34 | oldcat ( 实习白帽子 | Rank:88 漏洞数:14 )

    有这个可能。。。你发消息给厂商问问

  16. 2013-05-07 23:09 | 熊猫 ( 实习白帽子 | Rank:64 漏洞数:33 | panda)

    m~