Johnston, 20, has played 27 NRL games since making his debut on ANZAC day against the Broncos last season, scoring 28 tries at a rate of more than one try per game to start his first grade career.
A product of the La Perouse Panthers, Johnston has gone on to make his debut for the Australian Kangaroos in the ANZAC Test this year.
McInnes, 21, has played 12 NRL matches to date, all of which have been for the Rabbitohs, having made his first grade debut against the Dragons in round five, 2014.
Rabbitohs Head Coach Michael Maguire sees big futures ahead for both Johnston and McInnes.
“We’re absolutely delighted to be extending the contracts of both ‘AJ’ and ‘Cam’,” Coach Maguire said.