WebGoat8 M17 Password Reset 密码重置 答案、思路、题解
这部分相比前面JWT要简单很多。
题目2:Email functionality with WebWolf
步入正题,练习题2,点击输入框下面的“Forgot your password?”,然后发一封邮件到 {你的WebGoat用户名}@webgoat.org ,这个带密码的邮件会在Webwolf中被收到,密码就是用户名倒过来。直接用密码登录即可。
题目4:Security questions
练习题4,这道题要求我们取得一个自己的号以外的账号的密码。但实际操作中我发现并不需要密码,只要把安全问题的答案找出来就好。
首先我们要找一个可用的用户名。
填自己的信息点Access抓个包,发送到Intruder,将username的值设为变量,上网随便找个常见英文名大全作字典(我这里偷懒用的之前题目用到的google10000个英文单词字典刚好也能用,但最好还是用英文人名字典)
下图可以看到,当用户名为tom的时候,响应里是:
Sorry, the solution is not correct, please try again.
而如果用户名不存在,显示会是:
User xxx is not a valid user.
因此可知存在一个tom用户。
再来把username改成tom,去掉变量,后面securityQuestion的值设为变量。
字典还是网上找些常见的颜色单词:
随便**一下就出来了。
答案(不唯一):
tom
purple
Creating the password reset link
题目:
我们要拿到tom的密码,而tom会自动点击他收到的重置邮件里的链接。
首先给自己发个重置链接并抓包
放到repeater里发出去,可以看到响应里提示邮件已发送到我的WebWolf邮箱。
再看收到的邮件:
里面有一个超链接。点击链接,重置密码后会显示重置成功,但如果再次刷新,页面又会变成让你重置密码。换而言之,这个重置链接是长期有效的。
另外观察这个重置页面的URI,会发现是一串随机的数字字母直接接在了链接尾。
我们可以推测整个过程:POST请求会生成一个重置密码的链接(这个链接是一串随机的数字字母接在某个地址后),并把重置链接放在邮件的超链接里,发送给指定的邮箱。
那么,通过修改host为9090(WebWolf端口),我们可以将用户点击重置链接时请求的地址改掉,当用户点击这个假的链接时,WebWolf中就会收到带重置地址的请求。如图:
我们用8080端口打开这个重置链接,就能重置tom的密码了。重置完了登录,过关。