Labour launched the attack as the mayor previously said all of the Greater London Authority's (GLA) work experience posts should be paid.
Labour said Mr Johnson's failure to even pay some of his own staff showed his support for the low paid was just "empty rhetoric".
City Hall said the post was a "traineeship", not an "apprenticeship".
Mr Johnson told London Assembly Labour member Fiona Twycross in June last year "all formal GLA work experience" should pay the London living wage, currently at Â£9.15 an hour.
But the following September, in a letter to Ms Twycross, he said because trainees carried out basic work such as admin, it would "not be appropriate" for them to be paid like apprentices.
City Hall's placement offers two weeks' "employability and work readiness training" and 10 weeks' work experience.
It is an administration role including photocopying, filing, maintaining electronic files, updating databases, diary management and event support.
The GLA said it would pay travel expenses and for lunch.
Ms Twycross said: "There are no two ways about it; if you're in work you should be being paid. It's really that simple.
"It is shameless hypocrisy on the mayor's part to publically support the living wage whilst forcing young people to work unpaid for three months at City Hall."
A spokesperson for the mayor said: "Traineeships are a government programme for people who need work experience and are not yet ready to secure apprenticeships or paid work."
They said City Hall's traineeship offered up to two days of training per week plus work experience.
Trainees could then apply for an internship or a paid job, they added.
But City Hall has previously said that last year none of its trainees got an apprenticeship at the end of their work.
London Mayor Boris Johnson has been branded a hypocrite for offering three months of unpaid work at City Hall.