It depends on whether you are looking at the letter of the law, or the spirit of the law.
By the letter of the law, Huck does several illegal (and immoral) things. He harbors a run-away slave, he steals food and supplies, he lies to get out of trouble, and he has nasty habits like smoking and laziness.
However, Huck's spirit is moral in that he sees people for who they are and not just as a color or a position in society.
The best example of this, of course, is the way Huck is with Jim. Due to his upbringing, Huck does call Jim a N*****, and he struggles with the idea that helping a slave get free is stealing another person's property, but he still always sees Jim as a person and a friend.
Whether they are on an island or floating down the Mississippi on a raft, Huck's conversation with Jim is free and easy. There is no hierarchy. Huck doesn't demand Jim bow down to him. Huck even went against his boyhood values by not turning Jim into nearby slave traders.
Ultimately, Huck even risked hell (which is where he thought he would go when he didn't write Miss Watson and tell her where Jim was) to allow Jim his chance at freedom.