任意用户密码重置(二):重置凭证接收端可篡改

*本文原创作者:yangyangwithgnu,属于FreeBuf原创奖励计划,禁止转载

在逻辑漏洞中,任意用户密码重置最为常见,可能出现在新用户注册页面,也可能是用户登录后重置密码的页面,或者用户忘记密码时的密码找回页面,其中,密码找回功能是重灾区。我把日常渗透过程中遇到的案例作了漏洞成因分析,这次,关注因重置凭证接收端可篡改导致的任意用户密码重置问题。

密码找回逻辑含有用户标识(用户名、用户 ID、cookie)、接收端(手机、邮箱)、凭证(验证码、token)、当前步骤等四个要素,若这几个要素没有完整关联,则可能导致任意密码重置漏洞。

前情提要:【传送门】


案例一:接收端可篡改。请求包中包含接收端参数,可将凭证发至指定接收端。

密码重置页面,输入任意普通账号,选择手机方式找回密码。在身份验证页面点击获取短信验证码:

任意用户密码重置(二):重置凭证接收端可篡改_第1张图片

拦截请求,发现接收验证码的手机号为请求包中的参数:

任意用户密码重置(二):重置凭证接收端可篡改_第2张图片

直接篡改为攻击者的手机号,成功接收短信验证码,提交验证码后,正常执行 3、4 步即可成功重置该账号的密码。


案例二:接收端可篡改。请求包中出现接收端间接相关参数,可将凭证发至指定接收端。

在密码找回页面,用攻击账号 test0141,尝试重置目标账号 2803870097 的密码(对滴,你没看错,这两个长得完全不像的账号的确是同个网站的)。

在第一个首页中输入 test0141 和图片验证码完成“01 安全认证”:

任意用户密码重置(二):重置凭证接收端可篡改_第3张图片

请求为:

任意用户密码重置(二):重置凭证接收端可篡改_第4张图片

输入图片验证码获取短信验证码完成“02 身份验证”:

任意用户密码重置(二):重置凭证接收端可篡改_第5张图片

请求为:

任意用户密码重置(二):重置凭证接收端可篡改_第6张图片

后续的 03、04 步不涉及用户名信息,忽略。

全流程下来,客户端并未直接提交接收短信验证码的手机号,多次尝试可知,02 中出现的 user_name 用于查询下发短信的手机号,用它可以间接指定接收端,那么,它是否仅此作用而不用于指定重置密码的账号?如下思路验证,先将 userName 置为 2803870097 完成 01 以告诉服务端重置的账号,再将 user_name 置为 test0141 完成 02 以欺骗服务端将短信验证码发至攻击者手机,顺序完成 03、04 或许能实现重置 2803870097 的密码。具体如下。

第一步,用普通账号 2803870097 进行安全认证:

任意用户密码重置(二):重置凭证接收端可篡改_第7张图片

第二步,对普通账号 2803870097 进行身份验证:

任意用户密码重置(二):重置凭证接收端可篡改_第8张图片

拦截发送短信验证码的请求:

任意用户密码重置(二):重置凭证接收端可篡改_第9张图片

将 user_name 从 2803870097 篡改为 test0141,控制服务端将验证码发至 test0141 绑定的手机号:

任意用户密码重置(二):重置凭证接收端可篡改_第10张图片

test0141 的手机号成功接收到验证码 872502,将该验证码填入重置 2803870097 的身份校验页面后提交:

任意用户密码重置(二):重置凭证接收端可篡改_第11张图片

第三步,输入新密码 PenTest1024 后提交,系统提示重置成功:

任意用户密码重置(二):重置凭证接收端可篡改_第12张图片

第四步,用 2803870097/PenTest1024 登录,验证成功:

任意用户密码重置(二):重置凭证接收端可篡改_第13张图片


防御措施方面,一定要将重置用户与接收重置凭证的手机号/邮箱作一致性比较,通常直接从服务端直接生成手机号/邮箱,不从客户端获取。

*本文原创作者:yangyangwithgnu,属于FreeBuf原创奖励计划,禁止转载

这些评论亮了

  • 任意用户密码重置(二):重置凭证接收端可篡改_第15张图片
    R君丶 (1级) 回复
    涨知识:这姿势啊,重点是要 细 !!
    ) 15 ( 亮了
发表评论

已有 14 条评论

  • 任意用户密码重置(二):重置凭证接收端可篡改_第16张图片
    R君丶  (1级)  2018-02-05 回复 1楼

    涨知识:这姿势啊,重点是要 细 !!

    亮了( 14)
  • Shad0wpf_  (4级) 一个高尚的人,一个纯粹的人,一个脱离不了低级趣味的人。  2018-02-05 回复 2楼

    :oops::oops::oops:

    亮了( 1)
  • aihacker  (1级)  2018-02-05 回复 3楼

    burp suite没用好,抓紧练习一下去

    亮了( 1)
  • dlan  (3级) xx00  2018-02-05 回复 4楼

    不错 ,继续起期待下文。

    亮了( 3)
    • 任意用户密码重置(二):重置凭证接收端可篡改_第17张图片
      yangyangwithgnu  (3级) 任何事情都有无穷乐趣  2018-02-05 回复

      @ dlan  周三,《任意用户密码重置(三):用户混淆》。

      亮了( 1)
  • 任意用户密码重置(二):重置凭证接收端可篡改_第18张图片
    jinxi197  (1级) 这家伙太懒了,还未填写个人描述!  2018-02-05 回复 5楼

    厉害,学习了

    亮了( 0)
  • 任意用户密码重置(二):重置凭证接收端可篡改_第19张图片
    FK_T  (2级) 这家伙太懒了,还未填写个人描述!  2018-02-05 回复 6楼

    分享的不错

    亮了( 0)
    • 后海大鲨鱼  2018-02-06 回复

      @ FK_T  嘿,老哥

      亮了( 0)
  • cctv  2018-02-05 回复 7楼

    厉害

    亮了( 0)
  • 2209553467  (1级)  2018-02-05 回复 8楼

    厉害了,原来burpsuite可以干那么多事

    亮了( 0)
  • 李皇谛-谛造传奇KHOL  2018-02-05 回复 9楼

    这下只要记住可用的用户名……唉呀妈呀密码都是空摆设的了

    亮了( 0)
  • JOKRE  (1级) 小白  2018-02-06 回复 10楼

    都坐下,全是基本操作~~

    亮了( 0)
  • hamapi  (1级)  2018-02-06 回复 11楼

    又忘记打码了。。。

    亮了( 0)
    • 任意用户密码重置(二):重置凭证接收端可篡改_第20张图片
      yangyangwithgnu  (3级) 任何事情都有无穷乐趣  2018-02-06 回复

      @ hamapi  案例二中你还能找到敏感信息?

      亮了( 0)

你可能感兴趣的:(逻辑缺陷)