第五关 利用时间敏感型漏洞
这一关就是利用并发请求生成的邮件地址链接时间响应,重置目标用户的密码,实现登录
提示:1、靶场包含密码重置机制。尽管它不包含竞争条件,但您可以通过发送精心定时的请求来利用该机制损坏的密码学。
2、自己的帐户:wiener:peter。
具体操作:
1、先走下正常的流程,打开靶场后,点击“忘记密码”——跳转页面后,输入忘记密码的用户“wiener”,进行提交——提交后生成了重置密码的链接——然后去靶场给的邮箱客户端查看生成的链接——此时我没有点击生成的链接,也就是我没有去重置密码,嫌麻烦没有去改,这里只是体验下流程
2、找到这个忘记密码的POST /forgot-password数据包,发往repeater,看能不能复用,返回200ok,看到是可以复用的

已经生成了第二个邮件地址链接,发现用户名一样token值是不一样的

已经生成了第二个链接,发现用户名一样,token值是不一样的,可以复制这个token值拿去MD5解下密看下能解出来吗?也可以拿不同的账号去走下重置密码的流程,看下生成的邮件有什么区别?
复制到MD5看这个token值有没有隐藏什么含义
MD5显示没有查到

看到MD5也没查到什么东西,那现在也不清楚这个token值和什么东西有关系了,接下来做下并发的尝试,把忘记密码的数据包创建成标签组,做并发测试
并发两个请求一起发,假设如果服务器是同一时间处理我的两个请求,拿的是同一个时间戳去生成token值,那最后我收到的邮件应该是两封一模一样的,token值应该是一样的
两个请求都是一样的,这里选择并发的选项
发现时间戳不一样,这请求1是930请求2是625

发现并发生成的两封邮件链接token值是不一样的
所以时间戳不一样,说明不是同一时间去完成,去发送回来的,生成的邮件链接的token值也不一样

那怎么办呢?接下尝试下不同的浏览器打开用户
先新开一个无痕浏览器,然后打开靶场,现在就是一个不同的会话了和不是无痕浏览器打开的靶场是不一样的,发现cookie值也不一样
普通浏览器的cookie
phpsessionid:NOteoZHFyskyIMHkmG6sUesFLEW5HO

这里是无痕浏览器打开的,cookie
phpsessionid:dftup7ZW6C0FFmrBkQObGzUEWWYNe

不同浏览器打开靶场,cookie是不一样的
先把这个用无痕浏览器打开的提交忘记密码POST /forgot-password的数据包发往repeater

把不同浏览器打开的两个数据包发往Comparer,进行对比,看有哪里不同
现在就相当于是通过两个浏览器,两个用户,同时在不同的地方去发送请求而这样的两个请求,我同时去对某一个用户,发起重置密码的操作,看它会发生什么,因为最后每一个服务器的表现也是不一样的,看会发生什么

给普通浏览器打开靶场用户提交忘记密码的数据包和无痕浏览器打开的提交忘记密码的数据包,创建一个标签组,选择并发的选项发送
请求2是普通浏览器
请求5是无痕浏览器
现在两个请求的响应时间都是632可以假设说明这两个请求再发给服务器服务器是同时去处理的,所以说是同一时间戳去生成邮件地址链接,那我这个wiener用户收到的两封邮件是一样的,token值也是一样的

发现生成的两封邮件是一样的,说明是同一时间,给我这个用户发送的邮件,所以生成的token一样的,这样的话说明token可以被预测

分析完,我先把那个用无痕浏览器打开的数据包中,把用户名改成要爆破的目标用户名:username=carlos

普通浏览器打开的,这里还是wiener用户

然后并发发送两个请求,并发看运气多试几次,有可能响应时间一样的话就成功了,有可能响应时间相差不大也是成功的。
发送多次后,发现并发的响应时间都不一样,去邮件客户端查看发现也就只收到一封邮件地址链接,没关系,现在这个发包的问题应该是解决了的,现在就是看能不能撞到一起,就是说链接上看虽然是wiener用户,当我们复制链接到新打开页面,然后改成username=carlos,接着去访问carlos看能不能成功
复制生成的wiener链接过来改成:username=carlos成功访问到carlos重置密码的页面
重新设置下carlos的密码

然后用carlos已经重置的密码登录进来,然后点击管理界面删除用户

靶场过关
