Need help with sub surf weirdness
As stated by @bertmoog this is result of bad topology. I will not elaborate on that as you have enough information in the link in comments, but I will show you how your topology should look like if you want to use Subdivision Surface modifier.

Final result:



I don't know how much do you know about modeling so I'll be brief, and if you need more info - ask in comments.

I've started with simple Plane with Mirror modifier on X and Y axes, extruded it upwards along your mesh. After that I've Subdivided it once and used Inset on top face. Then with LoopTools addon I've created Circle from vertices created by Inset, extruded it down and filed with Grid Fill, to achieve hard edges I've used Bevel Tool (not modifier).

Keywords marked with Bold should be enough for you to learn about this simple technique.