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