Git is after all designed for this distributed scenario, so you'd think it would be possible, what about something like:
Setup:
git add remote gitlab ...
git add remote github ...
Then whenever you need to sync: git fetch --all
git checkout -b gh --track github/master
git checkout --track gitlab/master
git merge/rebase gh
git push gitlab
Could probably be done shorter but those steps should do it..