探索黑客技术攻防,实战研究与安全创新

导航菜单

黑客的Cookies欺骗与防御技术

在网络上每一个用户进入一个网站时,都会获得一张通行证。这张通行证是给用户身份的标识,同时有一定的使用时间期限。在许可时间内,用户可以凭着这张通行证在网站执行自己的权限。但这张通行证一旦落入攻击者的手中,攻击者就可以伪装成该用户,欺骗网站执行各种恶意的行为。而这张通行证就是Cookies信息。

透析Cookies

Cookies在开发之初,是作为一个改善用户体验,为了提高网络使用速度而出现的。在Web方面攻击渐成主流攻击时,谁都没有想到它会爆发出如此大的安全隐忠,使很多表面上看起来非常坚固的Web应用系统遭到灭顶之灾。

Cookies的定义及用途

Cookies在网络系统中几乎是无处不在的,但很多用户却不知道Cookies到底是什么,它有什么用途。下面来了解一下Cookies的定义及其用途。

1、Cookies的定义

为了方便用户浏览、准确收集访问者信息,很多网站都采用了Cookie技术。Cookie文件中存放了一些MD5加密信息,如用户ID、密码、停留时间等,如果网站在硬盘上创建了Cookie以后再次访问该站时,网站就会读取该Cookie再做出相应的动作,例如不输入用户ID、密码直接登录,进行身份和权限验证等。

Cookie分持久Cookie和会话Cookie( session Cookie)两种类型。会话Cookie位置:服务器端、保存在内存(浏览器进程)中,当浏览某网页时创建,关闭此页即删除。

例如,有这样一个会话Cookie:首次登录网站时,服务器会验证用户的授权证书创建一个会活Cookie,在不关闭浏览器的情况下,如果用户再次访问该站,服务器就会读取该会话Cookie验证你是谁。验证通过后服务器将返回请求的页面,否则就得重新登录。一旦退出该站,会话Cookie即被删除,你的会员权限也将随之终

2、 Cookies用途和工作过程

Cookies在网络应用中的用途就其实质来说,服务器可以利用Cookies包含信息的任意性,筛选并经常性维护这些信息,以判断在HTTP传输中的状态。

举例来说,Cookies最典型的应用,就是判定注册用户是否已经登录网站。可能会提示用户,是否在下一次进入此网站时保留用户信息以便简化登录手续。另一个重要应用场合是“购物车”之类的处理。用户可能会在一段时间内在同一家网站的不同页面中选择不同商品,这些信息都会写入Cookies,以便在最后付款时提取信息。

在Ooogle提供个人化服务的网站上,如果设定了用户自己喜欢的配置,并且存储了Cookies,每次用户登录该网站时,浏览器会先检查用户是否有预先定义的Cookies,如果有,则浏览器便会将Cookies和用户对网页的请求。一起发送给服务器,返回用户自己定义的页面和其他相关信息,iGoogle的个性化界面8-1。

下面举例讲述Cookies的工作原理和过程:通常Cookies通过HTTP Headers(头信息)从服务器端返回到浏览器上。服务器端在响应中利用 Set-Cookie header创建一个Cookie,浏览器就会在请求中通过Cookie header所包的含这个已经创建的Cookies,且将它返回至服务器,从而完成浏览器的认证

例如,这里创建一个名字为login的Cookie来包禽访问者的信息,创建Cookie时,服务器端的Header如下,这里假设访问者的注册名是“duoduosixu”,同时还对所创建的Cookie的属性如“path”、“domain”、“expires”等进行了指定。

上面这个Header会自动在浏览器端计算机的Cookie文件中添加一条记录。浏览器将变量名为“login”的Cookie赋值为“duoduosixu”。在实际传递过程中这个Cookie的值是经过了URLEncode方法的URL编码操作的。这个含有Cookie值的HTTP Header被保存到浏览器的Cookie文件后,Header就通知浏览器将Cookie通过请求以忽略路径的方式返回到服务器,完成浏览器的认证操作。

此外,服务器使用了Cookie的一些属性来限定该Cookie的使用。例如Domain属性能够在浏览器端对Cookie发送进行限定的,其体到下述例子,该Cookie只熊传达到指定的服务器上,而决不会跑到其他的Web站点上去。Expires属性则指定了该Cookie保存的时间期限,例如上面的Cookie在浏览器上只保存到1999年3月1日1秒。

当然,如果浏览器上 Cookie太多,超过了系统所允许的范围,浏览器将自动对它进行删除。至于属性Path,用来指定Cookie将被发送到服务器的哪一个目录路径下。

探秘系统中的Cookies

由于Cookies在为用户提供很多便利的同时,也在某种程度上危害着用户的安全(Cookies中可能存储着访问者的私人隐私等重要信息,一旦被攻击者入侵,很容易对用户构成威胁)。因此,可以通过相关设置,决定使用或禁用Cookies。

1、  IE环境下的Cookies设置

在各种常用的浏览器中都有启用和禁用Cookies选项,这里以IE浏览器(IE 6.0以上版本)为例讲述Cookies设置。

打开IE浏览器,选择“工具”→“Internet选项”菜单项,打开“Imernet选项”对话框,在“隐私”选项卡中看到Cookie的设置界面,8-2。

拖动页面中的滑块可选择不同的安全级别,每个安全级别代表着不同的含义。

将滑块向下拖动一个级别,8·3。“低”级别表示阻止没有合同隐私策略的第三方Cookie,同时对没有经过用户允许的第三方读取用户信息的Cookie进行限制保存。

继续将滑块向下拖动,页面中显示的内容8.4。“接受所有Cookie”级别表示接受所有网站的Cookie,将其保存在用户的计算机中。本地计算机上已存在的Cookie可被创建其网站读取。当用户设置为该安全级别时,表示可让任何网站随意使用Cookie对用户的计算机进行相关操作,可以给本地计算机带来很大安全风险,应慎重选择。

拖动滑块,将安全级别设置为“中”,即浏览器的默认级别。此级别除继承“低”级别的安全策略外,还增加了非法读取用户隐私信息的第一方Cookie的限制。因此,建议用户选择此级别。

拖动滑块,将安全级别设置为“中高”,8,5。该级别与“中”级安全策略相似,但第三条安全策略为“阻止使用个人可标识信息而没有隐含许可的第一方Cookie”。

拖动滑块,将安全级别设置为“高”,8—6。该级别将阻止所有没有合同隐私策略的Cookie.同时阻止使用个人可标识信息而没有用户的明确许可的Cookie。拖动滑块,将安全级别设置为“阻止所有Cookle”,8-7。该级别是所有安全级别中的最高级别,它将阻止来自所有网站的Cookie,同时本地计算机上的现有Cookie也不能被网站读取。

如果只想阻止个别网站的Cookie,还可单击“站点”按钮,在“每站点的隐私操作”对话框的“网站地址”文本框中输入拒绝访问的网站,单击“拒绝”按钮,将其添加到下面的列表中,8-8。

当选择非常苛刻的安全级别后,一些不想被阻止的网站也被拒绝访问,此时,也可在“每站点的隐私操作”对话框中设置总是允许访问的网站。在“网站地址”文本框中输入允许访问的网站,单击“允许”按钮,将其添加到下面的列表中,8—9。

单击“隐私”选项卡中的“高级”按钮,可在“高级隐私策略设置”对话框中对第一方Cookie和第三方的Cookie进行设置,8-10。第一方Cookie是正在浏览的网站的Cookie,第三方Cookie是非正在浏览的网站发给用户的Cookie。对第三方Cookie,用户通常要选择“拒绝”。另外,对于其他浏览器下的Cookie设置,这里不再赘述。

2、本地Cookies内容解密

在"Internet选项”对话框中的“常规”选项卡中单击“设置”按钮,打开“设置”对话框,8-11。单击“查看文件”按钮,进入Inten,et的临时文件存放文件夹Temporary

Imernet Files中,8-12。该文件夹中列出了全部的Intemet临时文件,其中名称如“cookies:username@hostname”的文本文件就是Cookies文本文件,“hostname”就是所访问的网站的域名,“username”就是访问该网站时使用的Windows用户名。Cookie文件一般都很小,大多是1—2 KB,打开任意一个Cookie文件,其内容8-13。

也可直接将系统隐藏的文件和文件夹打开,进入Windows XP系统存放Cookie文件的默认目录“C:\Documents and Settings\Administrator\Cookies”(其他系统下路径可能不同)中,查看Cookie文件。

Cookie中的内容大多数都经过了加密处理,只能看到一些毫无意义的字母和数字组合,只有通过专门工具才能分析出其中各项信息的含义。这里以“Cookie pal”工具为例,Cookiepal是一个非常完善的浏览器Cookie的管理工具,允许用户查看、修改、删除Cookie文件,支持IE3和NC3以上版本浏览器。可以允许用户自动接受或拒绝网站加给自己的Cookie,使用其中的Cookie分析功能可以查看存放在本地的Cookie信息。

下载并运行Cookie pa l.7c工具,进入其主窗口中,8-14。在“Cookies”选项卡列表框中列出了所有已经保存在系统中的Cookie,单击列表框下方的“删除”按钮进行删除,或单击“刷新”按钮刷新列表,8-15。可看到每个Cookies文件大致包含4个信息,即目标服务器名字、Cookies过期时间表、名称和数值。很多网站的Cookies都记录了用户的用户名,这将给攻击者的入侵带来很大的便利。

Cookies欺骗攻击案例

每个Web站点都有自己的Cookie,而其内容可随时读取,但只能由该站点的页面完成。每个站点的Cookie与其他所有站点的Cookie保存在同一文件夹中的不同文件内。一个Cookie就是一个唯一标识客户的标记,包含了用户的各种信息。最常见的Cookie信息是用于保存用户某个网站的登录密码,8-16。这样,当用户再次访问同一站点时,就不用再输入密码而直接登录该网站。

由于Cookies信息是保存在客户端的,所以可埘Cookies信息进行设置。Cookies信息安全性不高,黑客完全可通过伪造Cookies信息的方法,绕过网站程序的验正,也不需输入密码就可以登录网站,甚至进入网站后台管理页面。Cookies欺骗原理与技术实现步骤

当计算机被Cookies欺骗攻击后,很多管理员都不明白自己的系统是怎么被攻击入侵的。因为Cookies文件中虽然记录着用户的账户ID、密码之类信息,但在网络中传递时Cookies是经过加密的,而且还足用了很安全的MD5加密。这样,经过加密处理后的Cookies信息,即使被网络上的攻击者截获,他们能看到的也只是一些无意义的字母和数字。

实质上,攻击者要想冒充别人的身份登录网站,并不需要知道截获的Cookies文件中那些经过加密的字符串的含义,他们只要把别人的Cookies向服务器提交,且能够通过服务器的验证就可以了。由此可见,Cookies欺骗实现的前提条件是服务器验证程序存在漏洞,且攻击者要获得被冒充人的Cookies信息。因此,攻击者要获得别人的Cookies,  一般会用支持Cookies的语言编写一段代码,再把这段代码放到想要Cookies的网络中,这样,访问了这个代码的州户的Cookies都能被盗取,这个过程对攻击者来说非常简单。

下面是某脚本系统中的一个登录过程判断代码,这里以这个代码为例,来说明Cookies欺骗在脚本程序员编程的时候是如何产生,又是如何被攻击者利用的。

这段代码的含义是,如果用户登录失败,页面就会返回提示信息,告诉用户登录失败,并引导用户返同上一贞。如果登录成功,程序就会进行Cookies操作,将信息写进Cookies。如果用户的Cookies已经存在,那么网站将读取系统中的Cookies信息,比如已经存在的Cookies文件中的过期时问就是用户Cookies的过期时间。需要注意的是,这时网站是直接读取系统中的Cookies信息。因为网站默认Cookies信息是安全且真实的,并没有进行判断。

攻击者实施Cookies欺骗,一般都会按照如下步骤逐步攻击:

攻击者会先找到存在Cookies欺骗漏洞的代码,利用该网站的“用户注册”功能,

在该网站注册一-个自己知道账户密码的正常低权限用户。

利用注册的用户正常登录该网站,并查看网站是否自动保存和生成Cookies,即

找到本地的Cookies存放文件。

攻击者会通过脚本系统暴露出来的一些正常信息,找到管理员或其他高权限用

户的账户等信息。

获得自己注册的低权限用户的Cookies后,利用专门修改Cookies的工具,如IECookiesView,修改本地的Cookies信息,利用代码验证不严的方式,重新提交经过修改的Cookies信息,达到欺骗系统,获得高权限的目的,这样即可成功入侵。

使用IECookieView可以查看、修改删除或保存Cookie文件。启动IECookie View,软件上半部窗口会列出用户登录过的网站信息。选中本地搭建的测试网站,

在下面窗口中就会列出该站生成的Cookie内容,有KEY、值、网域、安全等列。“值”列中一般存放用户名、用户ID、访问次数、访问来路网址等信息,通过查看“值”列,可以发现一些个人隐私,例如网站的登录用户名、密码等,8-17。

因此,建议用户在公共场所上网后运行IECookieView 工具,选择“修改”→“毁坏所有来勾选的Cookies”菜单项,删除全部Cookie文件,以免账号、密码等隐私信息外泄。

Cookies欺骗攻击安全模拟

本节将通过3个案例介绍攻击者如何进行Cookies欺骗。其中,第一个案例是ID验证类的Cookies欺骗,攻击者只需修改管理员的账户,即可进行Cookies欺骗,操作步骤相对简单:第一个案例是构造特定Cookies内容的Cookies欺骗,攻击者需要对脚本代码进行逻辑分析,找出Cookies逻辑判断错误点,构造特定的Cookies内容,才能进行Cookies欺骗:第三个案

例是利用Cookies欺骗帮助黑客直接上传ASP木马,以达到控制整个网站服务器的目的。

1、  ID验证类Cookies欺骗案例模拟

这类Cookles欺骗需要攻击者先找到一个存在脚本问题的脚本系统,即脚本系统只对管理员的账户名怍出判断,只验证用户账户是否是admin,而未对管理员密码的Cookies验证。

这样,攻击者只需将系统管理员的用户名弄到手,根本不需要知道管理员的密码是什么,即可轻松获得管理员权限。下面是模拟攻击者获取管理员权限的具体操作方法。

从网上下载一个存在这种漏洞的脚本系统,这里以一个简单的留言本系统,在本地电脑中进行ris配置,打开该脚本系统的主页“index.asp”,8-18。在留言记录中可以看出管理员的用户名是“admin”。

得到管理员用户名信息后,攻击者即可开始按照典犁的Cookies欺骗步骤进行入

侵。在留言本系统中单击“注册账号”链接,弹出8-19“用户注册协议”页面。

单击“我已阅读并同意以上条款”按钮,弹出“注册新账号”页面。在其中需要填写一些必要的信息,方便后续联系。这里假设注册的账户名是“xiaoxiao”,密码足l23456,注册的会员类型为普通会员,8-20。

在填写完所有需要的信息后,单击“注册”按钮,弹出8-21的提示信息,提示用户新账号xiaoxlao已注册成功。

单击“确定”按钮,即可以用户xiaoxiao的身份进入该留言本系统中。进入该系统后,用户只能以普通会员的身份进行相应的操作。

用户在该留言本系统中注册用户后,在本地计算机中会生成此网站的Cookies文件,其中保存有用户注册的信息。可利用IECookies View 工具盘找本地计算机中存储的Cookies文件并找到该留言本系统写入的Cookies。它能显示是哪一个网站写入的Cookles,内容是什么,写入的时间日期及Cookies的有效期限等资料。更改Cookies信息中的内容,重新写入非法的Cookies,即可冒充管理员的身份登录系统

下面介绍利用IECookies View工具修改Cookies信息的方法:

运行IECookiesView工具自动扫描驻留在本地计算机IE浏览器中的Cookies文件。在IECookiesView列表中找到留占本系统对应的Cookies信息并选中,在下方列表中即可显示出其中包含的所有键的键值、网域、过期日和变更日期等信息,8-22。

还可对Cookies中的键值进行编辑。在列表中找到注册留言本系统时的键值并右击,在弹出的快捷菜单中选择“编辑Cookies内容”菜单项,打开“编辑Cookies内容”对话框,在其中进一步获得此网站在本地存储的Cookies信息的内容。

该键“值”内容是“useriassword=1234dname=xiaoxiao”,意思是用户的密码是123456,用户名是xiaoxiao,即刚才注册的普通会员的ID及密码,8-23。

下面介绍利用IECookies View工具修改Cookies信息的方法:

运行IECookiesView工具自动扫描驻留在本地计算机IE浏览器中的Cookies文件。在IECookiesView列表中找到留占本系统对应的Cookies信息并选中,在下方列表中即可显示出其中包含的所有键的键值、网域、过期日和变更日期等信息,8-22。

还可对Cookies中的键值进行编辑。在列表中找到注册留言本系统时的键值并右击,在弹出的快捷菜单中选择“编辑Cookies内容”菜单项,打开“编辑Cookies内容”对话框,在其中进一步获得此网站在本地存储的Cookies信息的内容。

该键“值”内容是“useridpassword=123456&admin—0&useame=xiaoxiao”,意思是用户的密码是123456,用户名是xiaoxiao,即刚才注册的普通会员的ID及密码,8-23。

 2、  构造特定Cookies内容完成欺骗的案例模拟

目前网站的验证程序要排除所肯非法登录非常困难,如编写验证程序使用的语言可能存在漏洞。本案例中的Cookies欺骗比上一案例中的复杂些,需要攻击者构造特定的Cookies内容,才能完成欺骗。下面以“JIMMY中文站留言簿v1.09”为例讲述Cookie欺骗攻击的其体实现过程。具体的操作步骤如下。

下载“JIMMy中文站留言簿vl,09”源文件,在IIS中打开该留言本系统的主页“index.asp”文件,即可看到JIMMY中文站留言簿的主页,8-26。 单击页面上的“版主管理”链接,即可进入后台管理界面,8-27。

在该页面中要求输入管理用户名和密码,如果账号或密码错误,则无法进入管理员后台,并显示“非法登录”提示框,8-28。

由于攻击者没有管理员的账户和密码,因此不能正常登录。由于“JIiVIMY 中文站留言簿”中存在Cookies欺骗漏洞,按照典型Cookies欺骗步骤,攻击者先分析“Iogin.asp”中的代码,找到代码中调用其他文件夹的验证部分。

如下是“login.asp”页面中的代码:

从代码分析中得知该留占本系统的验证脚本在根目录的“checkadm.asp”页面中,使用Dreamweaver中打开“JIMMY中文站留言簿v1.09”网站中的后台登录验证页面文件“chkmanage.asp”,具体的实现代码如下:

从以下代码中可以看出,该文件中包含3条request.Cookies语句,其具体的作用如下。

第一条requekies语句:获取Cookies中usern ame的值,并判断其值是否为空。如果为空的话,则跳转到用户登录页面“login.asp”;

第二条requeookies语句:获取Cookies中password的值,并判断其值是否为空。如果为空,则跳转到用户登录页面“login.asp”;

第三条requeookres语句:获取Cookies中的randomid的值.并判断其值足否为“12”。如果不等于“12”,则跳转到用户登录页面“login.asp”。

从上述代码分析中可以看出,通过验证用户的Cookie信息可确认用户,是否已经登录,同时可在本地更改Cookie信息。只要改后符合验证条件即可进入管理页面。

因此,只需要构造Cookie信息,使之满足如下.几个条件就可以登录后台管理页面。

用户名和密码不为空。要实现这一条件,需要Cookie信息中包含用户名和密码,将信息内容设置为如下形式,即可满足要求:Password—123&username-adminrandomid=12。要实现这一条件,可设置Cookie信息中有如下形式,即可满足要求:randomld-1 2。在Cookie信息中,各项数据是通过“&”符号进行连接的,所以可构造出Cookie“信息:randomid=12&password-123456&usemame-xiaoxia0.

 ·  将常量“lun;jilyb”添加到Cookies信息中。在检测Cookie信息时使用代码为:

“request.cookies("Iunjilyb”)(”password”)”。其L}I包含一个“lunjilyb”常量,需将该常量添加到Cookie信息中,具体实现代码为:lunjilyb- randomid=12&password=12,3456&usemame=xiaoxiao。

将Session信息保存在Cookies信息中。在访问网站时,生成了—个Session信息,其具体内容为:ASPSESSIONIDSCDTSCRRKGDFLJJACIOOJJIDNIGJHHKD。因此,也需将该信息保存在Cookie信息中,最终构造出来的欺骗性Cookie信息语句:

ASPSESSIONIDSCDTSCRRKGDFLJJACIOOJJIDNIGJHHKD;lunjilyb=rassword=123456&u semame-xiaoxiao。通过修改该Cookie信息,即可在不知道后台管理员的用户名和密码情况下,使用Cookies款骗语句直接进行登录了。

这里介绍一款棒林老兵Cookies欺骗工具,它融合了Cookies欺骗和注入功能,当浏览一个页面时如果有Cookies和Session存在,会自动获取并显示在软件界面中,同时允许对获取的Cookie重新修改提交,8-29。下面柬模拟攻击者是如何发起攻击的。

下载并运行Cookie浏览工具Cookies&lnjest,在“Address”栏中输入后台管理页面“htt//:pocalhmin-index.asp”,单击“连接”按钮,同样也被返回到登录页面,8-30。

在该页面中随便输入一个用户名和密码,单击“提交”按钮,此时也是返回了错误信息,不过这时在“Cookies”文本中可以看到有数据了,8-31。单击“确定”按钮,即可返同管理员登录页面中。

单击工具栏中的“设置自定义的Cookies”按钮o,对Cookie信息进行修改。将上面构造的cookies内容“ASPSESSIONIDSCD TSCRRKGDFLJJACIOOJJandomid-1 2&password=123456&usemame=xiaoxiao”输入到“Cookies”文本框中,其中,xlaoxiao和123456分别为用户名和密码,可以改为任意值,8-32。

修改Cookie信息后再重新访问管理员后台页面“http:*******”,就不会再返回登录页面,已成功登录了管理员后台,8-33。

单击页面中的“管理员资料”链接,进入“修改管理员资料”页面,在其中对管理员的用户名和密码进入修改,8-34。

利用跨站攻击进行挂马。这里己成功绕过了管理员的州户验证,Cookies欺骗攻击的目的达到了。此时可以以管理员的身份在后台进行一系列操作,如单击页面中的“版主信息”链接,即可进入“参数设置”页面,在其中对版主的资料进行修改,8-35。

3、  Cookies欺骗与上传攻击模拟

利用Cookie欺骗攻击,可以获得后台管理员的后台页面访问权限,有时还可以帮助黑客直接上传ASP木马,以达到整个网站服务器。“L-Blog vl.08 (SE) Build 0214”是一个ASP+Access结构的博客(Blog)程序,该程序版本非常多。该博客程序中存在一个Cookie欺骗漏洞,黑客可利用该漏洞获得前台管理员权限,从而引发文件上传漏洞攻击。

(1)  “L-Blog”中的Cookie欺骗漏洞分析

从网上下载“L-Blog vl.08 (SE) Build 0214”博客程序,程序中包含多个ASP文件,8-36。在“L-Blog vl.08 (SE) Build,0214”程序的上传文件中存在一个上传漏洞,需要先在Dfeamweaver中打开上传程序网贞文什“attachment.asp”并找到如下代码:

由于上述代码对文件路释变量过滤不严,所以造成文件上传漏洞的存在。而在上传文件前需要进行验证,验证的具体实现代码如下:

从下述代码中可以看出上传文件前需要验证,而验证则主要通过“If memStatus=“Sdmin”Or memStatus=”Admin”Then”代码实现,8-37。

上述代码作用是验证“memStarus”的值是否为“SupAdmin”或“Admin”,如果足则可以上传文件。下面了解一下“MemStatus”参数的来源。在Dream weaver中打开该博客网站lp的“commond.asp”文件,在其中找到对用户‘Cookie”进行验证的实现代码是:

上述代码主要用于验证用户输入的用户名是否在数据库的管理员表中。如果存在,则将该用户Cookie信息写入到memStatus和其他几个标识中,而写入的这些标识信息又会被下面的代码所调用;

当成功调用后,就会将最终的结果传递给上传程序,再进行上传权限判断。从整个验证过程可知,上传用户权限信息全由Cookie提供,下面是验证用户名和密码的具体实现代码:

对用户和密码判断流程是:如果用户Cookie信息中的memName值不为空,就从数据库验证用户名和密码,如果验证出错,则清空Cookie信息。

上述验证程序并没有考虑MemName为空的情况,如果MemName为空,则Cookie信息是不被清空的。由于文件上传页面只对memStatus进行验证,黑客手工将menStatus的值修改为“SupAdmin”或“Admin”就可以拥有上传权限了。

(2)利用Cookie欺骗获得上传权限

网站存在一个上传漏洞,因此可以利用Cookie欺骗来获得这些网站的上传权限。Build0214”程序的博客网站为例,介绍实现Cookie欺骗攻击的具体操作方法。

打开搜索到的博客网站,进入其首页中,单击“用户登录”区域中的“注册”按钮,注册一个新用户,8-38。

在“用户注册”页面中输入用户名“shuangyuzu07”、密码“123456“及电子邮箱,8-39。单击“提交”按钮,即可成功注册该用户并登录到博客网站中。

从网上下载并运行“老兵Cookies欺骗工具”,在其地址栏中输入该博客网站登录界面的地址,单击“连接”按钮,即可显示“登录成功”界面。在“老兵Cookies欺骗工具”主窗口中的“Cookie”文本框中可看到当前页面的Cookie信息。

loveyuki%5FzzwmemPasswDC3949BA59ABBE56E05tus=Member&memName=shuangyuzu07;ASPSESSIONIDSCQCDRRB-NOJMGPADFOCHCOFAABOJJMOM,其中包含了登录的用户名和密码等信息,8-40。黑客可以对Cookie信息进行修改,欺骗Blog程序,使其认为登录用户的身份是管理员

单击“设置自定义的Cookies”按钮,,对Cookie信息进行修改。将Cookie信息中的‘‘memStatus=Member&”修改为“memStarus-SupAdmin”或“memStatus=Admin”,8-41

保持“设置自定义的Cookies”按钮片1.png,处于按下状态,退出当前用户登录,重新打开Blog首页,虽然此时没有登录,但已具有管理员权限,8-42。获得管理员权限后,即可利用专门漏洞上传工具将ASP木马上传剑Blog服务器上,进而对网站进行攻击。

Cookies注入是一种比脚本注入更为灵巧、更为隐藏、破坏力更大的攻击方法,从实质上来说,Cookies注入还是数据库的注入。

数据库与Cookies得关系

“商贸通2006地山‘门户版系统”网站程序是一个网页信息发布系统,目前比较流行。由于该网站存在Cookies欺骗漏洞,它也成为很多黑客的利用对象。下面以该网站为例介绍数据库与 Cookies信息的关系。在Dreamweaver中打开“商贸通2006地方门户版系统”网站中的“admin”文件夹中的后台登录验证文件“chkain,asp”,在其中找到如下代码:

上面虚线前面代码的作用是进行验证码对比,而其后代码则说明验证用户登录信息,将其写入到Cookies中。具体实现过程为:先从数据库中获取用户名及密码,在对比用户输入的登录密码后,将数据库中查询到的内容写入Cookie信息中。其验证过程代码如下(8-43):

其中,“ifpasswoword”)and nick= rs(”SMT—nick”) then”用判断用户提交的password和nick值,是否与查询数据库返回的SMT_password和SMT- nick相同。如果相同,将SMT id、SMT_nick和SMT_flag相应字段值,以Cookie信息形式存储在用户端中。程序就转向到“manage.asp”页面,进入后台管理页面。

 在整个过程中,程序并没有判断“SMT_password”字段的值,即用用户输入的密码是否正确并不重要,而关键所在是SMT.id、SMTl nick和SMT,flag的相应字段值。

打开系统程序的数据库“\datalscadata.mdb”,打开管理员表“SMT admin”,可以看到其中“SMT id”字段对戍的值是“5”,“SMT nick”字段对应的值是“admin”,而“SMT_flag”字段对应的值比较长,其具体内容8-44。

由上可知,只要在“Cookie&Injest”工具中把cookies值改为:

adminID=5;admin-admin1,1,1 ,1,1,1,1,l ,1,1.1,1,1 ,1,1,1, 1,1.1;

就可以成功登录到后台管理员页面了,但除Cookie信息中的逗号需要转换为URL编码“%2c”外,还需要在前面加上原始的Session信息,所以修改后Cookie信息如下

这样重新刷新页面,在“Cookie&lnjest”工县的“Address”地址栏中输入管理员登录的页面地址,就可以直接进入后台登录页面了。

Cookies注入典型步骤

下面简单介绍Cookies注入的典型步骤:    寻找形如“*.asp?id=x”类的带参数的URL。去掉“id—x”查看页面显示是否正常。如果不正常,说明参数在数据传递中是直接起作用的。

清空浏览器地址,输入“javascript:alert(document.c ookie-”id-”十escape(“x”));”,按下 Enter键后返回一个对话框,内容是“id=x”,然后用原来的URL刷新网页,如果显示正常,说明代码是用Request(”ID”)这种格式搜集数据的,可以利用cookies进行注入。

再将常规脚本注入判断语句带入上面的URL:“javasc(document,cookie=”id_”+escape(“xand1=1”));”、“javascript:alert( document.c ookie-”id”+escape(”x and l-2”));”。和常规脚本注入一样,如果分别返回正常和不正常页面,说明脚本系统存在注入漏洞,并且可以用Cookies进行注入。

使用常规的注入语句构造方式进行注入即可。

手工Cookies注人案圈与中转工具使用

一般来讲,使用手工Cookies注入很麻烦,攻击者可以使用一些Cookies注入工具进行攻击,这种工具集成了很多功能,不用一次次反复构造语句和反复刷新页面。下面以“新起点工作室”网站系统为例,来模拟攻击者进行一次典型的Cookies注入攻击。

1、  手工Cookies注入

手工Cookies注入的具体操作步骤如下。

在本地措建“新起点工作室”这个网站系统正常页面后,提交常见的脚本注入判断符““’、“and l=l”、“and l=2”,页面均返同防注入系统提示,8-45。

在IE地址栏中通过提交“http://********”地址来判断是否存在Cookies注入,其记录的正常页面信息8-46。

按Cookies注入典型步骤删除“readbbs.asp?”后的参数.得到URL为http://www.weixianmanbu.com,按下Enter键提交后会发现页面返回不正常,847。

清空IE浏览器地址栏,输入“javascript:alert(document.cookie=”id=”+escape(”l“))按下 Enter键后返回一个提示框,提示内容为“ID=l”,848。冉用原URL刷新网页,页面显示正常,判断可以利用Cookies进行注入。

2、  Cookies注入中转工具的使用

如果是手工注入,攻击者会将常规脚本注入判断语句带入上述URL,如“javascript:ament.cookie=¨id=¨+escape(¨1 and I=l¨));”、“javascript:alert( document.cookie-¨i(i-’’+escape《“l and l=2”));t,,再构造注入语句注入。

手工注入相当繁琐,效率低下,这里模拟攻击者使用工具注入的情况。

下载并运行“注入中转生成器工具,打开“注入中转生成器”主窗口,8-49。

选择“COOKIE注入”单选项,在“注入键名”中填写“id=”;在“注入URL地址”和“来源页”中均填写http://*******地址,在“POST提交值“中填写“imdcw-l”,8-50。

填写完后,单击“生成ASP”按钮,生成注入中转文件,将此文件上传至任意网络空间,只要能访问即可。这样,经过注入中转文件的帮助,攻击者可以根据自己的喜欢,选择手工注入或者直接利用工具注入。

具体操作方式是直接在上传文件地址后构造注入语句注入,因为中转文件已将所有参数经过了改造,让它和普通的注入漏洞一样,攻击者可直接在页面中提交相关语句进行注入。

Cookies欺骗和注入的防御

基于Web服务防范已经不能像以前古老的防范方法那样,哪项功能出了问题,就直接停止哪项功能。从实质上来说,Cookies欺骗和注入产生的根本还是脚本程序,正是因为程序员在脚本程序开发中存在着各种安全隐患,才造成了这些攻击。

Cookies欺骗与防范的代码实现

从代码层面上彻底杜绝Cookies欺骗才是解决问题的根本,实际情况中要在代码正常运行以后冉修改就显得力不从心了,最好的防御方式是在脚本平台没有正式摊出之前,把脚本层面的Cookies欺骗完全防御。

1、  Cookies+session混合存储

 一般基于 Cookies的脚本系统会在Cookies中储存两个变量或更多变量,常见的是username和useflevel,其中username为用户名,而userlevel为用户的等级。当用户的浏览器访问ASP页面时,它会传出如下的数据包:

攻击者很简单就实现Cookies欺骗攻击了。对于安全程序员,既然Cookies是不安全的,而又必须把用户登录信息存储下来以方便交互,应存储在Session。Session储存在服务器上,用户不能随便更改。采用Session保存用户登录信息,虽然摆脱了Cookies欺骗问题,世Session的特性是不能长期储存,于是聪明的程序员就研究出了Cookies+Session混合存储的方法。

 这种方法有两个变化,第一种是在Cookies中储存用户名和密码,当用户访问-个页面时,先读取Session,如果有内容则以Session为准,否则读取Cookies,按照Cookies中提供的用户名和密码进行“不透明”的登录一次,用阻判断Cookies中的内容是否合法,若台法再进而存入Session中。实现这一方法的VBS和Js代码如下:

这是第一种实现方法,这种方法对于用户又不太安全,原因是浏览器每次访问贞丽时都会把Cookies传输过去,而包含密码的Cookies一旦被他人获取,将导致用户账户被盗。

2、  随机数机制防范Cookies欺骗

单就Cookies欺骗而言,攻击者发起这样攻击的关键之一就是获得管理员用户的Cookies,或者获得管理员的相关信息。正因为有这样的攻击方式存在,所以从设计思路上很容易得出这样的防范思路推论:在用户信息数据库中增加一个字段“verifycode”。在用户登录时,随机产生一个长整型校验值存入verifycode字段,并且将username和这个verifycode值而小password存入Cookies。而在验证Cookies中的用户信息时,也只验汪usemame和verifycode。

这种方法的好处在于,即使用户的Cookies被黑客获取,他也只能利用这个“临时”产生的verifycode登录,而无法获得用户的密码。而当此用户再一次使用用户名和密码登录时,这个verifycode值便会改变,黑客便无法通过原来的verifycode登录。

这种方法的实现只需要在上述方法的代码上稍加改动。首先,要在登录程序中的验证通过存储用户信息的地方要加上一段代码,具体内容如下:

在上面提供的验证代码中把对Cookies(”password”)的验证改为对Cookies(”verifycode”)的验证,即可防范Cookies欺骗。

Cookies注入防范

由于Cookie的重要作用,如果黑客破解了用户登录信息,就可以进行欺骗登录,其危害程度极大。所以要对Cookie欺骗采取一定的防御措施,如删除计算机中的Cookie记录或更改Cookie文件的存储位置。

1、删除Cookie记录

在一般情况下,黑客都是分析目标计算机中的Cookie文件来获得需要的信息,如E-mail地址、各种登录信息等。及时删除计算机中的Cookie信息,可有效防御Cookie欺骗的发生。

具体的操作步骤如下。

在IE浏览器中选择“工具”→“Internet选项”菜单项,打开“Intemet选项”对话框,8-51。单击“删除Cookies”按钮,弹出“删除Cookies”提示框,8-52。单击“确定”按钮,即可删除本机中的Cookies文件。

也可借助相应安会软件来实现删除Cookie记录,如360安全卫士、瑞星卡卡上网安全助手、Windows优化大师。这里以Windows优化大师为例,在Windows优化大师“系统清理”选项卡中勾选“Internet历史痕迹清理”复选框,并勾选其包含的各个子项,8-53。

单击“扫描”按钮,扫描出本机包含的Cookie文件,8-54。单击“全部删除”按钮,即可弹出“是否要删除所有扫描到的历史记录”提示框,8-55。

单击“确定”按钮,则删除所有扫描的历史记录。待删除完毕后,即可在“Windows优化大师”窗口底部看到“历史清理清理完毕”提示信息,8-56。

2、  更改Cookie文件的保存位置

除删除Cookie文件外,还可以更改Cookie文件的默认保存位置,以阻止黑客进行Cookie欺骗。具体的操作步骤如下。

在“Internet选项”对话框中单击“设置”按钮,打开“设置”对话框,8-57。单击“移动文件夹”按钮,打开“浏览文件夹”对话框,8-58。

在其中设置相应的保存位置(如F/),单击“确定”按钮,即可成功更改Cookie文件的保存位置。

3、添加防注入代码

要深入防范Cookies注入,最核心的方法是从代码上入手解决。当然,并不是每个管理员都能从代码层面进行防御,所以除了代码上的解决方案以外,利用新版防注入系统进行安全防护也是一种适合大部分管理员的办法。核心防范Cookies注入方法很简单,在程序中尽量使用request.querystring或request.form,这样就可以实现基本的Cookies注入防范。

当然,所有脚本注入的根源都来源于参数问题,最完美的根源解决方式也就是对脚本系统中的参数做好过滤,这才是治本。但不是所有管理员都有精力、技术、时问去从脚本根源上解决问题,所以需要很多变通的、快速的防范Cookies注入方法。

还有’种情况是使用了旧版本防注入系统的系统,有时候这样的系统因为体积庞大,不容易进行代码升级和维护,原本搭建的防注入系统也不具备防范Coolcies注入的功能。遇到这样的情况,建议管理员使用简单的修改代码的方式来变通处理Cookies注入防御。

在该段代码中,id没有指定接收的方式,直接接收传递过来的值,然后带人SQL语句中,如果旧版的防注入程序包含GET、POST注入,那么GET、POST注入无效,但是可以使用Cookies来注入的。

遇到这种情况,变通的方法就是将ID值指定为只接收GET方式,指定后就不能用POST和Cookies来接收参数了,也就是说防注入可以正常返同作用,即可达到防注入的目的。

其代码如下;

需要特别说明的是,这样修改以后,所有的此类参数都将改为GET方式提交,防注入系统会验证所有的数据,但这样的修改可能存在某些特定参数传递出错等情况,也可能会影响脚本系统中某些功能,注意慎用。

 点拨1:从网上下载一个脚本系统,进行IIS配置后,如何在本地电脑中打开该脚本系统的页面?

解答:要在本地电脑中打开脚本系统的页面,需要按照下面的方法进行设置。

打开“计算机管理”窗口,在左侧窗格中依次展开“服务和应用程序”→“Internet价息服务”→“网站”选项,并在其下的“默认网站”选项上右击,在弹出的快捷菜单中选择“属性”菜单项,8-59。

此时,即可弹出“默认网站属性”对活框,在“主目录”选项卡中单击“本地路径”文本框后的“浏览”按钮,在“浏览文件夹”对话框中找到脚本系统存放的目录,将该目录设置为本地路径,8-60。

单击“使用”按钮返回“计算机管理”窗口,在“默认网站”下的子目录中即可看到该脚本系统所在的文件夹,8-61。

单击该文件夹,在右侧窗格中找到要打开的页面,如该脚本系统的主页“index.aspn

并右击,在弹出的快捷菜单中选择“浏览”菜单项,即可打开该页面,8-62。

点拨2:在JECookiesVicw中如何分辨哪些是可用的Cookie,哪些是不可用的Cookie?

解答:在“IECookiesView”主窗口的“主页”列表中任意单击某个网页,即可存显示区域中看到该站点对应的Cookies信息。如果显示一个绿色的对勾,则表示该Cookies可用;如果是一个红色的义,则表示该Cookies已经过期,无法使用。也可查看其过期时间,如果晚于当前时间则表明该Cookie文件可用,否则不可用。

本文内容所提及均为本地测试或经过目标授权同意,旨在提供教育和研究信息,内容已去除关键敏感信息和代码,以防止被恶意利用。文章内提及的漏洞均已修复,作者不鼓励或支持任何形式的非法行为。

相关推荐