Summary by jeetbhdr
Open-Redirect using the redirect-uri parameter in the url overrides the original redirect url provided during Inquiry Creation.
Open-Redirect using the redirect-uri parameter in the url overrides the original redirect url provided during Inquiry Creation.
https://inquiry.withpersona.com
Web App
Open redirects enable an attacker to manipulate a user by redirecting them to a malicious site. A GET-based open redirect was identified which can impact users' ability to trust legitimate web pages. An attacker can send a phishing email that contains a link with a legitimate business name in the URL and the user will be redirected from the legitimate web server to any external domain. Users are less likely to notice subsequent redirects to different domains when an authentic URL with a valid SSL certificate can be used within the phishing link.
This type of attack is also a precursor for more serious vulnerabilities such as Cross-Site Scripting (XSS), Server-Side Request Forgery (SSRF), Cross-Site Request Forgery (CSRF), or successful phishing attempts where an attacker can harvest users' credentials or gain users' OAuth access by relaying them through an Open Redirection, to a server they control (and can see the inbound requests from).
GET-based open redirects can result in reputational damage for the business as customers' trust is negatively impacted by an attacker sending them to a phishing site to extract login credentials, or coercing them to send a financial transaction.
When we create an Inquiry we can specify where we want to redirect the user after they complete their verification.{Ofcourse a normal admin will redirect the user to their own page i.e "https://app.withpersona.com/dashboard/login"}.But i have found that i can bypass the redirect location provided during creation of Inquiry and insert my own malicious URL to redirect the users to malicious site. This is because there is no verification of the URL provided during Inquiry Creation and the URL present in redirect-uri parameter.Using this redirection i {as an attcker} can view all the information that the victim has submitted during the verification process that includes (SSN, Govt ID number , email etc).All this information will be available in the Referer Header on the GET request to your malicious site.
In order to Reproduce this issue you need to use my account. Because there is some changes which doesn't allow newly created account to "Create Inquiry".
My email: jeetbhdr+8@bugcrowdninja.com
My password: Testaccount01@
1.Login to my account .
2.Go to Inquiry .Click on Create Inquiry Select the "SSN Verification : Database" Template and click Create Inquiry and Intercept the request. In the Requests json body's attributes section insert
"redirect-uri": "https://app.withpersona.com/dashboard/login"
and send that Request .
We have used "https://app.withpersona.com/dashboard/login" cause this is persona's login dashboard
3.One Inquiry will be created .Copy the Inquiry link paste it in Incognito tab and complete the verification. You will see
This page and when you click Done . YOu will be redirected to "https://app.withpersona.com/dashboard/login" if you haven't logged in or you will be in persona's dashboard if you are logged in.
This was the normal flow of redirection.
3.Now again create a Inquiry as mentioned in step 2 add the parameter etc.
5.Now verify the Inquiry and when you complete the Inquiry hit Done.You will be redirected to your collaborator site with a lots of sensitive data in the URL. ALso you can check the GET request's Referrer Header to your collaborator . It contains all the sensitive information which is submitted during verification.
Mass Information Disclosure using the Open Redirection. Initially i have marked it as Open Redirection but its a mass information leakage of Highly sensitive [SSN,Govt Id Number etc} data to any random sites.I request traiger and customer to Kindly change the severity because this effects the end-user directly .
There should be a validation between the redirect-uri value that is provided during the Inquiry Creation and the redirect-uri value in the parameter it it matches the Inquiry verification should work as normal or else it must be aborted . Also you shouldn't leak all the verification details collected during the Inquiry verification while redirecting the user. It gets saved in the logs .
I will post a POC video for easy Reproduction . Thank you for looking into my report.