Mikayla Gede heard the crash from outside the station and raced inside with her friend Emily Benson. They heard a woman trapped inside the toilets crying for help.
Mikayla, 17, and her friend called the ambulance and pulled at the door to rescue her.
"We wrenched the door open," she told AAP.
"The woman got out and said she was okay.
"It was really smashed up in there. The wall had come down in the shape of the front of a train, and it had gone through the male bathroom and into the female."
Ms Benson said she had been about to catch a train on her way to a TAFE college.
"If I had gone 10 minutes earlier I could have been on the platform and died," she told AAP.
Acting Cleveland Fire Station officer Rob Hawxwell was one of the first at the scene about 9.45am (AEST) in the bayside suburb.
"(It has) caused a lot of carnage and damage," he said. "The passengers were very lucky."
Halfway through the search Mr Hawxwell learned his son had been about to go into the station toilets when the train hit.
"My son heard a loud bang and then got out of the station pretty quickly," Mr Hawxwell said. "It wasn't a good message to get."
The passengers were treated at the scene, with 10 taken to hospital as a precaution before being released.
Mr Hawxwell said Queensland Rail would determine whether an electrical fault led to the crash.
The corrugated iron roof of the station building, which was completed only six months ago, was torn to shreds by the impact.
Peter Stevens, who lives near the station, said it sounded "like a car smashing into a brick wall".
"It's not something you see every day. It's quiet old Cleveland, on one of the quietest days of the week," he told AAP Superintendent Jim Keogh said the train was approaching the station from the city when it derailed.
The police forensic crash unit is investigating.
-AAP