The Australian woman, 29, was with a tour group at the popular Ningaloo Reef on Saturday when she was struck, the BBC reported.
She reportedly suffered fractured ribs and internal bleeding.
St John’s Ambulance said the woman had suffered internal bleeding and upper torso injuries “from the crush”.
Unconfirmed reports said she was trapped between two of the giant mammals, which can grow up to 62 ft.
She was treated in the town of Exmouth before being flown to a hospital in Perth, where she was in a “serious but stable condition” on Monday. Ningaloo Reef on Western Australia’s Coral Coast is known for its diversity of marine life and is one of the state’s best-known tourist spots.
Snorkelling expeditions on the coral reef are popular.
Western Australia is home to the largest known population of humpback whales, which are typically regarded as safe to swim among despite their size.
The region’s borders are currently closed to international and interstate visitors as part of efforts to keep out the coronavirus.