Apparently these sentences are equivalent, but as far as I know に marks the subject who gives the object, I don't understand how do they have the same meaning
Is there anything am I missing?
This くれる means "someone give something to someone", so the action is the other side. そのお菓子を息子にくれますか? is translated as "Can you give the snack to my son?"
This もらう means "someone receive something from someone", so the action is speakers' side. そのお菓子を息子にもらえますか? is translated as "Can I receive the snack from my son?" but it is unnatural to say that to someone.
I think "そのお菓子を息子にくれませんか?", "そのお菓子を息子にください" are more common than "そのお菓子を息子にくれますか？".
If you use「もらう」the subject is you or someone in your in-group
If you use「くれる」the subject is someone else
In both cases the beneficiary is you or someone in your in-group.
(They) handed (my) son (some sweets) for (me)
Someone handed something to your son for you
(I) had (our) son hand (them) (some sweets) for (us)
You had your son hand something to someone for you and your wife
Would (you) hand (my) son (some sweets) for (me)?
You are asking someone to hand something to your son
Can (you) hand (some sweets) to (my) son for (me)?
You are asking someone if they will hand something to your son for you
(I) got (some sweets) from (my) son
You received something from your son
(I) had (him) hand (some sweets) to (my) son
You had your son hand something to someone else for you