Client and Server both know the Client's password.

Client wants to login. Server sends Client a random string.

Client concatenates the string with their password. Clients sends the HASH of this to the server.

Server performs the same operation without sending the hash anywhere. Server verifies their resulting hash equals the hash recieved by the Client.

Server allows Client to login.

I think this is a zero-knowledge proof because the Client proved they know their password without actually sharing their password.

What am I misunderstanding?

The reason I assume I'm misunderstanding something is because this seems too good to be true. If zero-knowledge password proofs were so simple, people would want to use this instead of something like SRP.