友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
反黑风暴-第31部分
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!
焙颍琧ookies是经过加密的,而且还是用了很安全的MD5加密。
这样,经过加密处理后的cookies信息,即使被网络上的攻击者截获,能看到的也只是一些无意义的字母和数字。攻击者是通过什么手段成功盗取用户的账户、密码等信息的呢?
实质上攻击者要想冒充别人的身份登录网站,并不需要知道截获的cookies文件中那些经过加密的字符串的含义,他们只要把别人的cookies向服务器提交,并且能够通过服务器的验证就可以了。
从以上分析可以看出,cookies欺骗实现的前提条件是服务器的验证程序存在漏洞,且攻击者要获得被冒充的人的cookies信息。就目前的网络情况来看,攻击者要获得别人的cookies,一般会用支持cookies的语言编写一小段代码,再把这段代码放到想要cookies的网络中,这样,访问了这个代码的用户的cookies都能被盗取,这个过程对攻击者来说非常简单。
下面是某脚本系统中的一个登录过程判断代码,这里以这个代码为例,来说明cookies欺骗在脚本程序员编程的时候是如何产生,又是如何被攻击者利用的。
…
Iflogin=falsethentl=〃登录失败〃mes=mes&〃。返回重新填写〃elseResponse。cookies(prefix)(〃lgname〃)=lgnamesession(prefix〃lgname〃)=lgname
Response。cookies(prefix)(〃lgpwd〃)=lgpwd
Response。cookies(prefix)(〃lgpwd〃)=lgtype
Response。cookies(prefix)(〃lgcook〃)=cookifcook》0then
Response。cookies(prefix)。Expires=date+cookendif
…
这段代码的含义是,如果用户登录失败,页面就会返回提示信息,告诉用户登录失败,并引导用户返回上一页。如果登录成功,程序就会进行cookies操作,将信息写进cookies中。如果用户的cookies已经存在,则网站将读取系统中的cookies信息,比如已经存在的cookies文件中的过期时间就是用户cookies的过期时间。
需要注意的是,这时网站是直接读取系统中的cookies信息。因为网站默认cookies信息是安全且真实的,并没有进行判断。
由于cookies在本地是可以修改和伪造的,因此,如果遇上类似以上的代码,攻击者可以非常容易地通过cookies欺骗入侵计算机。
10。1。3Cookies欺骗攻击案例
Cookies欺骗的典型步骤主要有如下4步:
(1)找到存在cookies欺骗漏洞的代码。
(2)获得权限用户的本地即时Cookies信息。
(3)利用脚本系统正常功能,获得管理员或者其他高权限用户的账户等信息。
(4)修改、构造、提交非法Cookies信息,达到欺骗系统,获得高级用户的权限的目的。
下面通过两个案例说明攻击者是如何进行Cookies欺骗的。
1.利用IECookiesView获得目标计算机中的Cookies信息
从上一小节中介绍的Cookies欺骗的原理可以得知,攻击者必须先获得用户的Cookies信息,才能进行进一步的欺骗。在实施欺骗时,黑客先把Cookies信息复制到本地计算机的Cookies目录中,再利用“IECookiesView工具”来获取目标主机中的Cookie信息。
IECookiesView工具可以搜寻并显示出本地计算机中所有Cookies档案的数据,包括是哪一个网站写入Cookies、写入时间日期及此Cookies的有效期限等信息。通过该软件黑客可轻松读出目标用户最近访问过哪些网站、甚至可任意修改用户在该网站上的注册信息。
下面介绍使用IECookiesView工具获取用户的Cookie信息的操作方法:
步骤01将下载的IECookiesView工具安装到计算机中,然后启动该软件,该工具就会自动扫描保存在本地计算机IE浏览器中的Cookies文件。
步骤02在列表中选中任意一个Cookies,如“。zhongyao365。”,即可在窗口下方的列表中看到其值、网域以及过期时间等信息。如果显示一个绿色的对勾,则表示该Cookies可用;如果显示一个红色叉,则表示该Cookies已经过期,无法使用。
【提示】
IECookiesView工具只对IE浏览器的Cookies有效,若使用其他浏览器浏览网站,得到的Cookies信息可能会存在差异。
步骤03在IECookiesView中,还可以对Cookies中的键值进行编辑。在窗口下方的列表中右键单击某个键值,在其快捷菜单中选择【编辑cookies内容】菜单项,即可打开【编辑cookies内容】对话框。在其中可对该键值的各个属性进行重新设置。
步骤04在窗口上方的列表中右击某个Cookie信息,在弹出菜单中选择【开启站台】菜单项,IE浏览器就会自动利用保存在Cookies信息打开相应的网站。
这样,黑客就利用这些不起眼的Cookies成功获得别人隐私信息,而且在论坛中还可冒用别人名义发表帖子。
当在浏览器地址栏中输入要访问的网址后,浏览器会向该Web站点发送一个读取网页的请求;在显示网页的同时,网页所在服务器同时也会在当前访问电脑中搜索设置的Cookie文件,如果找到就会在它的数据库中检索用户的登录ID、购物记录信息,以确认登录;如果找不到Cookie文件的相应信息,则表示用户是第一次浏览该网站,这样即会提示用户登录后使用。而不怀好意的黑客就是利用了这个原理,在获得用户的Cookie文件会实施信息分析,找出其中有用的信息。
2。Cookies欺骗与上传攻击
单纯的Cookie欺骗攻击,可以获得后台管理员页面的访问权限,有时还可以帮助黑客直接上传ASP木马,以实现攻击整个网站服务器的目的。下面以“L…Blogv1。08(SE)Build0214博客程序”为例,介绍黑客如何利用其存在的Cookie欺骗漏洞来获得前台管理员权限,从而引发文件上传漏洞攻击。
(1)“L…Blog”中的Cookie欺骗漏洞分析
从网上下载“L…Blogv1。08(SE)Build0214”博客程序,程序中包含多个ASP文件。在“L…Blogv1。08(SE)Build0214”程序的上传文件中存在一个上传漏洞,需要先在Dreamweaver中打开上传程序网页文件“Attachment。asp”,并找到如下的代码:
DimF_File;F_FileType;F_FileName
SetF_File=FileUP。File(〃File〃)
F_FileName=F_File。FileName
F_FileType=Ucase(F_File。FileExt)
IFF_File。FileSize》Int(UP_FileSize)Then
Response。Write(〃文件大小超出,请返回重新上传〃)
ElseIFIsvalidFileName(F_FileName)=FalseThen
Response。Write(〃文件名称非法,请返回重新上传〃)
ElseIFIsvalidFileExt(F_FileType)=FalseThen
Response。Write(〃文件格式非法,请返回重新上传〃)
Else
IfFSOIsOK=1Then
DimFileIsExists
SetFSO=Server。CreateObject(〃Scripting。FileSystemObject〃)
FileIsExists=FSO。FileExists(Server。MapPath(〃attachments/〃&D_Name&〃/〃&F_Name))
Do
F_Name=Generator(4)&〃_〃&F_FileName
LoopUntilFSO。FileExists(Server。MapPath(〃attachments/〃&D_Name&〃/〃&F_Name))=False
SetFSO=Nothing
Else
F_Name=Generator(4)&〃_〃&Hour(Now())&Minute(Now())&Second(Now())&〃_〃&F_FileName
EndIf
由于上述代码对文件路径变量过滤不严,所以造成文件上传漏洞的存在。而在上传文件前需要进行验证,验证的具体实现代码如下:
Server。ScriptTimeOut=999
If(memNameEmptyAndMemCanUP=1)Or(memStatus=〃SupAdmin〃OrmemStatus=〃Admin〃)Then
DimUP_FileType;UP_FileSize
IfmemStatus=〃SupAdmin〃OrmemStatus=〃Admin〃Then
UP_FileType=Adm_UP_FileType
UP_FileSize=Adm_UP_FileSize
Else
UP_FileType=Mem_UP_FileType
UP_FileSize=Mem_UP_FileSize
EndIf
从上述代码中可以看出上传文件前需要验证,而验证则主要通过“IfmemStatus=〃SupAdmin〃OrmemStatus=〃Admin〃Then”代码实现。上述代码作用是验证“memStatus”的值是否为“SupAdmin”或“Admin”,如果是则可以上传文件。
下面了解下“MemStatus”参数的来处。在Dreamweaver中打开该博客网站中的“mond。asp”文件,并在其中找到对用户“Cookie”进行验证的实现代码。
IFmemNameEmptyThen
DimCheckCookie
SetCheckCookie=Server。CreateObject(〃ADODB。RecordSet〃)
SQL=〃SELECTmem_Name;mem_Password;mem_Status;mem_LastIPFROMblog_MemberWHEREmem_Name='〃&memName&〃'ANDmem_Password='〃&memPassword&〃'ANDmem_Status='〃&memStatus&〃'〃
CheckCookie。OpenSQL;Conn;1;1
SQLQueryNums=SQLQueryNums+1
IfCheckCookie。EOFANDCheckCookie。BOFThen
Response。Cookies(CookieName)(〃memName〃)=〃〃
memName=Empty
Response。Cookies(CookieName)(〃memPassword〃)=〃〃
memPassword=Empty
Response。Cookies(CookieName)(〃memStatus〃)=〃〃
memStatus=Empty
Else
IfCheckCookie(〃mem_LastIP〃)Guest_IPOrisNull(CheckCookie(〃mem_LastIP〃))Then
Response。Cookies(CookieName)(〃memName〃)=〃〃
memName=Empty
Response。Cookies(CookieName)(〃memPassword〃)=〃〃
memPassword=Empty
Response。Cookies(CookieName)(〃memStatus〃)=〃〃
memStatus=Empty
EndIf
EndIF
CheckCookie。Close
SetCheckCookie=Nothing
Else
Response。Cookies(CookieName)(〃memName〃)=〃〃
memName=Empty
Response。Cookies(CookieName)(〃memPassword〃)=〃〃
memPassword=Empty
Response。Cookies(CookieName)(〃memStatus〃)=〃〃
memStatus=Empty
EndIF
上述代码主要用于验证用户输入的用户名是否在数据库的管理员的表中。如果存在则将该用户的Cookie信息写入到memStatus和其他几个标识中。
而写入的这些标识信息又会被下面的代码所调用:
DimmemName;memPassword;memStatus
memName=CheckStr(Request。Cookies(CookieName)(〃memName〃))
memPassword=CheckStr(Request。Cookies(CookieName)(〃memPassword〃))
memStatus=CheckStr(Request。Cookies(CookieName)(〃memStatus〃))
当成功调用后,就会将最终的结果传递给上传程序,再进行上传权限判断。从整个验证过程可知,上传用户权限信息全由Cookie提供,下面是验证用户名和密码的具体实现代码:
IFmemNameEmptyANDSession(〃GuestIP〃)Guest_IPThen
DimCheckCookie
SetCheckCookie=Server。CreateObject(〃ADODB。RecordSet〃)
SQL=〃SELECTmem_Name;mem_Password;mem_Status;mem_LastIPFROMblog_MemberWHEREmem_Name='〃&memName&〃'ANDmem_Password='〃&memPassword&〃'ANDmem_Status='〃&memSta
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!