标题：安全漏洞
简介
安全漏洞 (security hole) 
安全漏洞是指受限制的计算机、组件、应用程序或其他联机资源的无意中留下的不受保护的入口点。漏洞是硬件软件或使用策略上的缺陷，他们会使计算机遭受病毒和黑客攻击。
漏洞
漏洞  安全漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷，从而可以使攻击者能够在未授权的情况下访问或破坏系统。具体举例来说，比如在Intel Pentium芯片中存在的逻辑错误，在Sendmail早期版本中的编程错误，在NFS协议中认证方式上的弱点，在Unix系统管理员设置匿名Ftp服务时配置不当的问题都可能被攻击者使用，威胁到系统的安全。因而这些都可以认为是系统中存在的安全漏洞。 
漏洞与具体系统环境之间的关系及其时间相关特性 
漏洞会影响到很大范围的软硬件设备，包括作系统本身及其支撑软件，网络客户和服务器软件，网络路由器和安全防火墙等。换而言之，在这些不同的软硬件设备中都可能存在不同的安全漏洞问题。在不同种类的软、硬件设备，同种设备的不同版本之间，由不同设备构成的不同系统之间，以及同种系统在不同的设置条件下，都会存在各自不同的安全漏洞问题。 
漏洞问题是与时间紧密相关的。一个系统从发布的那一天起，随着用户的深入使用，系统中存在的漏洞会被不断暴露出来，这些早先被发现的漏洞也会不断被系统供应商发布的补丁软件修补，或在以后发布的新版系统中得以纠正。而在新版系统纠正了旧版本中具有漏洞的同时，也会引入一些新的漏洞和错误。因而随着时间的推移，旧的漏洞会不断消失，新的漏洞会不断出现。漏洞问题也会长期存在。 
因而脱离具体的时间和具体的系统环境来讨论漏洞问题是毫无意义的。只能针对目标系统的作系统版本、其上运行的软件版本以及服务运行设置等实际环境来具体谈论其中可能存在的漏洞及其可行的解决办法。 
同时应该看到，对漏洞问题的研究必须要跟踪当前最新的计算机系统及其安全问题的最新发展动态。这一点如同对计算机病毒发展问题的研究相似。如果在工作中不能保持对新技术的跟踪，就没有谈论系统安全漏洞问题的发言权，即使是以前所作的工作也会逐渐失去价值。
漏洞与计算机系统的关系
漏洞问题与不同安全级别计算机系统之间的关系 
目前计算机系统安全的分级标准一般都是依据“橘皮书”中的定义。橘皮书正式名称是“受信任计算机系统评量基准”（Trusted Computer System Evaluation Criteria)。橘皮书中对可信任系统的定义是这样的：一个由完整的硬件及软件所组成的系统，在不违反访问权限的情况下，它能同时服务于不限定个数的用户，并处理从一般机密到最高机密等不同范围的信息。 
橘皮书将一个计算机系统可接受的信任程度加以分级,凡符合某些安全条件、基准规则的系统即可归类为某种安全等级。橘皮书将计算机系统的安全性能由高而低划分为A、B、C、D四大等级。其中： 
D级——最低保护（Minimal Protection)，凡没有通过其他安全等级测试项目的系统即属于该级，如Dos，Windows个人计算机系统。 
C级——自主访问控制（Discretionary Protection)，该等级的安全特点在于系统的客体（如文件、目录）可由该系统主体（如系统管理员、用户、应用程序）自主定义访问权。例如：管理员可以决定系统中任意文件的权限。当前Unix、Linux、Windows NT等作系统都为此安全等级。 
B级——强制访问控制（Mandatory Protection)，该等级的安全特点在于由系统强制对客体进行安全保护，在该级安全系统中，每个系统客体（如文件、目录等资源）及主体（如系统管理员、用户、应用程序）都有自己的安全标签（Security Label），系统依据用户的安全等级赋予其对各个对象的访问权限。 
A级——可验证访问控制（Verified Protection)，而其特点在于该等级的系统拥有正式的分析及数学式方法可完全证明该系统的安全策略及安全规格的完整性与一致性。 ' 
可见，根据定义，系统的安全级别越高，理论上该系统也越安全。可以说，系统安全级别是一种理论上的安全保证机制。是指在正常情况下，在某个系统根据理论得以正确实现时，系统应该可以达到的安全程度。 
系统安全漏洞是指可以用来对系统安全造成危害，系统本身具有的，或设置上存在的缺陷。总之，漏洞是系统在具体实现中的错误。比如在建立安全机制中规划考虑上的缺陷，作系统和其他软件编程中的错误，以及在使用该系统提供的安全机制时人为的配置错误等。 
安全漏洞的出现，是因为人们在对安全机制理论的具体实现中发生了错误，是意外出现的非正常情况。而在一切由人类实现的系统中都会不同程度的存在实现和设置上的各种潜在错误。因而在所有系统中必定存在某些安全漏洞，无论这些漏洞是否已被发现，也无论该系统的理论安全级别如何。 
所以可以认为，在一定程度上，安全漏洞问题是独立于作系统本身的理论安全级别而存在的。并不是说，系统所属的安全级别越高，该系统中存在的安全漏洞就越少。 
可以这么理解，当系统中存在的某些漏洞被入侵者利用，使入侵者得以绕过系统中的一部分安全机制并获得对系统一定程度的访问权限后，在安全性较高的系统当中，入侵者如果希望进一步获得特权或对系统造成较大的破坏，必须要克服更大的障碍。
安全漏洞与系统攻击的关系
安全漏洞与系统攻击之间的关系 
系统安全漏洞是在系统具体实现和具体使用中产生的错误，但并不是系统中存在的错误都是安全漏洞。只有能威胁到系统安全的错误才是漏洞。许多错误在通常情况下并不会对系统安全造成危害，只有被人在某些条件下故意使用时才会影响系统安全。 
漏洞虽然可能最初就存在于系统当中，但一个漏洞并不是自己出现的，必须要有人发现。在实际使用中，用户会发现系统中存在错误，而入侵者会有意利用其中的某些错误并使其成为威胁系统安全的工具，这时人们会认识到这个错误是一个系统安全漏洞。系统供应商会尽快发布针对这个漏洞的补丁程序，纠正这个错误。这就是系统安全漏洞从被发现到被纠正的一般过程。 
系统攻击者往往是安全漏洞的发现者和使用者，要对于一个系统进行攻击，如果不能发现和使用系统中存在的安全漏洞是不可能成功的。对于安全级别较高的系统尤其如此。 
系统安全漏洞与系统攻击活动之间有紧密的关系。因而不该脱离系统攻击活动来谈论安全漏洞问题。了解常见的系统攻击方法，对于有针对性的理解系统漏洞问题，以及找到相应的补救方法是十分必要的。
常见攻击方法与过程
常见攻击方法与攻击过程的简单描述 
系统攻击是指某人非法使用或破坏某一信息系统中的资源，以及非授权使系统丧失部分或全部服务功能的行为。 
通常可以把攻击活动大致分为远程攻击和内部攻击两种。现在随着互联网络的进步，其中的远程攻击技术得到很大发展，威胁也越来越大，而其中涉及的系统漏洞以及相关的知识也较多，因此有重要的研究价值。
寻找客户端漏洞
目标:客户端的漏洞?
客户端易受攻击:IE，Outlook，Firefox，MSN，Yahoo etc.
黑客利益的驱使:Botnet，Visa，CD-Key，DDOS etc.
发现漏洞较容易(More 0day?):较容易发现，新的领域
为什么挖掘图像格式中的漏洞?
Windows，Linux等操作系统支持多种图像格式:Bmp, GIF, JPG, ANI, PNG etc.文件格式众多，代码复杂易找到漏洞
Windows中很多图像格式解析的实现方式与开源代码及其相似，经常发现同一bug;(Why?)
黑客们并没有在每种格式中发现漏洞，没有足够的“eyes”关注
从安全人员的角度:
格式众多，算法复杂容易出现漏洞
影响范围极广跨应用跨平台，例如:
Windows 平台上任何解析jpg 的应用，office,outlook,IE...GDIPLUS.dll
Windows 内核实现对Ani 的支持，通过ie 不需要用户互动操作。谁会怀疑网页上的指针文件?
PNG Msn, libpng 很多开源软件
隐蔽性严重威胁用户安全
从黑客的角度:
如果利用图像格式触发的漏洞，会降低了受害者的警觉性，易利用社会工程学。蠕虫传播可能利用一些非常容易让人警惕的文件格式，但我们现在讨论的是图片格式jgp, png, ani...不容易让人引起怀疑
多种攻击媒介，利于黑客攻击:通过网页，邮件可以穿越防火墙的保护，IDS不易检查，需要对各种格式，协议进行解析才能检查出漏洞攻击。
图像的基本格式
流格式由很多段构成，段里面又由标记，参数(漏洞点)，数据段构成
还可能有段里面再嵌套段(漏洞点)
Gif,Ani可能包含很多帧，刷新率，帧的索引(漏洞点)
可能会有标记图形模式的bit-map,可能会有逻辑上的错误png
JPG格式中的漏洞
先来一个实际的例子:
GDIPlus.DLL漏洞MS04-028 Nick DeBaggis
影响巨大，攻击很多
漏洞产生原因:
JPEG格式中的注释段(COM)由0xFFFE开始(标记)+2字节得注释段字节数(参数) +注释(数据)构成。因为字节数这个参数值包含了本身所占的2字节，所以GDIPLUS.dll在解析jpg格式文件中的注释段时会把这个值减去2，如果这个值设置成0，1就会产生整数溢出。
JPG格式中的漏洞
是不是觉得很相似?
2000 Solar Designer 发现了Netscape 浏览器的JPEG 解析漏洞，与Nick DeBaggis 发现的漏洞原理是相同的。
另一个相似的例子
Stefan Esser发现的XBOX Dashboard local vulnerability，该漏洞存在于XBOX Dashboard对.wav格式和.xtf格式文件的解析上，虽然说不是图形格式但漏洞原理却相同。
细节:同样存在一个size参数这次是它本身的大小是4字节，所以当size值为0-3时就会发生整数溢出。
疑问:为什么有些人从偶blog转文章就不写出处呢 也算是我翻来搜去搞来的文章呀bY FIRef0x
疑问:为什么会一再出现同类型的漏洞?
是否程序员们从概念上忽略了某些问题?
为什么都是整数溢出漏洞?
此类漏洞的本质是什么?
是否还有这种漏洞?
问题的本质
这些文件格式是由很多“段”构成的数据流，而每个段由:标记，参数，数据等结构构成，在程序解析这些文件格式的时候会依据“标记”来确认段，并读劝参数” 进行一定的运算，再依据这些参数来处理随后紧跟的“数据”。以上提到的几个漏洞的产生原因就是在对参数进行运算的时候相信了文件输入的参数没有进行确认而导致的。
思维扩展
不要相信用户的输入，同样不要相信文件的输入;
包括标记，错误的标记也会导致问题
包括参数，详细检查输入参数
包括数据，数据里面可能还嵌套着另一个“段”
思维扩展的结果
Venustech AD-Lab:Windows LoadImage API Integer Buffer overflow
影响极为广泛: bmp,cur,ico,ani格式的文件都受影响。
描述:
WINDOWS的USER32库的LoadImage系统API 存在着整数溢出触发的缓冲区溢出漏洞，这个API允许加载一个bmp,cur,ico,ani格式的图标来进行显示，并根据图片格式里说明的大小加4来进行数据的拷贝，如果将图片格式里说明的大小设置为0xfffffffc-0xffffffff,则将触发整数溢出导致堆缓冲区被覆盖。攻击者可以构造恶意的bmp,cur,ico,ani格式的文件，嵌入到HTML页面，邮件中，发送给被攻击者，成功利用该漏洞则可以获得系统的权限。
LoadImage API 整数溢出漏洞分析
代码:
.text:77D56178 mov eax, [ebx+8] //Direct read our size here:P
.text:77D5617B mov [ebp+dwResSize], eax
.text:77D5617E jnz short loc_77D56184
.text:77D56180 add [ebp+dwResSize], 4 //add 4 int overflow...
.text:77D56184
.text:77D56184 loc_77D56184: ; CODE XREF: sub_77D5608F+EF_j
.text:77D56184 push [ebp+dwResSize] //allocate a wrong size
.text:77D56187 push 0
.text:77D56189 push dword_77D5F1A0
.text:77D5618F call ds:RtlAllocateHeap
总结:转换思路后找到这个加4的漏洞，同样的类型，信任“文件”输入。
思维扩展的结果
EEYE 2004:Windows ANI File Parsing Buffer Overflow
堆栈漏洞极易利用，攻击方法隐蔽。
原理:
相信“ 文件” 输入参数，没做检查直接用作memcpy 的参数。
PNG漏洞，不同的模式
逻辑问题1:
EEYE PNG (Portable Network Graphics) Deflate Heap Corruption Vulnerability
原因:对 Length 码 #286 and #287没有做正确的处理，导致解压程序认为长度是0
do { *dest = *src; ++dest; ++src; } while (--len);
逻辑问题2:libPNG 1.2.5 堆栈溢出
代码:
if (!(png_ptr->mode & PNG_HAVE_PLTE)) {
/* Should be an error, but we can cope with it */
g_warning(png_ptr, "Missing PLTE before tRNS"); }
else if (length > (png_uint_32)png_ptr->num_palette) {
g_warning(png_ptr, "Incorrect tRNS chunk length");
g_crc_finish(png_ptr, length);
return;
}
分析:代码编写的逻辑错误，错误的使用了else if.
相似漏洞:MSN png 漏洞，Media player png 漏洞
逻辑问题的总结
非常容易出现在复杂的文件格式处理中
容易出现在压缩，解压代码中:需要处理很多长度，大小相关的参数。
这种漏洞不一定是缓冲区溢出，也可能是越界访问等等
想象漏洞
发现漏洞有时候是一种想象的过程
例子1:
Venustech ADLab:Microsoft Windows Kernel ANI File Parsing Crash Vulnerability
介绍:ANI是WINDOWS 支持的动画光标格式，在ANI是由多个普通的光标文件组成一个动画，其中ANI文件的头处会标记是几个图标frame，WINDOWS 的内核在显示光标的时候并未对该值进行检查，如果将这个数字设置为0，会导致受影响的WINDOWS系统计算出错误的光标的地址并加以访问，触发了内核的蓝屏崩溃。不仅仅是应用使用ANI文件时会触发，只要在EXPLORER下打开ANI文件存在的目录就会触发。攻击者也可以发送光标的文件，引诱用户访问含有恶意光标显示的页面，以及发送嵌入光标的HTML邮件，导致被攻击者系统蓝屏崩溃。
原理:在计算frame地址的时候失败。
例子2:
Venustech ADLab:Microsoft Windows Kernel ANI File Parsing DOS Vulnerability
介绍:ANI是WINDOWS 2000支持的动画光标格式，在ANI是由多个普通的光标件组成一个动画，其中ANI文件的头处会标记每FRAME切换的频率，该值越小切换的速度越快，WINDOWS 的内核在切换光标FRAME的时候并未对该值进行检查，如果将这个数字设置为0，受影响的WINDOWS的内核会陷入内核的死锁，不再响应任何用户界面的操作。该漏洞触发必须要在使用ANI文件的应用中才能触发,攻击者引诱用户访问含有恶意光标显示的页面，以及发送嵌入光标的HTML邮件，导致被攻击者系统内核死琐。
原因:没有考虑刷新频率是0的情况。
总结
下溢:Size参数小于自身所占大小
上溢:Size加上一个正整数值产生上溢
直接作为参数输入memcpy类函数
非法参数导致地址访问越界
多种逻辑上的错误
充分发挥想象:刷新率?
总结
安全提示:
文件格式是攻击者的另一种输入渠道，同样不要信任从文件读取的数据
解析文件格式时应该对参数进行充分的检查
同样需要想象力，需要考虑到每种可能的情况
检查系统漏洞的常见方法
前期准备建立安全模型 
1、熟悉软件功能、功能实现，配置等； 
如：IIS的虚拟目录、脚本映射； 
2、根据功能，分析安全需求，建立安全模型； 
IIS外挂，文件类型识别，目录正确识别；目录限制； 
外挂的特点；权限不是在文件对象上，需要自己识别文件，所以需要识别出同一个文件的所有文件名； 
3、根据安全需求，分析编程应注意的地方，重点检查。 
IIS要对"../"进行检测，连接文件的处理，识别出正确的目录、文件名； 编程接口完全按接口实现；
原代码分析1、通读原代码； 
2、安全需求里面重点需要检测的地方； 
3、搜索容易有问题的函数调用，如strcpy、strcat、*printf、free、strncpy等； 
4、常见一些编程问题；一些变量类型，如长度变量用int，注意一些函数非直接返回赋值问题等，一些边界条件，记数从0开始还是从1开始。 
5、分析缓冲区使用的代码； 
6、输入输出合法检测； 
7、编程接口调用；了解操作系统、基本文件、进程调用等的特性； 
8、数据结构； 
9、安全领域的最小原则；
二进制代码分析1、测试； 
（1）、熟悉输入输出； 
（2）、根据需要编写测试程序； 
（3）、输入输出各种特殊情况测试，特殊字符、长串； 
（4）、安全需求需要检测的一些条件测试； 
2、反汇编分析； 
（1）、阅读理解反汇编代码； 
（2）、安全需求检测的代码分析； 
（3）、调用接口代码分析； 
（4）、sub esp,xxx 代码分析缓冲； 
（5）、strcpy、strcat、*printf、free、strncpy等调用分析； 
（6）、输入输出检测； 　 
3、跟踪调试； 　 
（1）、异常的拦截分析； 
（2）、一些字符串的流向，读写断点；
总结提高1、分析总结各种漏洞、漏洞原因、编程问题，补丁修补方法，编程怎么避免。 
2、对漏洞归纳分类，全面考虑；
安全漏洞的分类
用户群体大众类软件的漏洞。如Windows的漏洞、IE的漏洞等等。 
专用软件的漏洞。如Oracle漏洞、Apache漏洞等等。
数据角度能读按理不能读的数据，包括内存中的数据、文件中的数据、用户输入的数据、数据库中的数据、网络上传输的数据等等。 
能把指定的内容写入指定的地方（这个地方包括文件、内存、数据库等） 
输入的数据能被执行（包括按机器码执行、按Shell代码执行、按SQL代码执行等等）
作用范围远程漏洞，攻击者可以利用并直接通过网络发起攻击的漏洞。这类漏洞危害极大，攻击者能随心所欲的通过此漏洞操作他人的电脑。并且此类漏洞很容易导致蠕虫攻击，在Windows。 
本地漏洞，攻击者必须在本机拥有访问权限前提下才能发起攻击的漏洞。比较典型的是本地权限提升漏洞，这类漏洞在Unix系统中广泛存在，能让普通用户获得最高管理员权限。 
触发条件上看可以分为： 
主动触发漏洞，攻击者可以主动利用该漏洞进行攻击，如直接访问他人计算机。 
被动触发漏洞，必须要计算机的操作人员配合才能进行攻击利用的漏洞。比如攻击者给管理员发一封邮件，带了一个特殊的jpg图片文件，如果管理员打开图片文件就会导致看图软件的某个漏洞被触发，从而系统被攻击，但如果管理员不看这个图片则不会受攻击。
操作角度文件操作类型，主要为操作的目标文件路径可被控制（如通过参数、配置文件、环境变量、符号链接灯），这样就可能导致下面两个问题： 
写入内容可被控制，从而可伪造文件内容，导致权限提升或直接修改重要数据（如修改存贷数据），这类漏洞有很多，如历史上Oracle TNS LOG文件可指定漏洞，可导致任何人可控制运行Oracle服务的计算机； 
内容信息可被输出，包含内容被打印到屏幕、记录到可读的日志文件、产生可被用户读的core文件等等，这类漏洞在历史上Unix系统中的crontab子系统中出现过很多次，普通用户能读受保护的shadow文件； 
内存覆盖，主要为内存单元可指定，写入内容可指定，这样就能执行攻击者想执行的代码（缓冲区溢出、格式串漏洞、PTrace漏洞、历史上Windows2000的硬件调试寄存器用户可写漏洞）或直接修改内存中的机密数据。
逻辑错误，这类漏洞广泛存在，但很少有范式，所以难以查觉，可细分为： 
条件竞争漏洞（通常为设计问题，典型的有Ptrace漏洞、广泛存在的文件操作时序竞争） 
策略错误，通常为设计问题，如历史上FreeBSD的Smart IO漏洞。 
算法问题（通常为设计问题或代码实现问题），如历史上微软的Windows 95/98的共享口令可轻易获取漏洞。 
设计的不完善，如TCP/IP协议中的3步握手导致了SYN FLOOD拒绝服务攻击。 
实现中的错误（通常为设计没有问题，但编码人员出现了逻辑错误，如历史上博彩系统的伪随机算法实现问题） 
外部命令执行问题，典型的有外部命令可被控制（通过PATH变量，输入中的SHELL特殊字符等等）和SQL注入问题。
时序已发现很久的漏洞：厂商已经发布补丁或修补方法，很多人都已经知道。这类漏洞通常很多人已经进行了修补，宏观上看危害比较小。 
刚发现的漏洞：厂商刚发补丁或修补方法，知道的人还不多。相对于上一种漏洞其危害性较大，如果此时出现了蠕虫或傻瓜化的利用程序，那么会导致大批系统受到攻击。 
0day：还没有公开的漏洞，在私下交易中的。这类漏洞通常对大众不会有什么影响，但会导致攻击者瞄准的目标受到精确攻击，危害也是非常之大。
漏洞利用
如果一个缺陷不能被利用来干“原本”不能干的事（安全相关的），那么就不能被称为安全漏洞，所以安全漏洞必然和漏洞利用紧密联系在一起。 
漏洞利用的视角有： 
数据视角：访问本来不可访问的数据，包括读和写。这一条通常是攻击者的核心目的，而且可造成非常严重的灾难（如银行数据可被人写）。 
权限视角：主要为权限绕过或权限提升。通常权限提升都是为了获得期望的数据操作能力。 
可用性视角：获得对系统某些服务的控制权限，这可能导致某些重要服务被攻击者停止而导致拒绝服务攻击。 
认证绕过：通常利用认证系统的漏洞而不用受权就能进入系统。通常认证绕过都是为权限提升或直接的数据访问服务的。 
代码执行角度：主要是让程序将输入的内容作为代码来执行，从而获得远程系统的访问权限或本地系统的更高权限。这个角度是SQL注入、内存指针游戏类漏洞（缓冲区溢出、格式串、整形溢出等等）等的主要驱动。这个角度通常为绕过系统认证、权限提升、数据读取作准备的。
漏洞发掘方法
首先必须清除安全漏洞是软件BUG的一个子集，一切软件测试的手段都对安全漏洞发掘实用。现在”黑客“用的各种漏洞发掘手段里有模式可循的有： 
fuzz测试（黑盒测试），通过构造可能导致程序出现问题的方式构造输入数据进行自动测试。 
源码审计（白盒测试），现在有了一系列的工具都能协助发现程序中的安全BUG，最简单的就是你手上最新版本的C语言编译器。 
IDA反汇编审计（灰盒测试），这和上面的源码审计非常类似，唯一不同的是很多时候你能获得软件，但你无法拿到源码来审计，但IDA是一个非常强大的反汇编平台，能让你基于汇编码（其实也是源码的等价物）进行安全审计。 
动态跟踪分析，就是记录程序在不同条件下执行的全部和安全问题相关的操作（如文件操作），然后分析这些操作序列是否存在问题，这是竞争条件类漏洞发现的主要途径之一，其他的污点传播跟踪也属于这类。 
补丁比较，厂商的软件出了问题通常都会在补丁中解决，通过对比补丁前后文件的源码（或反汇编码）就能了解到漏洞的具体细节。 
以上手段中无论是用哪种都涉及到一个关键点：需要通过人工分析来找到全面的流程覆盖路径。分析手法多种多样，有分析设计文档、分析源码、分析反汇编代码、动态调试程序等。
漏洞等级评定
考察漏洞的危害性应该紧密的和利用该漏洞带来的危害相关，并不是通常大家认识的所有缓冲区溢出漏洞都是高危漏洞。以远程漏洞为例，比较好的划分方法为： 
1 可远程获取OS、应用程序版本信息。 
2 开放了不必要或危险得服务，可远程获取系统敏感信息。 
3 可远程进行受限的文件、数据读取。 
4 可远程进行重要或不受限文件、数据读取。 
5 可远程进行受限文件、数据修改。 
6 可远程进行受限重要文件、数据修改。
7 可远程进行不受限得重要文件、数据修改，或对普通服务进行拒绝服务攻击。 
8 可远程以普通用户身份执行命令或进行系统、网络级的拒绝服务攻击。 
9 可远程以管理用户身份执行命令（受限、不太容易利用）。 
10 可远程以管理用户身份执行命令（不受限、容易利用）。 
本地漏洞几乎都是导致代码执行,归入上面的10分制可以为: 
远程主动触发代码执行(如IE的漏洞). 
远程被动触发代码执行(如Word漏洞/看图软件漏洞).
DEMO
一个防火墙隔离（只允许运维部的人访问）的网络里运行一台Unix服务器；操作系统中只有root用户和oracle用户可登陆，操作系统中运行了Apache（nobody权限）、Oracle（oracle用户权限）等服务。 
一个攻击者的目的是修改Oracle数据库中的帐单表的数据。 
其可能的攻击步骤为： 
1.接入运维部的网络，获得一个运维部的IP地址从而能通过防火墙访问被保护的Unix服务器。 
2.利用Apache服务的某远程缓冲区溢出漏洞直接获得一个nobody权限的shell访问。 
3.利用操作系统某suid程序的漏洞将自己的权限提升到root权限。 
4.用Oracle的sysdba登陆进入数据库（本地登陆不需要密码）。 
5.修改目标表的数据。
以上5个过程分析下来为： 
第1步：认证绕过 
第2步：远程漏洞、代码执行(机器码)、认证绕过 
第3步：权限提升、认证绕过 
第4步：认证绕过 
第5步：数据写
最新新闻
IE浏览器曝安全漏洞 黑客可窃取密码
电脑安全研究者日前表示，微软广泛流行的IE浏览器存在漏洞，黑客可以通过窃取证书，从而进入Facebook、Twitter和其它网站。研究者将这种技术叫做“cookiejacking”。意大利独立互联网安全研究者罗萨里奥·瓦罗塔（Rosario Valotta）说：“任何网站，任何Cookie，范围之广只能想像。”黑客可以利用漏洞进入到浏览器保存的数据中，也就是“Cookie”，它保存了登录名和密码。
一旦黑客窃取到Cookie，就可以进入到相同的网站，专家将这种技术叫“cookiejacking”。
漏洞在所有IE版本上都存在，包括最新的IE 9，也存在于所有Windows操作系统中。
要利用该漏洞，黑客必须先使受害者在PC显示屏上拖放一个目标，然后才能黑用户的电脑。听起来这个任务比较难，但是瓦罗塔说他能相当容易做到。他建立了一个程序放在Facebook上，用户来挑战：让一个美女裸体。
瓦罗塔说：“我在Facebook上发布游戏，不到三天，超过80个Cookies就传回我的服务器。我只有150个朋友。”
微软表示，在真正的cookiejacking骗局中成功几乎不可能。微软新闻发言人杰瑞·布莱恩特（Jerry Bryant）说：“考虑到需要用户互动，我们不认为这个问题有很高的风险。要受到可能的影响，用户必须先访问恶意网站，被说服去点击和拖动网页上的目标，黑客才能从网上攻击用户曾登录的Cookie。”