马克斯CMS 2.0 beta (Maxcms)SQL注入漏洞
关键字:首页-马克斯CMS2.0
这个系统是国内非常流行的视频点播系统,之前的1.5版本漏洞非常多,2.0版本在安全方面有所提高,但是依然有漏洞存在。
看代码
incajax.asp
1dim action : action = getForm("action", "get")2response.Charset="gbk"3
4Select case action5 case "newslist" : viewNewsList6 case "newscontent" : viewNewsContent7 case "digg","tread" : scoreVideo(action)8 case "reporterr" : reportErr9 case "hit" : updateHit10 case else : main11End Select12terminateAllObjects13
14……15
11 collapsed lines
16Sub scoreVideo(operType)17 dim sql,id,digg,returnValue : id=getForm("id","get")18 ‘通过get方式获取id的值19 if rCookie("maxcms2_score"&id)="ok" then die "havescore"20 if isNul(id) then die "err"21 'on error resume next22 digg=conn.db("select m_digg from {pre}data where m_id="&id,"execute")(0)23 ‘ 参数id,没有过滤就带入sql语句进行查询24 if err then digg=0 : err.clear()25 if not isNum(id) then echoSaveStr "safe" else id=clng(id)26 ‘ 查询到digg,注意返回的内容
……利用就很简单了,构造sql语句提交(默认结构是m_manager,m_username,m_pwd,根据返回的内容判断就可以了。如果构造的语句是正确的,就返回类似警告
你提交的数据有非法字符,你的IP【xxxx】已被记录,操作
构造的语句不正确,则返回500 Poc :
另外一处注射
1Sub checkPower2 dim loginValidate,rsObj : loginValidate = "maxcms2.0"3 err.clear4 on error resume next5 set rsObj=conn.db("select m_random,m_level from {pre}manager where m_username='"&rCookie("m_username")&"'","execute")6 loginValidate = md5(getAgent&getIp&rsObj(0))7 if err then wCookie "check"&rCookie("m_username"),"" : die "<script>top.location.href='index.asp?action=login';</script>"8 if rCookie("check"&rCookie("m_username"))<>loginValidate then wCookie "check"&rCookie("m_username"),"" : die "<script>top.location.href='index.asp?action=login';</script>"9 checkManagerLevel rsObj(1)10 set rsObj=nothing11End Sub其中12
13Function rCookie(cookieName)14 rCookie = request.cookies(cookieName)15End Function
通过伪造cookie中m_username的值可以进行注射
不过要知道后台管理目录,默认是/admin/,多个页面可以触发改函数 比如 /admin/admin_ajax.asp
作者:flyh4t http://bbs.wolvez.org