Now I see the main issue with the hitbox is that it can move all over the place, this is because you spawn it on the wrong layer, 1 instead of 0. Should be same layer as the player. Also do not call layer 0 'layer 1' that is really confusing.
The condition I mean the one for idle animation which says 'punch animation is not playing', you can add this to run as well because at the moment if you run while punching it abruptly stops the punch.