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

Can Gen-AI understand Payments?

When it comes to rolling out updates to large complex banking systems, things can get messy quickly. Of course, the holy grail is to have each subsystem work well independently and to do some form of Pact or contract testing – reducing the complex and painful integration work. But nonetheless – at some point you are going to need to see if the dog and the pony can do their show together – and its generally better to do that in a way that doesn’t make millions of pounds of transactions fail – in a highly public manner, in production.  (This post is based on my recent lightning talk at  PyData London ) For the last few years, I’ve worked in the world of high value, real time and cross border payments, And one of the sticking points in bank [software] integration is message generation. A lot of time is spent dreaming up and creating those messages, then maintaining what you have just built. The world of payments runs on messages, these days they are often XML messages – and they ...

Don't be a Vogon, make it easy to access your test data!

 The beginning of the hitch-hikers guide to the galaxy leads with an alien ship about to destroy the Earth, and the aliens saying we (mankind) should have been more prepared – as a notice had been on display quite clearly – on Alpha Centauri the nearby star system, for 50 years. Seriously, people - what are you moaning about – get with the program?  The book then continues with the theme of bureaucratic rigidity and shallow interpretations of limited data. E.g. The titular guide’s description of the entire Earth is one word: “Harmless”, but after extensive review the new edition will state: “Mostly harmless”. Arthur Dent argues with the Vogons about poor data access This rings true for many software testing work, especially those with externally developed software, be that external to the team or external to the company. The same approaches that teams use to develop their locally developed usually don’t work well. This leads to a large suite of shallow tests that are usually h...

Can 'reasoning' LLMs help with recs data creation?

  A nervous tourist, glances back and forth between their phone and the street sign. They then rotate their phone 180 degrees, pauses, blink and frown. The lost traveller, flags a nearby ‘local’ (the passer-by has a dog on a lead.   “Excuse me…” she squeaks, “How may I get to Tower Hill?” “Well, that’ s a good one” ponders the dog walker, “You know…” “Yes?” queries the tourist hopefully. “Yeah…” A long pause ensues then, “Well I wouldn’t start from here” He states confidently. The tourist almost visibly deflates and starts looking for an exit. That’s often how we start off in software testing. Despite the flood of methodologies, tips on pairing, power of three-ing, backlog grooming, automating, refining and all the other … ings ) We often find ourselves having to figure out and therefore ‘test’ a piece of software by us ing it. And that’s good. Its powerful, and effective if done right. But, like our dog walker, we can sometimes find ourselves somewhere unfamiliar...