Skip to main content

XSS and Open Redirect on Telegraph.co.uk Authentication pages


I recently found a couple of security issues with the Telegraph.co.uk website. The site contained an Open redirect as well as an XSS vulnerability. These issues were in the authentication section of the website, https://auth.telegraph.co.uk/ . The flaws could provide an easy means to phish customer details and passwords from unsuspecting users.

I informed the telegraph's technical management, as part of a responsible disclosure process. The telegraph management forwarded the issue report and thanked me the same day. (12th May 2014)

The fix went live between the 11th and 14th of July, 2 months after the issue was reported.

The details:

The code served via auth.telegraph.co.uk appeared to have 2 vulnerabilities, an open redirect and a reflected Cross Site Scripting (XSS) vulnerability. Both types of vulnerabilty are in the OWASP Top 10 and can be used to manipulate and phish users of a website. As well has potentially hijack a user's session.

Compromised URLs, that exploit these flaws would have typically have been circulated to potential victims, in emails, via twitter or facebook. The fact the web-pages were served via HTTPS, provided no added protection for the user. HTTPS was encrypting an already compromised page.

The Open Redirect was on the reenterPassword.htm page, and allowed any URL to be entered via a URL argument and used to override the desired value.

Simply replacing the URL with another site is one simple attack:

https://auth.telegraph.co.uk/sam-ui/reenterPassword.htm?redirectSuccess=http://www.example.com

In this example,  the page included this HTML:
 
<input name="redirectSuccess" type="hidden" value="http://www.example.com" />

As the Open redirect was entirely unvalidated, an attacker could even incorporate javascript directly into the link:

https://auth.telegraph.co.uk/sam-ui/reenterPassword.htm?redirectSuccess=javascript:prompt%28%27Enter%20Credit%20card%20number:%27%29

Here the HTML returned includes our 'dodgy' example request for the customers credit card number:
 
<a href="javascript:prompt('Enter Credit card number:') " title="return to last page visited">Back</a>

A screen capture of the affected page.
More details on this sort of vulnerability and how it can be mitigated can be found on the OWASP site.

The Reflected XSS issue was discovered on the login.htm page, and allowed a URL and arbitrary javascrpt code to be included in the plink URL argument.

An attack URL might look like this:

https://auth.telegraph.co.uk/sam-ui/login.htm?logintype=lite&plink=http://www.example.com%22%3E%3CFORM%20onclick=%22alert%28%27HACKED%27%29%22%20name=%22

And resulted in the following HTML being inserted into the page:
 
<a href="http://www.example.com"><FORM onclick="alert('HACKED')" name="?command=slideUpLight" id="link_id" class='closeLink' title="close the login window"></a>

As you can see, clicking on the Form would have resulted in the alert message 'HACKED' being presented to the customer. In a real exploit, the attackers might choose to insert more subtle code or requests for information into the page to steal or phish a users details or session.


More details on this sort of vulnerability and how it can be mitigated can be found on the OWASP site.

Details on a similar flaw in the Guardian's web site, found last yeah can be found here.


Comments

Popular posts from this blog

Why you might need testers

I remember teaching my son to ride his bike. No, Strike that, Helping him to learn to ride his bike. It’s that way round – if we are honest – he was changing his brain so it could adapt to the mechanism and behaviour of the bike. I was just holding the bike, pushing and showering him with praise and tips.
If he fell, I didn’t and couldn’t change the way he was riding the bike. I suggested things, rubbed his sore knee and pointed out that he had just cycled more in that last attempt – than he had ever managed before - Son this is working, you’re getting it.
I had help of course, Gravity being one. When he lost balance, it hurt. Not a lot, but enough for his brain to get the feedback it needed to rewire a few neurons. If the mistakes were subtler, advice might help – try going faster – that will make the bike less wobbly. The excitement of going faster and better helped rewire a few more neurons.
When we have this sort of immediate feedback we learn quicker, we improve our game. When the f…

Thank you for finding the bug I missed.

Thank you to the colleague/customer/product owner, who found the bug I missed. That oversight, was (at least in part) my mistake. I've been thinking about what happened and what that means to me and my team.

I'm happy you told me about the issue you found, because you...

1) Opened my eyes to a situation I'd never have thought to investigate.

2) Gave me another item for my checklist of things to check in future.

3) Made me remember, that we are never done testing.

4) Are never sure if the application 'works' well enough.

5) Reminded me to explore more and build less.

6) To request that we may wish to assign more time to finding these issues.

7) Let me experience the hindsight bias, so that the edge-case now seems obvious!

Being a square keeps you from going around in circles.

After a weary few hours sorting through, re-running and manually double checking the "automated test" results, the team decide they need to "run the tests again!", that's a problem to the team. Why? because they are too slow. The 'test' runs take too long and they won't have the results until tomorrow.
How does our team intend to fix the problem? ... make the tests run faster. Maybe use a new framework, get better hardware or some other cool trick. The team get busy, update the test tools and soon find them selves in a similar position. Now of course they need to rewrite them in language X or using a new [A-Z]+DD methodology. I can't believe you are still using technology Z , Luddites!
Updating your tooling, and using a methodology appropriate to your context makes sense and should be factored into your workflow and estimates. But the above approach to solving the problem, starts with the wrong problem. As such, its not likely to find the right ans…