A recent public announcement by Inti De Ceukelaire (@securinti) shed some light on an exploit that he has been able to use on multiple websites. He has named this exploit “Ticket trick helpdesk hacking”.
You could be forgiven for thinking that this exploit resulted from some typical social engineering. Indeed, that was my first impression when this article was first published.
You may have noticed that when you raise issues with companies using an online system you will receive an email from the ticketing system which has a @company.com address. If you look even more closely you may notice that before the @ symbol you will find some subject information (or not) and a random token.
The purpose of these email addresses are to allow you to interact with your ticket via email so you don’t have to go to company.com’s website, navigate to the ticketing system and check on the status or even reply.
Many web services have sprung up that offer commercial services to companies and organisations. To help minimise the administration overhead they allow a user to signup to commercial services of their company by using an email address @company.com.
I think you can clearly see where this headed!
- Go to company.com’s ticketing system and enter a new ticket.
- Receive an email from company.com’s in the form
- Find a service online that company.com uses. Like GitHub, Yammer or Slack.
- Try to join company.com’s team. You will be asked for an email address at company.com
- Paste in the email address
- Visit the issue tracker and a confirmation email should have been appended to the issue.
- Click the verification link and you’re in.
Further exploitation of help desks
So, things don’t stop there. There are many help desk portals like ZenDesk, Kayako, etc. Some of these do not require any email verification when setting up a new account. Hmmm.
- Create an account at company.com using an email address at service.com. We will use the email address @service.com that sends out verification links. This might look like firstname.lastname@example.org.
- We find the one of company.com’s commercial instances at service.com.
- We create an account at service.com with the support email of company.com; something like email@example.com.
- Now firstname.lastname@example.org sends an email to email@example.com.
- If you are still awake you will realise we can login to company.com using our account firstname.lastname@example.org and we will see tickets. One of which will be our verification email. Click the link to verify.
- You have now joined company.com team on service.com.
There implications for infiltration of private teams is very significant. Many email addresses are used by companies that could be registered in the same way; think email@example.com where you could intercept password reset emails, or firstname.lastname@example.org to see payment details, or email@example.com to see invoices.
There are many, many, vulnerable applications and processes that are exploitable right now. Bug bounties were awarded to Inti but we see this as an issue that will remain pervasive in the short term.
Am I vulnerable?
Are all of the following true?
- Support tickets are created by email.
- Support tickets are viewable by unverified email addresses.
- Public issue trackers which use unique email addresses to post information to an issue, forum, messaging service, or user account.
If you fall into the category below then have a look below or (contact us)[/contact/]
- Use a seperate domain for automated emails; support.company.com, reply.company.com, mail.company.com.
- Add random tokens to outgoing mail; e.g. no-reply+cmFuZG9tIGl0IGlzIG5vdCB3ZWxsIGRvbmU@mail.company.com