伤离别 發表於 2011-11-19 20:39:06

万博企业网站管理系统注入漏洞(MemberLogin.asp)

这两天拿站的时候,好几回都遇到个叫万博的企业管理系统,今天有时间就下载过来看了看,找到了个注入漏洞,郁闷的是,得手工,没法用工具,累人的事。因为已经找到了一个,我就没兴趣接着往下看了。 <br /><br />这个注入漏洞发生在html/MemberLogin.asp文件里,在Include下有NoSqlHack.Asp文件也没调用,呵呵,就有了我们利用的地方了。 <br /><br />MemberLogin.asp源码如下: <br /><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode7"> <br />&lt;%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%&gt; <br />&lt;% Option Explicit %&gt; <br />&lt;%Response.Charset="utf-8"%&gt; <br />&lt;!--#include file="../Include/Const.asp"--&gt; <br />&lt;!--#include file="../Include/ConnSiteData.asp"--&gt; <br />&lt;!--#include file="../Include/Md5.asp"--&gt; <br />&lt;% <br />if request.QueryString("Action")="Out" then <br />session.contents.remove "MemName" <br />session.contents.remove "GroupID" <br />session.contents.remove "GroupLevel" <br />session.contents.remove "MemLogin" <br />response.redirect Cstr(request.ServerVariables("HTTP_REFERER")) <br />response.end <br />end if <br />Public ErrMsg(3) <br />ErrMsg(0)="&middot;登录名不正确,请返回。" <br />ErrMsg(1)="&middot;登录密码不正确,请返回。" <br />ErrMsg(2)="&middot;帐号非使用状态,请返回。" <br />dim LoginName,LoginPassword,VerifyCode,MemName,Password,GroupID,GroupName,Working,rs,sql <br />LoginName=trim(request.form("LoginName")) <br />LoginPassword=Md5(request.form("LoginPassword")) <br />set rs = server.createobject("adodb.recordset") <br />sql="select * from NwebCn_Members where MemName='"&amp;LoginName&amp;"'" <br />rs.open sql,conn,1,3 <br />if rs.bof and rs.eof then <br />WriteMsg(ErrMsg(0)) <br />response.end <br />else <br />MemName=rs("MemName") <br />Password=rs("Password") <br />GroupID=rs("GroupID") <br />GroupName=rs("GroupName") <br />Working=rs("Working") <br />end if <br />if LoginPassword&lt;&gt;Password then <br />WriteMsg(ErrMsg(1)) <br />response.end <br />end if <br />if not Working then <br />WriteMsg(ErrMsg(2)) <br />response.end <br />end if <br />if UCase(LoginName)=UCase(MemName) and LoginPassword=Password then <br />rs("LastLoginTime")=now() <br />rs("LastLoginIP")=Request.ServerVariables("Remote_Addr") <br />rs("LoginTimes")=rs("LoginTimes")+1 <br />rs.update <br />rs.close <br />set rs=nothing <br />session("MemName")=MemName <br />session("GroupID")=GroupID <br />'=========== <br />set rs = server.createobject("adodb.recordset") <br />sql="select * from NwebCn_MemGroup where GroupID='"&amp;GroupID&amp;"'" <br />rs.open sql,conn,1,1 <br />session("GroupLevel")=rs("GroupLevel") <br />rs.close <br />set rs=nothing <br />'=========== <br />session("MemLogin")="Succeed" <br />session.timeout=60 <br />response.redirect Cstr(request.ServerVariables("HTTP_REFERER")) <br />response.end <br />end if <br />%&gt; <br /></div><br />看到了,LoginName未作过滤,直接代入查询,因此产生了这个注入,就是利用的方法有点麻烦,我试了下,没办法用工具,郁闷了。 <br /><br />手工如:wzasdf' and exists (select * from ) and '1'='1 <br /><br />修复方法:LoginName=trim(request.form(&quot;LoginName&quot;)) <br />用LoginName=server.htmlencode(trim(request.form(&quot;LoginName&quot;)) )<br />或加入include目录里面的NoSqlHack.Asp记载一下也可以。<br /><br />FROM http://www.st999.cn/blog
頁: [1]
查看完整版本: 万博企业网站管理系统注入漏洞(MemberLogin.asp)