在逻辑缝隙中,恣意用户暗码重置最为常见,或许出现在新用户注册页面,也或许是用户登录后重置暗码的页面,或许用户忘掉暗码时的暗码找回页面,其间,暗码找回功用是重灾区。我把日常浸透过程中遇到的事例作了缝隙成因剖析,这次,重视因重置凭据未校验导致的恣意用户暗码重置问题。
暗码找回需求辨别用户的合法身份,证明你便是你,一般有两种做法,一是网站将重置验证码发至用户绑定的邮箱或手机号,用户持重置验证码证明你便是你,二是用户输入暗码保护问题对应的答案。其间,验证码、密保答案便是重置暗码的重要凭据。
在日常对暗码找回功用的攻击中,我的大部份精力聚集在是否能够暴破验证码、是否能够绑架接纳验证码的手机号或邮箱、是否能够混杂重置其他账号、是否能够绕过验证过程、乃至是猜想重置 token 的生成规则等攻击方法上,反而疏忽了最简略、最低技术含量的一种方法——服务端未校验重置凭据。换言之,不管你输入的重置验证码或密保答案是否正确,只需恳求格局无误,均可成功重置恣意账号暗码。我举两个实在事例(缝隙均已修正,就不打码了),你感触下。
事例一:因服务端未校验 token 导致可重置恣意账号暗码
暗码找回页面 http://www.omegatravel.net/users/retrievePassword/ 用攻击者账号 yangyangwithgnu@yeah.net 进入暗码找回全流程,输入图片验证码后提交:
随后收到带 token 的暗码重置链接的邮件:
其间,key:FqvICT 和 userEmail:yangyangwithgnu@yeah.net 引起了我的留意。正常来说,提交该 URL 后,服务端会校验 key 与 userEmail 是否匹配,若匹配则进入提交新暗码页面,若不匹配则报错。现在,我测验将 key 从 FqvICT 改为 xxxxxx 后再拜访,原本心思预期将看到报错页面,没想到进入了新暗码提交页面,难倒所谓的重置 token 仅仅是个铺排?
赶忙找个账号试试,就拿信息搜集时找到的 travel24@omegatravel.net 为例(更多后台账号见后文)。参照前面收到的重置链接格局,简略拼装为 http://www.omegatravel.net/users/retrievePasswordReset/key:xxxxxx/userEmail:travel24@omegatravel.net,是滴,key 的值我随意写的,拜访看看,哇,竟然真的进入了新暗码提交页面:
输入新暗码 PenTest1024 后提交,网站提示“修正暗码成功”。测验用 travel24@omegatravel.net/PenTest1024 登录,成功进入体系:
怎么获取其他账号?从注册页面可知,该网站只能用邮箱注册,邮箱即账号。我关怀一般用户和内部职工用户两类账号(即邮箱)。一般用户的邮箱字典方面,把国人常见名字拼音 top500 结合常见邮箱后缀(@qq.com、@163.com 等等)快速生成个简略邮箱字典;内部职工的邮箱方面,我从该网站域名注册信息查询到联络人为 omegait@omegauk.net,阐明该公司运用 @omegauk.net 的邮箱后缀,同上,把国人常见名字拼音 top500、常见后台账号,结合 @omegauk.net 邮箱后缀,快速生邮箱字典;别的,从“联络咱们”、“诚聘英才”、“公司简介”等页面找到很多内部职工邮箱和合作伙伴邮箱,如 info@jadetravel.co.uk、info@ukchinese.com 等等:
将以上几类邮箱字典存为 mail.txt 也便是用户名。
这样,我不只能够重置一般账号的暗码,还能绑架很多内部职工、合作伙伴的账号,为防止影响事务,不再实际操作。
事例二:可枚举无密保的用户名,导致恣意密保答案均可重置暗码
在暗码找回页面 http://www.hzpzs.net/u_findPassword.asp 输入有用用户名 yangyangwithgnu 后阻拦恳求包:
猜想该数据包用于用户名有用性校验,放至 repeater 中剖析。
因为没用图片验证码,导致可枚举有用用户名,发现三类状况。一是,用户名存在且设置过密保问题,应对相似:
二是,用户名存在但未设置密保问题,应对相似:
三是,无效用户名,则应对相似:
用常见用户名和中国人名字拼音作为字典进行枚举,在一切成果中过滤显现含有关键字 的应对,得到的一切 UserName 参数值即为未设置密保问题的用户名。如:aaron、admin、adolph、alisa、chenchen、esther、jones 等等。
按正常流程,对 chenxin 进行暗码重置,输入恣意密保答案均可重置暗码:
加固办法
暗码重置凭据一定要严厉校验,空密保问题时制止经过密保找回暗码;服务端应约束枚举等歹意恳求。别的,抽打开发人员,皮鞭加盐。