This explanation goes for rhotic varieties of English, including General American (and Canadian) English.
Forget about spelling — English spelling is etymological, not phonetic. “War”, although spelled with “a”, is pronounced with the open-O sound: /wɔr/.
“Word” and “world” are absolutely *not* pronounced with any sort of “o” sound whatsoever. They are spelled with “o” for historical reasons, but *there is no “o”.* That is the why you’re mispronouncing them. “Word” rhymes with “bird”, “curd”, “heard”, and “herd”. There is no “o” — just pronounce the “r” as if it were the vowel. Yes, the “r” can be a stressed vowel in American English. “World” is the same as “word”, except that you need to pronounce “l” between the “r” and the “d”.
Let me know how it goes!