Boolean modifier makes dent, not a hole
The Boolean modifier is supposed to work like that!

In Blender objects are usually full 3D models, with a surface and a volume: in your case, since your car's "walls" are made of only one layer, the Boolean modifier thinks that the object is full, and that the inside of the car is its volume (it doesn't work like that, but it's to make the concept easier).

That's why it makes a dent: it is trying to remove part of the volume of the car.

However, you only want to remove part of the car's door, because you know that the inside of the car is empty, so you need to make the doors thick (so not one layer, but 2 with a volume inside).

The easy fix is a Solidify modifier before the Boolean, like shown in the picture