Progressor wrote:
Can you explain what happend in more detail?
A few days ago, I was bored and thought I would poke around a bit with the site's code. I noticed that in at least one function, a string from a POST request was being used in a raw database query, without being escaped. Generally, this is a huge security gap, since it means a user can insert their own values to modify the query to do all kinds of nasty things (drop the users table, deleting every user on the site, set everyone's level to 0, set their own level to a million, whatever). I was curious if this particular function constituted a real security gap, so I started modifying the POST data in the requests I sent to the site (which sounds fancy, but it's not - it's really no different from, say, manually editing a URL).
So anyways, I tried a few things (nothing that would actually affect the site, just stuff that would give me an idea of what was possible). Turns out the vulnerability wasn't actually that big, since the PHP function they used to execute SQL queries prevents you from doing more than one query at once (so you can't insert arbitrary expressions by ending the query with a semicolon, like '";DROP TABLE users;--'). There was a very small, subtle trick you could use to modify the query so that it would (eventually) yield people's passwords (at least I think it would have worked - I never went past the first step), but even that wouldn't have been a huge security hole since they're stored in an encrypted form. (However, they're not salted, so there's still theoretically a potential security breach).
[By the way, I should point out that I'm really not anything close to being what you would call a 'hacker'. This was the first time I had ever attempted SQL injection; before then, it was something I had only read about or heard of in lectures. So, in addition to helping improve the site's security, there was also some aspect of excitement in trying out a real live SQL injection 'in the wild'.]
Anyways, at this point as I was just about to send Mojko an e-mail letting him know about the problem, I got a message from Umage, and was banned shortly thereafter.
I realize in retrospect that, as Umage told me, I should have at least sought permission from him or Mojko before poking around, since they had no way of knowing at the time that I wasn't an evil hacker. It was just a spur of the moment sort of thing. I guess I should have guessed that the admins would have it set up so that they get e-mail or something in response to internal server errors.