首页 实地培训 VIP专区 文章中心 下载中心 精品动画 安全服务 安全产品 企业文化
技术论坛
 -->开创网络首先基于以学员为中心的人性化教学方式。以案例式教学、互动式教学为主线。
 
  当前位置: 首页 > 文章中心 > 攻防实战 >
 
 
Cookies欺骗入侵Cnmai二手信息发布系统
发布者ID:3 作者: 发布时间:2008-07-14 01:32:02 来源: 点击:
 
Cnmai二手信息发布系统是西安二手网开发的专业二手交易系统,功能多,使用比较广泛,官方最高版本以800元的价格出售该程序,如图1所示。但通过我对该程序的检测来看,其安全性就不敢恭维了,请大家往下看。

                          

                                                                                        图一

  系统前后台均现Cookies漏洞

  Cookies欺骗漏洞虽然已经出现很久了,但总有程序员不以为意。下面我们先来看一下其前台login.asp和user.asp中的相关代码。

  =========login.asp中部分代码==========

  userip=Request.ServerVariables("HTTP_X_FORWARDED_FOR")

  If userip="" Then

  userip=Request.ServerVariables("REMOTE_ADDR")

  end if

  rsper("ip")=userip

  rsper.update

  Response.cookies("cnmai")("username")=rsper("username")

  Response.cookies("cnmai")("domain")=Request.ServerVariables("SERVER_NAME")

  Response.cookies("cnmai")("per")=rsper("username")

  Response.cookies("cnmai")("vip")=rsper("vip")

  Response.cookies("cnmai")("id")=rsper("id")

  end if

  Response.Redirect "user.asp"

  rsper.close

  set rsper=nothing

  closedb

  =========user.asp中部分代码========

     dim rs,sql,m,username

  username=request.cookies("cnmai")("username")

  //获取用户名,以得到的用户名来检索数据库

  set rs=conn.execute("select count(id) from [xinxi] where username='"&username&"'")m=rs(0)

  rs.close

  set rs=server.createobject("adodb.recordset")

  sql = "select * from [user] where username='"&username&"'"

  rs.open sql,conn,1,1

  从以上的代码中,我们可以看出,当用户从login.asp中登录后,程序就创建了和用户相关的Cookies;在user.asp中,通过Cookie来获得用户名,以此用户名来检索数据库。但是,Cookie是在客户端创建的,同样也是可以在客户端修改的,所以前后就出现了Cookies欺骗。

  我们再来看一下后台程序中的admin_chklogin.asp、cookies.asp和cookies1.asp,这三个文件验证了用户是否有权进入后台,以及是否是特级管理员。

  =======admin_chklogin.asp中部分代码=======

  Response.cookies("admincnmai")("username")=rs("username")

  Response.cookies("admincnmai")("max")=rs("max")

  Response.cookies("admincnmai")("domain")=Request.ServerVariables("SERVER_NAME")

  end if

  rs.close

  set rs=nothing

  closedb

  Response.Redirect "index.asp"

  ========= cookies.asp中部分代码==========

  if Request.ServerVariables("SERVER_NAME")<>request.cookies("admincnmai")("domain") then

  response.redirect "admin_login.asp"

  end if

  if request.cookies("admincnmai")("username")="" or request.cookies("admincnmai")("domain")="" then

  response.redirect "admin_login.asp"

  end if

  ========= cookies1.asp中部分代码========

  if request.cookies("admincnmai")("max")<>1 then

  response.write" "

  response.write " "

  end if

  从上面的代码可以看出,在admin_chklogin.asp中,如果管理员用户名和密码正确,则写入Cookies;在Cookies.asp中验证了Cookies是否为空,如果为空,则重新登录;在Cookies1.asp中根据Cookies中的max值验证了否为特级管理员。

  和前面一样,代码没有对Cookies进行任何处理就用Cookies中的数据来检索数据库,所以也存在Cookies欺骗。

  实战入侵前台

  明白了Cookies漏洞的存在之后,我们可以进入实战阶段,首先我们来入侵前台。这里我使用了一款Cookies浏览器(随本文资料已经提供),可以直接修改Cookies,如图2所示。

        

                                     图2

  我们在二手网站上注册一个用户,然后使用Cookies浏览器登录,登录之后,就可以看到一串如“cnmai=id=32&vip=0&per=iamgood&domain=2s%2Ecnmai%2Ecom&username=iamgood”的Cookie值。这就是我用用户名“iamgood”登录之后的Cookies值,我们可以替换其中的username,达到冒名发帖的目的。将username改为“health10”,这样,我们就轻而易举地进入了health10的管理界面,就可以冒名发帖和管理他人信息了,如图3所示。我们也可以修改其中的“vip=0”为“vip=1”,使自己成为VIP会员,如图4所示

       

                                    图3

         

                                  图4

实战入侵后台

  从代码上可以看出,后台的入侵和前台差不多,也是修改Cookies的值就可以了。不同的是Cookies的项名,但我们可以从代码上看出项名分别为admincnmai、username和max,据此,可以将Cookies直接改为“admincnmai=id=32&vip=0&max=

  1&per=admin&domain=2s%2Ecnmai%2Ecom&username=admin”,然后点击Cookies浏览器中的“Modify”按钮,接着在地址栏中输入网站系统的后台管理地址:http://2s.cnmai.com/46/admin460/,这样我们就进入了二手网系统的后台管理界面,拥有和特级管理员一样的权限,包括用户管理、信息管理和网站参数设置等,如图5所示。

          

                                      图5

  实战上传木马一波三折

  进入后台并不是最终目的,我们的最终目的是控制整个网站,这就要用到ASP木马了。我们通过前台的上传图片功能以及后台的数据库备份功能来获得我们的ASP木马,如图6和图7所示。

            

                                    图6

             

                                      图7

  首先将一个ASP木马的后缀名改为gif,然后通过图片上传功能上传,将这条图片信息发布,就可以得到这个图片(其实是ASP木马)的地址;接着来到后台的数据库备份,在“当前数据库路径(相对路径)”处输入ASP木马图片的地址,在“备份数据库名称”中输入mm.asp就可以了。本来这样的思路是没有错的,但在上传ASP木马图片时,却出现了问题,如图8所示。

                  

  原来在Upfile.asp中,系统对上传文件进行了检测,如果代码中含有“<%”和“script”字符,

========Upfile.asp文件中部分代码==========

if instr(LCase(my_string),"&lt;%")<>0 or instr(LCase(my_string),"<%")<>0 or instr(LCase(my_string),"Request")<>0  or instr(LCase(my_string),"Session")<>0 or instr(LCase(my_string),"script")<>0 then

dim muma

muma=1

Response.Write "<script language='javascript'>alert('你上传木马病毒!上传失败');</script>"

    从代码中可以看到,程序只限制了“<%”,本以为可以将ASP木马中的“<%”改为“< %”,也就是在中间加一个空格,但我错了,这条路走不通,怎么办呢?这时,我想到了一句话木马。在发贴时,我们只需要输入一句话木马,然后在后台备份数据库为ASP文件,同样可以达到上传ASP木马的目的,如图9所示。这里可以直接利用一句话木马,不需要自己去构造数据了,图10为我得到的ASP木马入口

   

  漏洞修补

  Cnmai二手信息发布系统虽然并不直接对外开放程序的源代码,但网上此系统的修改版很多,在百度中输入“inurl:asp?cnmai”可以搜索到4720篇,其中大部分都存在问题,包括官方网站,如图11所示。

   

                               图11

  通过以上入侵,我们发现,仅仅使用Cookies认证是不够的,但可以用Session加Cookies双重认证来解决这一问题。因为Session是保存在服务器端的,所以就不存在被欺骗了。具体方法为,在用户登录创建Cookies时,同时创建一个和用户名相关的Session,如Session(“flag”)=rs(“username”) ,然后在每一个页面都判断这个Session(“flag”)的值,这样一来,基本就可以解决问题了。



 
 
 
 
   
 
   
     
  • 课堂实景
  • 课程体系
  • 培训课程
  • 学费介绍
  • 巧用mstsc命令登录到console的方法
  • 课程介绍
  • 团队介绍
  • Linkideo免费Vpn
  • 就业前景
  • 汇款方式
  •  
     
     
    无标题文档
    一流开创网一流开创网一流开创网一流开创网一流开创网一流开创网一流开创网
      关于我们 | 联系方法 | 招聘信息 | 加入会员 | 诚征代理 | 广告服务 | 欢迎投稿 | 友情链接  
      版权所有:吉林省开创科技信息有限公司  
      服务热线:0431-84714442
    Copyright 2001 - 2007 All Rights Reserved