网络安全 频道

安全事件不断 黑客手法花样翻新

    3.3、跨站攻击

    XSS又叫CSS(Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入Web里面的html代码会被执行,从而达到攻击者的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人经常忽略其危害性。

    就攻击者而言,可以把XSS攻击分成两类,一类是来自内部的攻击,主要指的是利用程序自身的漏洞,构造跨站语句,如:DVBBS的showerror.asp存在的跨站漏洞。另一类则是来自外部的攻击,主要指的攻击者构造XSS跨站漏洞网页或者寻找非目标机以外的有跨站漏洞的网页。如当攻击者要渗透一个站点,攻击者构造一个有跨站漏洞的网页,然后构造跨站语句,通过结合其它技术,如社会工程学等,欺骗目标服务器的管理员打开。

    传统的跨站利用方式一般都是攻击者先构造一个跨站网页,然后在另一空间里放一个收集cookie的页面,接着结合其它技术让用户打开跨站页面以盗取用户的cookie,以便进一步的攻击。这种方式太过于落后,比较成熟的方法是通过跨站构造一个表单,表单的内容则为利用程序的备份功能或者加管理员等功能得到一个高权限。

    当发动CSS攻击或检测一个网站漏洞的时候, 攻击者可能首先使简单的HTML标签如<b>(粗体),<i>(斜体)或<u>(下划线),或者他可能尝试简单的script标签如<script>alert("OK")</script>。因为大多数出版物和网络传播的检测网站是否有css漏洞都拿这个作为例子。这些尝试都可以很简单的被检测出来。

    然而,高明点的攻击者可能用它的hex值替换整个字符串。这样<script>标签会以%3C%73%63%72%69%70%74%3E出 现。 另一方面,攻击者可能使用web代理服务器像Achilles会自动转换一些特殊字符如<换成%3C>换成%3E。这样攻击发生时,URL 中通常以hex等值代替角括号。

    3.4、溢出漏洞

    溢出漏洞是一种计算机程序的可更正性缺陷。溢出漏洞的全名为“缓冲区溢出漏洞”。因为它是在程序执行的时候在缓冲区执行的错误代码,所以叫缓冲区溢出漏洞。它一般是由于编成人员的疏忽造成的。具体的讲,溢出漏洞是由于程序中的某个或某些输入函数(使用者输入参数)对所接收数据的边界验证不严密而造成。

    根据程序执行中堆栈调用原理,程序对超出边界的部分如果没有经过验证自动去掉,那么超出边界的部分就会覆盖后面的存放程序指针的数据,当执行完上面的代码,程序会自动调用指针所指向地址的命令。根据这个原理,恶意使用者就可以构造出溢出程序。

    大多数应用程序保存数据的存储地址大小是固定的。如果攻击者向这些存储区域之一中发送了过量数据,而程序没有检查数据的大小,则会发生溢出。攻击者针对这一特点发出的攻击称为缓冲区溢出攻击。

    缓冲区是用户为程序运行时在计算机中申请得的一段连续的内存,它保存了给定类型的数据。缓冲区溢出指的是一种常见且危害很大的系统攻击手段,通过向程序的缓冲区写入超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其他的指令,以达到攻击的目的。

    而人为的溢出则是有一定企图的,攻击者写一个超过缓冲区长度的字符串,然后植入到缓冲区,而再向一个有限空间的缓冲区中植入超长的字符串可能会出现两个结果,一是过长的字符串覆盖了相邻的存储单元,引起程序运行失败,严重的可导致系统崩溃;另有一个结果就是利用这种漏洞可以执行任意指令,甚至可以取得系统root特级权限。大多造成缓冲区溢出的原因是程序中没有仔细检查用户输入参数而造成的。

    缓冲区溢出问题并非已成古老的历史,缓冲区溢出攻击已成为最常用的黑客技术之一。引起缓冲区溢出问题的根本原因是C(与其后代C++)本质就是不安全的,没有边界来检查数组和指针的引用,也就是开发人员必须检查边界(而这一行为往往会被忽视),否则会冒遇到问题的风险。标准C库中还存在许多非安全字符串操作,包括:strcpy()、sprintf()、gets()等,这些都是程序员需要注意的。

0
相关文章