I totally know what you mean. Really. Low self-esteem is something that's crap to deal with because it's within your own mind. First of all, you have to deal with yourself before you can even begin to make friends. Yeah people can befriend the "broken" person or whatever, but for people to want to be around you and become friends, you need to show them that you're worth something. Would you want to hang out with someone who was constantly down on themselves? Probably not.
It sounds like you need to just put yourself in social situations. If you're still in high school, go to a football game or a pep rally or some kind of school event where there will be a lot of people milling around. You don't even have to talk to anyone; just be there and watch how other people interact with their friends. Maybe pick one specific outgoing person to watch, and take mental notes about their behavior so you can try it out later when you're with a few people.
Remember, improving your attitude about yourself isn't going to happen in one day. Plan out certain things you want to work on. For example, if you're not happy with your body, try to lift weights 3 times a week. If you want to work on your personality, do the exercise I outlined above. It's going to be a process, but if you really want to change and you stick with things and really put your mind to it, you can change yourself.
-------
when i play doctor, i play to win