HexBrain

WakaTime · Report #263672

previous token seems to work even though it does not verify email

Validstatus
lowseverity
35upvotes
27 Nov 2019disclosed

How it was found

Hi there ,

Summery :

the same confirmation token can be reused for the email address , wheres the previous token and the new token are not same . while the user tries to confirm his email with previous token , it will be confirmed . which means that token does not expires .

Proof Of Concept:

  • Open your wakatime account with email [email protected].
  • a verification link arrives to your email address looking like this


https://wakatime.com/confirm_email/9ec1b0e0-6993-4dce-972f-73670d340557/764af9cc-766c-4d1c-ba13-cfaa00bdd9b8/2017-08-27T18:36:48Z/e4c09969934e90ecd2e81a5ea21e047a808a6cd9

  • verify your email address .
  • Now remove your email address and put any other email address like [email protected]
  • the system asks for to verify this , but without verifying we can also login .
  • Now if we use the previous email address the system will not let us log in .
  • however now login again with new email [email protected] and password .
  • change your email to previous one which is [email protected].
  • System prompts to verify , a new confirmation link arrives looking like this
https://wakatime.com/confirm_email/9ec1b0e0-6993-4dce-972f-73670d340557/764af9cc-766c-4d1c-ba13-cfaa00bdd9b8/2017-08-27T18:51:38Z/2d95b3756346f163507aee82a1324df280a17a39
  • here we observe the following part is different from our previous token , which shows the time frame and another unique generated part
2017-08-27T18:51:38Z/2d95b3756346f163507aee82a1324df280a17a39
  • So now instead of using the new token use the previous token and it confirms the email address .
  • This works every time you add your email
  • you can ignore all the new token and use the previous first one arrived at your address .
  • Which should expire after one use as the token are actually not same , they are different

Possible Remediation:

As mentioned a token should expire after single use . I tested it quite a few times and confirming it works as the PoC .

I hope you will look into this .

Sincerely , Rashed

This report was disclosed publicly on HackerOne and belongs to its author and the program. See the original