Figure out who stands to gain, and convince them. For management, try two tactics in the sales pitch:
1. Better customer experience (seeing fewer defects) due to higher quality code.
2. Faster and more predictable creation of new features due to higher quality code (after the investment in the needed changes) which should improve business results over time.
If these fall on deaf ears, then play hardball and say that without some investment in the code base the code will become unable to support the business, and the business will not be able to continue. It takes a while to get here, but it does happen.
In parallel, sell these changes to the development team so that they welcome instead of resist the changes. Make sure the dev team is part of deciding and implementing these changes. I expect that most developers would welcome the changes you suggest. If not, perhaps they would fit better in a different environment that required less disciplined software engineering practices.