At least 18 people have been killed and at least 23 injured when a bus carrying foreign migrants and locals crashed in northwestern Mexico.