2014
10.09

Today I am going to publicly disclose  a critical vulnerability I have found during my research in PayPal, This vulnerability enabled me to completely bypass the CSRF Prevention System implemented by PayPal, The vulnerability is patched very fast and PayPal paid me the maximum bounty they give ;).

1- Reusable CSRF Token:

The CSRF token “that authenticate every single request made by the user” which can be also found in the request body of every request with the parameter name “Auth” get changed with every request made by user for security measures, but after a deep investigation I found out that the CSRF Auth is Reusable for that specific user email address or username, this means If an attacker found any of these CSRF Tokens, He can then make actions in the behalf of any logged in user.
Hmm, it seems interesting but still not exploitable, as there is no way for an attacker to get the “Auth” value from a victim session.

2- Bypassing the CSRF Auth System:

The CSRF Auth verifies every single request of that user, So what If an attacker “not logged in” tries to make a “send money” request then PayPal will ask the attacker to provide his email and password, The attacker will provide the “Victim Email” and ANY password, Then he will capture the request, The request will contain a Valid CSRF Auth token Which is Reusable and Can authorise this specific user requests. Upon Further Investigation, We have found out that an Attacker can obtain the CSRF Auth which can be valid for ALL users, by intercepting the POST request from a page that provide an Auth Token before the Logging-in process, check this page for the magical CSRF Auth “https://www.paypal.com/eg/cgi-bin/webscr?cmd=_send-money”. At this point the attacker Can CSRF “almost” any request on behalf of this user.

The application generates a valid "Auth" token for a logged-out user!

The application generates a valid “Auth” token for a logged-out user!

Through examination of the password change process, I have found that an attacker can NOT Change the victim password without answering the Security Questions set by user, Also the user himself can NOT change the security questions without entering the password!

3- ByPassing the Security Questions Change:

Screen Shot 2014-08-13 at 12.20.52 AM

The initial process of “setting” security questions is not password protected and is reusable

After further investigation, I have noticed that the request of setting up the security questions “which is initiated by the user while signing up” is not password-protected, and it can be reused to reset the security questions up without providing the password, hence, Armed with the CSRF Auth, an attacker can CSRF this process too and change the victim’s Security questions.

At this point, An attacker can conduct a targeted CSRF attack against PayPal users and take a full control over their accounts. Hence, An attacker can CSRF all the requests including but not limited to:

1- Add/Remove/Confirm Email address
2-Add fully privileged users to business account
3- Change Security questions
4- Change Billing/Shipping Address
5- Change Payment methods
6- Change user settings(Notifications/Mobile settings) ………… and more.
To automate the whole process, I have coded a Python interactive server to demonstrate how an attacker can exploit this vulnerability in a real-life scenario attack.

Here is the POC Video:

 

 

Update #1 (Dec 4th 2014):

PayPal spokesperson released the following statement:

“One of our security researchers recently made us aware of a potential way to bypass PayPal’s Cross-Site Request Forgery (CSRF) Protection Authorization System when logging onto PayPal.com. Through the PayPal Bug Bounty program, the researcher reported this to us first and our team worked quickly to fix this potential vulnerability before any of our customers were affected by this issue. We proactively work with security researchers to learn about and stay ahead of potential threats because the security of our customers’ accounts is our top concern.” 

Update #2 (Dec 31st 2014)”

Made the 3rd Rank in Top Ethical Hackers of 2014 , CheckMarx Company

Update #3 (March 20th 2015):

This technique has been listed on the ( TOP 10 Web Hacking techniques of 2014) with the rank #6.

2014
08.04

Today I am going to share this interesting vulnerability which allowed me to change the passwords of all Microsoft Careers users. Microsoft-careers.com is the Microsoft official recruiting website where millions of people around the world has their CV’s uploaded there. As a Job seeker :), I have registered and uploaded my resume there, a month later, I tried to log in my account but as usual, I forgot my password 🙁 I went to “Forget my password” page and entered my Email, I checked my email and found a message including this  reset password link ( https://www.microsoft-careers.com/reset/ED504CCE-5056-9214-016F355013806D75/) After clicking the link, I have been presented to a page where I should enter my new password, hmmmmm.. I fired up Burpsuite and intercepted the request was looks like

Microsoft-careers hacked

As we can see in this POST request, the (id) value is being sent with the request, with No authorisation key, So I have changed the ID value to the ID of my test account, And YES, I cold change my test account password :). Imagine if we made a small Python code to automate this process, We can change all the password of all users within hours. After reporting this vulnerability to Microsoft, They have patched it and added my name to their Wall of Fame http://technet.microsoft.com/en-us/security/cc308575#0614

2014
06.03

Today I am going to share an interesting finding that allowed me to change the password of almost “150 million” eBay users!

I was checking my e-mail when I have found a “View your recent activity” message from PayPal,  I have checked the links inside the message and found an “Open Redirection” vulnerability!

I have decided to report it to Paypal, I asked a friend of mine about the Paypal security e-mail, he told me that I should register on eBay to report Vulnerabilities to Paypal :).

Well, I went to eBay to register and have found two other vulnerabilities while registering!, I have reported the three bugs and waited.

Two days later, I tried to log in my eBay account to check the status of my 3 reports, and like every time, I have forgotten my password 🙁 .

I went to ” Forget Password” page at eBay  to see how secure their password reset mechanism is.

So here is how users can change their own passwords on eBay:

1- The user navigate ” Forget password page ” and enter his registered Email or Username.

2- eBay gives you the three options which you can change your password with (Using Email, Text message or phone call).

3- If you use Email method, they will send you an email includes a reset password link where you can change your own password.

So lets fire up BurpSuite to see what happens behind the scene..

Visting (https://fyp.ebay.com/EnterUserInfo?&clientapptype=19) and entering my e-mail address will take me to another page that asks me where I want to get my “Reset Password Link” , I have chosen ” By E-mail” and intercepted the request

Hijacking eBay users
 

After Forwarding that request, I received an Email with a change password link, I clicked on the link, it takes me to another page where I have to create my new password, I have entered my new password, hit enter and intercepted the request which looked like:
 

Hijacking eBay users

Hijacking eBay users

Have you noticed that??!!

Wow, instead of using the Secretreqinput value” that have been sent to the user’s email,  eBay uses the same “reqinput” value that have been generated in the first request!!!

Exploitation Time:

I went again to the ” Forget Password page” then entered the victim email, then chose to send the “Reset Password link” to e-mail and captured the request and save the “reqinput value” .

then I repeated the POST request “shown in the last screen shot” and replaced the reqinput value with the new one, I posted it, but it gave me error!!

Why? because the user have to “click” on the link sent to the email to the server can unlock the change password process ” and this is the only user interaction that has to be taken in order to make the attack succeed”

after the user clicked on the “reset password” link, I was able to change his password 🙂

 

This means that an attacker can hijack millions of user accounts in a targeted attack

Here is  a real life attack scenario diagram:

 

eBay hacked

eBay hacked

 

 

Enjoy watching the POC video

 

2014
06.01

Hello World!

Today is my 28th  birthday, so I decided to make this blog to share knowledge!

I will be sharing some stuff about Information Security and my personal experience as well

I hope you enjoy being here 🙂

Thanks..