Language of regular grammar
Here's a simpler grammar:
$$
S\rightarrow XY\\
X\rightarrow aXb\mid ab\\
Y\rightarrow cYd\mid cd
$$
The key observation in cases like this is that strings in the language consist of two pieces concatenated: $a^nb^n$ and $c^md^m$, each of which can be generated by a simple grammar.