欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

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

程序员文章站 2022-07-03 10:09:52
这个注入漏洞发生在html/MemberLogin.asp文件里,在Include下有NoSqlHack.Asp文件也没调用,呵呵,就有了我们利用的地方了... 11-11-19...
这两天拿站的时候,好几回都遇到个叫万博的企业管理系统,今天有时间就下载过来看了看,找到了个注入漏洞,郁闷的是,得手工,没法用工具,累人的事。因为已经找到了一个,我就没兴趣接着往下看了。

这个注入漏洞发生在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