空指针漏洞防护技术――初级篇
“panda”通过精心收集,向本站投稿了7篇空指针漏洞防护技术――初级篇,以下是小编整理后的空指针漏洞防护技术――初级篇,欢迎阅读分享。
篇1:空指针漏洞防护技术――初级篇
指针对于绝大部分的编程人员来说都不陌生,说起C/C++中指针的使用既带来了编程方面的方便;同时对编程人员来说,也是对个人编程能力的一种考验,不正确的使用指针会直接导致程序崩溃,而如果是内核代码中对指针的错误使用,会导致系统崩溃,后果也是相当严重。
一般情况下我们使用指针时,错误用法集中在三个方面:
由指针指向的一块动态内存,在利用完后,没有释放内存,导致内存泄露 野指针(悬浮指针)的使用,在指针指向的内存空间使用完释放后,指针指向的内存空间已经归还给了操作系统,此时的指针成为野指针,在没有对野指针做处理的情况下,有可能对该指针再次利用导致指针引用错误而程序崩溃。 Null Pointer 空指针的引用,对于空指针的错误引用往往是由于在引用之前没有对空指针做判断,就直接使用空指针,还有可能把空指针作为一个对象来使用,间接使用对象中的属性或是方法,而引起程序崩溃,空指针的错误使用常见于系统、服务、软件漏洞方面。
对于第一和第二种情况,我们可以通过一些代码审计工具在发布之前就能确定导致内存泄露或是野指针存在的地方。比如常见的工具有fority,valgrind等及时发现指针错误引用导致的问题。
对于第三种情况,空指针(Null Pointer)引用导致的错误,依靠代码审计工具很难发现其中的错误,因为空指针的引用一般不会发生在出现空指针然后直接使用空指针情况。往往是由于代码逻辑比较复杂空指针引用的位置会比较远,不容易发现;并且在正常情况下不会触发,只有在特定输入条件下才会引发空指针引用。对于排查此类错误也就更加困难。
本文不会重点讨论内存泄露和野指针的内容,而是通过一些现有的漏洞和实例来分析一下Null Pointer 空指针。从NULL Pointer概念、本质结合静态逆向及内核动态调试技术来了解在win7 32位和win8 32位下系统对Null Pointer处理情况有什么不同;Win8 32位针对Null Pointer添加了哪些防护机制。
本文从浅入深,循序渐进的讲述了NULL Pointer,结合静态逆向分析和内核级动态调试技术深入剖析win8系统对零页内存的保护机制,其中还涉及到了一些内核调试的技巧,对于对NULL Pointer的概念、使用比较模糊的人员值得一读,对于从事安全研究和学习的人员也是巩固、加深、拓展的好素材。
篇2:空指针漏洞防护技术――初级篇
首先来看看近年来由于空指针的错误使用导致的系统、服务漏洞:
Microsoft windows kernel ‘win32k.sys’本地权限提升漏洞(CVE--1721)(MS15-061)该漏洞影响了windows Server SP2和R2 SP2,Windows Vista SP2, Windows Server SP2 和R2 SP1,Windows7 SP1,Windows8 ,Windows8.1,Windows Server Gold和R2,Windows RT Gold and 8.1 。利用内核驱动程序 win32k.sys漏洞可以提升权限或是引起拒绝访问服务,主要原因是空指针的错误引用导致。
PHP 空指针引用限制绕过漏洞(CVE-2015-3411)PHP存在安全漏洞,由于程序多个扩展中缺少路径或某些函数的路径参数的空字节检查,允许远程攻击者利用漏洞可绕过目标文件系统访问限制,访问任意文件。
0rg空指针引用拒绝访问漏洞(CVE-2008-0153 )X.Org是X.Org基金会运作的一个对X Window系统的官方参考实现,是开源的自由软件。libXfont是一个用于服务器和实用程序的X字体处理库。 X.Org libXfont 1.4.9之前版本和1.5.1之前1.5.x版本的bitmap/bdfread.c文件中的’bdfReadCharacters’函数存在安全漏洞,该漏洞源于程序未能正确处理不能读取的字符位图。远程攻击者可借助特制的BDF字体文件利用该漏洞造成拒绝服务(空指针逆向引用和崩溃),执行任意代码。
Paragma TelnetServer空指针引用拒绝服务漏洞(BID-27143)Pragma TelnetServer是一款远程访问和控制Telnet服务器。Pragma TelnetServer处理协议数据时存在漏洞,远程攻击者可能利用此漏洞导致服务器不可用。TelnetServer服务器对每个入站连接启动一个telnetd.exe进程,该进程在处理TELOPT PRAGMA LOGON telnet选项(138号)期间存在空指针引用,导致进程终止。尽管终止单个进程不会影响其他进程,但终止某些进程会导致拒绝访问服务器。
OpenSSL SSLv2客户端空指针引用拒绝服务漏洞(CVE--4343)OpenSSL是一种开放源码的SSL实现,用来实现网络通信的高强度加密,现在被广泛地用于各种网络应用程序中。OpenSSL的协议实现在处理连接请求时存在问题,远程攻击者可能利用此漏洞导致服务器拒绝服务。SSLv2客户端的get_server_hello函数没有正确地检查空指针。使用OpenSSL的受影响客户端如果创建了到恶意服务器的SSLv2连接,就会导致崩溃。
Linux Kernel空指针间接引用本地拒绝服务漏洞(CVE--2678)Linux kernel 3.14版本内,net/rds/iw.c中的函数rds_iw_laddr_check在实现上存在本地拒绝服务漏洞,本地用户通过盲系统调用没有RDS传输的系统上的RDS套接字,利用此漏洞可造成空指针间接引用和系统崩溃。
ISC BIND named拒绝服务漏洞(CVE-2015-5477)ISC BIND 9.9.7-P2之前版本、9.10.2-P3之前版本,named存在安全漏洞,远程攻击者通过TKEY查询,利用此漏洞可造成拒绝服务(REQUIRE断言失败及程序退出,指针未初始化)。
此类漏洞还有很多,从给出的几个漏洞来看,空指针漏洞主要是以拒绝服务访问漏洞为主,空指针错误引用自然会到底程序出现错误,严重者会崩溃,从而引起拒绝服务访问。
篇3:空指针漏洞防护技术――初级篇
由空指针的错误引用导致的漏洞,其原理本身很简单:错误引用空指针,导致非法访问内存地址。
那到底什么是空指针漏洞呢?在计算机编程过程中使用指针时有两个重要的概念:空指针和野指针。那么在前面我们提到的空指针漏洞是不是就是我们在编程时所说的空指针呢?要弄清这个问题,首先需要知道编程领域中空指针和野指针分别是什么,还要弄清楚什么是空指针漏洞。
3.1 概念性验证
假如 char p,那么p是一个指针变量,该变量还没有指向任何内存空间,如果p = 0; p = 0L; p = ”; p = 3 – 3; p = 0 * 5; 中的任何一种赋值操作之后(对于 C 来说还可以是 p = (void )0;), p 都成为一个空指针,由系统保证空指针不指向任何实际的对象或者函数。反过来说,任何对象或者函数的地址都不可能是空指针。(比如这里的(void )0就是一个空指针。当然除了上面的各种赋值方式之外,还可以用 p = NULL; 来使 p 成为一个空指针。因为在很多系统中#define NULL (void )0。
3.1.1 内存管理之空指针
空指针指向了内存的什么地方呢?标准中并没有对空指针指向内存中的什么地方这一个问题作出规定,也就是说用哪个具体的地址值(0x0 地址还是某一特定地址)表示空指针取决于系统的实现。我们常见的 空指针一般指向 0 地址,即空指针的内部用全 0 来表示 (zeronull pointer,零空指针)。
对于NULL能表示空指针,是否还有其他值来表示空指针呢?在windows核心编程第五版的windows内存结构一章中,表13-1有提到NULL指针分配的分区,其范围是从0x00000000到0x0000FFFF,
这段空间是空闲的,对于空闲的空间而言,没有相应的物理存储器与之相对应,所以对这段空间来说,任何读写操作都是会引起异常的。
从图中看出,对NULL指针分配的区域有0x10000之多,为什么分配如此大的空间?在定义NULL的时候,只使用了 0x00000000这么一个值,而在表13-1有提到NULL指针分配的分区包含了0x00000000-0x0000FFFF,是不是有点浪费空间了;这是和操作系统地址空间的分配粒度相关的,windows X86的默认分配粒度是64KB,为了达到对齐,空间地址需要从0x00010000开始分配,故空指针的区间范围有那么大。
3.1.2知识拓展之野指针
“野指针”又叫”悬浮指针”不是NULL指针,是指向”垃圾”内存的指针。
“野指针”的成因主要有三种:
1)指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。例如: char *p = NULL; char *str = (char *) malloc(100);
2)指针p被free或者delete之后,没有置为NULL,让人误以为p是个合法的指针。
free和delete只是把指针所指的内存给释放掉,但并没有把指针本身干掉。free以后其地址仍然不变(非NULL),只是该地址对应的内存变成垃圾内存,p成了”野指针”。如果此时不把p设置为NULL,会让人误以为p是个合法的指针。如果程序比较长,我们有时记不住p所指的内存是否已经被释放,在继续使用p之前,通常会用语句if (p != NULL)进行防错处理。很遗憾,此时if语句起不到防错作用,因为即便p不是NULL指针,它也不指向合法的内存块。
用free或delete释放了内存之后,就应立即将指针设置为NULL,防止产生”野指针”。内存被释放了,并不表示指针会消亡或者成了NULL指针。
3)指针操作超越了变量的作用范围。例如不要返回指向栈内存的指针或引用,因为栈内存在函数结束时会被释放,这种情况让人防不胜防,示例程序如下:
另外需要注意的是如果程序定义了一个指针,就必须要立即让它指向一个我们设定的空间或者把它设为NULL,如果没有这么做,那么这个指针里的内容是不可预知的,即不知道它指向内存中的哪个空间(即野指针),它有可能指向的是一个空白的内存区域,可能指向的是已经受保护的区域,甚至可能指向系统的关键内存,如果是那样就糟了,也许我们后面不小心对指针进行操作就有可能让系统出现紊乱,死机了。所以必须设定一个空间让指针指向它,或者把指针设为NULL。
3.2源码级验证
接下来就结合两个小的实验例子看看空指针,及使用空指针的后果。
3.2.1指针使用前期对比
本例是要验证指针变量在初始化前后的状况,下图是一段代码:
代码很简单只是验证指针变量在赋值与未赋值分别指向的空间。代码中要打印的值:
指针变量初始化之前的地址 指针变量初始化之前的值 指针变量初始化之后的地址 指针变量初始化之后的值编译之后,运行三次程序看运行的结果:
从三次运行结果来看:
每次打印指针变量的地址都不同,因为每次运行程序,P指针变量的地址都在变动。 同一次打印中指针变量在初始化之前与初始化之后的地址没有变化。因为指针变量也是变量,变量在其生命周期中值可以变动,但是地址不会改变。 每次打印中指针变量在初始化之前的值发生了变化。指针变量的值本身也是指向一块内存地址,在初始化之前该变量不指向任何内存地址,所以该变量的值就是一个随机值(也就是指向随机内存地址)。 每次打印中指针变量在初始化之后的值没有发生变化,在指针变量初始化之后P=0,所以在内存初始化的指针变量指向了内存地址都为0x00000000的位置。在每次打印中指针变量在初始化之后的值就不会发生变化。3.2.2指针使用后期对比
针对指针变量在使用完毕后,内存释放之后的情况对比,其源码如下:
代码没什么复杂逻辑,只是想验证一下在指针变量释放后, P=NULL之前的野指针与P=NULL之后的指针状况,打印的内容:
指针变量P开始的地址与值 指针变量P在分配内存空间之后的地址与值 指针变量P在释放内存空间之后的地址与值 指针变量P在P=NULL之后的地址与值下图是在编译之后运行的结果:
a. 指针变量在声明之后一直到最后的程序结束,指针变量的地址一直没有变动为0x35f778。 b. 定义指针变量时其值为0x00000000 c. 在申请新的内存之后,指针变量的值为申请内存的地址0x6e7a78 d. 在内存释放后,P变成野指针,但是此时P的值仍然是申请的内存地址0x6e7a78,但是此时P指针已经不能再使用。 e. 在P=NULL,p重新指向了地址0x00000000处。
由此可见,我们在释放指针变量后,指针变量会变成野指针,如果此时引用该指针会出现非法访问,因此需要在释放指针变量后将指针变量指向空。
篇4:空指针漏洞防护技术――初级篇
为了能够更加直观的查看指针变量在内存中的变化,下面就结合动态调试的技术看看指针变量在整个使用过程中的变化情况。下面是一段程序代码:
在这里,我们使用OD动态调试器,来看看调用printf函数的情况:
a. 第一条打印语句
PHP
printf(“p address :%p, value :%08x\n”, &p, p);
在调用printf前其内存情况:
可知指针变量P的值为EAX=[EBP-4],P的地址ECX=EBP-4,此时的寄存器值:
调用printf之后的值刚好是这两个值
b.第二条打印语句printf(“p intialized address :%p, value :%08x\n”, &p, p);在调用printf前其内存情况:
可知指针变量P的值为EDX=[EBP-4],P的地址EAX=EBP-4,此时的寄存器值:
调用printf之后的值刚好是这两个值:
c. 第三条打印语句printf(“p free address :%p, value :%08x\n”, &p, p);在调用printf前其内存情况:
可知指针变量P的值为EAX=[EBP-4],P的地址ECX=EBP-4,此时的寄存器值:
调用printf之后的值刚好是这两个值:
d. 第四条打印语句printf(“p ultimate address :%p, value :%08x\n”, &p, p);在调用printf前其内存情况:
可知指针变量P的值为EDX=[EBP-4],P的地址EAX=EBP-4,此时的寄存器值:
调用printf之后的值刚好是这两个值:
篇5:空指针漏洞防护技术――初级篇
3.4 概念总结之空指针漏洞
前面对什么是空指针,什么是野指针做了讲解和验证。
在编程领域的空指针是指向NULL的指针,也就是说指向零页内存的指针叫空指针。对于未初始化的指针,释放内存而未将指针置为NULL和指针指向超出范围的情况称为野指针。那么在第二节中列举的空指针漏洞及未列举的空指针漏洞是不是都是由于引用零页内存导致的呢(比如CVE--2678)?其实不然,有些漏洞是由于引用未初始化的指针或是引用超出范围的指针所导致,而这类漏洞应该说是由于错误的引用了野指针。比如最新的BIND漏洞(CVE--5477):
但是到目前为止还没用听说过哪个漏洞命名为野指针漏洞,而更多的是空指针漏洞。 也就是说在计算机安全领域中由空指针或是野指针导致的漏洞统一叫做空指针漏洞。
篇6:教你数据库漏洞防护技术
数据库漏洞的存在有多种方式,由于每一个现实的场景由多维组合而成,因此数据库漏洞对应也可以从不同角度归类划分。这种分类将更有利于我们掌握对每种漏洞的防护技术。
??????安华金和数据库安全实验室主要从以下九个角度对数据库漏洞进行分类介绍:????
??1.从漏洞作用范围划分
????远程漏洞:攻击者可以利用并直接通过网络发起对数据库攻击的漏洞。这类漏洞危害极大,攻击者能随心所欲的通过此漏洞危害网络上可辨识的数据库。此类漏洞为黑客利用漏洞的主力。
??????本地攻击:攻击者必须在本机拥有访问权限的前提下才能发起攻击的漏洞。比较典型有本地权限提升漏洞,这类漏洞在数据库中广泛存在,能让普通用户获得最高管理员权限。??
????2. 从漏洞危害等级划分
????漏洞危害等级主要按照CVE的评分来划分,分为三个档次:0-3(LOW);4-6(MEDIUM)、7-10(HIGH)。 洞的危害等级划分是根据一个漏洞对数据库造成什么影响来划分的。对数据库的响的机密性、安全性、可用性影响越大威胁等级越高,反之危险等级越低。举例说明:
CVE--1705危险等级是低。它对数据库系统文件无任何影响,可能会导致数据库某些配置文件被修改,对数据库运行无任何影响。
CVE-2006-1871危险等级是中。它只是很可能造成某些信息泄露,有可能导致数据库某些配置文件被修改,可能导致数据库性能下降或小几率出现断链接。
CVE-2006-3702危险等级是高。它可以导致所有数据库系统文件泄露,数据库完全被破坏,可能导致数据库彻底宕机。
??3. 从受影响系统划分
????现有的操作系统多种多样,并且每种系统对应多个版本。操作系统主要分为以下五类:dos 系统、windows 系统、unix 系统、linux 系统和其他操作系统。由于漏洞注入点地址和操作系统具体版本有着直接的关系,所以需要按照操作系统的具体版本来划分。以oracle为例,由于不同的操作系统对缓冲区溢出的防守机制不同,导致这类漏洞基本不存在跨平台的可能。??
??4.从漏洞的危害范围划分
??????漏洞危害是指漏洞被利用后造成的各种危害。本文的危害是指对数据库的直接危害或利用数据库对其他系统造成的危害。这些危害可以分为三类:
??????危害数据库自身,这类漏洞主要是对数据库自身进行攻击。这类漏洞在下文中的“5. 从黑客入侵数据库的技术划分”一节中有详细讲解。
????危害数据库所在服务器,这类漏洞通过数据库对服务器进行攻击。其中手段可分为:通过pl/SQL运行OS命令、通过JAVA运行OS命令、直接通过任务调度程序运行OS命令、使用ALTER SYSTEM运行OS命令,在oracle的某些版本中可以利用oracle编译本地pl/SQL应用程序的方式来运行OS命令。
??危害数据库所在系统的文件系统,这类漏洞通过数据库对服务器上的文件系统做攻击。其中手段可分为:使用 UTL_FILE包访问文件系统、用JAVA访问文件系统、利用操作系统环境变量访问文件系统。
危害数据库所在网络上的其他平台,这类漏洞通过数据库对网络上的其他数据库和服务进行入侵。
??5. 从黑客入侵数据库技术划分
??????5.1 SQL注入
??????SQL本文说所的SQLSQL注入不是web端的,而是针对数据库自身的SQLSQL注入漏洞。两者差异很大。 pl/SQL注入的思想非常简单,
????在正常的sql语句中通过嵌入、注释、转义符等手段加入针对数据库漏洞或数据库设置缺陷的畸形字符串或其他畸形输入。通过单次或多次这种畸形输入逐步获取数据库中更高权限,最终获取数据库中敏感信息或直接夺取数据库DBA权限。进而可能对数据库所在的网络环境和本地服务器造成危害。
??手段具体分为:
代码注入。代码注入攻击多在支持多条SQL语句执行的数据中存在。它是通过黑客在正常语句中加入恶意EXECUTE命令完成攻击的。
函数调用注入。函数调用注入是代码注入的变体,但确是整个SQL注入的核心。它利用数据库存在漏洞将恶意语句注入其中。具体手法分为:
注入select /delete/insert/update语句
注入函数
注入匿名pl/SQL块
游标注入
利用触发器
lateral提权技术
????????其中每种技术中还有细分,例如lateral提权技术中最著名的是CREATE ANT TRIGGER 权限提DBA、CREATE ANT VIEW 权限提DBA、EXECUTE ANY PROCEDURE权限提DBA、CREATE PROCEDUER 权限提DBA。
??????????缓冲区溢出注入。????这个缓冲区溢出和下文的缓冲区溢出不是一种。这种缓冲区溢出是数据库系统函数中某些参数被传入了超过参数长度限制的值,而引发的缓冲区溢出。
??针对SQL操作的注入。??最常见的是利用where子句修改SQL语句返回不同的结果集,来达到获取数据库敏感信息的目的。
????5.2 缓冲区溢出
??????缓冲区溢出:这里所说的缓冲区溢出是指源缓冲区的数据向小于自身位数的缓冲区复制数据时,超越目标缓冲区的位数边界,并且数据库未对存入数据进行边界判断,最终导致目标缓冲区爆满。目标缓冲区内存改变程序控制流、夺取操作系统、禁止访问等多种结果。缓冲区溢出主要可以分成四种:静态数据溢出、栈溢出、堆溢出和格式化串。
????????手段具体分为:
?????? 栈溢出 。????缓冲区溢出的一种主要是通过利用截取函数返回值来进行栈溢出。方式主要分为两种,一种是通过缓冲区溢出改变函数逻辑流程;另一种方式是通过缓冲区溢出改变函数返回地址。其中比较常见的为第二种。
???? 堆溢出 。????缓冲区溢出的一种,利用原理类似栈溢出,但由于堆中地址是动态分配的,无法准确定位,所以黑客要利用堆溢出需要通过DWORD SHOOT技术来对堆进行扫描,获取堆溢出中可利用的地址。
????静态数据区溢出。????静态数据区域存放连续的全局变量和未初始化的静态变量,缓冲区在这发生溢出称为静态数据区溢出。
???? 格式化串 。????格式化串漏洞最显著的例子,就是在*printf系列函数中按照一定的格式对数据进行输出。黑客主要是利用printf()系列函数有三条特殊的性质,首先,第一个可以被利用的性质是:*printf()系列函数的参数的个数是不固定的。其次,利用*printf()的一个特殊的格式符%n,黑客就向内存中写入exploit。再次,利用附加格式符控制跳转地址的值。
????5.3 其他
???? 弱口令 。通常指容易被别人猜测到或被解除工具解除的口令均为弱口令,其中很大一部分是数据库默认口令,其中有一部分是因为缺省密码产生的。
????撞库。通过已收集到的在其他服务中注册的用户名和密码,对目标数据库进行访问尝试。由于很多人习惯用相同密码和账号,因此成功登陆到目标数据库的可能性大大提高,达成盗取大量敏感信息的目的。????
暴力解除。通过数据字典(密码库)对数据库的用户名进行碰撞,最终碰出可以用于访问数据库的用户和密码组合。????
6. 从数据库漏洞成因划分
????输入验证错误。????????????这种错误主要来源于字符串、包等输入值缺乏正确合理的验证,从而导致畸形的输入值进入数据库系统函数中,对数据库造成不可预计的后果。
???????????? 边界条件错误 。????由于数据库属于大型复杂的软件,软件内部函数调用过于复杂,有时会出现对某个传入值的边界,不同地方限制不同,可能对数据库造成不良影响。
???? 缓冲区溢出错误 。????由于数据库中某些函数中的参数值缺乏边界限制和检查,从而暴露出的数据库漏洞。
???? 访问验证错误 。????访问验证错误主要在数据库的网络监听上,黑客通过发送欺诈数据包,来骗取数据库重要信息。
???? 意外条件错误 。????由于数据库中逻辑比较复杂,某些很少被触发的逻辑分支由于软件周期等原因,未被及时发现而导致的数据库漏洞。
???? 其他错误 。??????除了以上五类原因错误导致的数据库漏洞,大部分其他错误是由于用户在使用数据库时,未能按照数据库官方要求进行操作和配置,或者是数据库本身的设计缺陷所引发的漏洞。????
??7. 从漏洞利用的结果划分
???? 越权访问 。访问原本不可访问的数据,包括读和写。这一条通常是攻击者的核心目的,而且可造成非常严重的灾难(如银行数据被人可写)。
???? 提权 。通过越权等方式,对一个低权限用户提升权限,一步一步直到提升为DBA权限。利用提权后的账号窃取数据库中核心数据。
???? 拒绝服务 。攻击者强制目标数据库停止提供服务,是黑客常用的攻击手段之一。其中数据库端口进行的消耗性攻击只是拒绝服务攻击的一小部分,凡是使数据库服务被暂停甚至所处主机死机,都属于拒绝服务攻击。
?????? 夺取操作系统 。当黑客通过网络对数据库进行攻击,利用缓冲区漏洞的攻击会通过劫持被入侵函数中的栈中的函数返回值,来夺取??????函数控制,跳转到黑客编写的shellcode。当shellcode打开CMD(windows)即可通过数据库账号来操控操作系统,从而夺取整个操作系统的过程。
???? 认证绕过 。通常利用认证系统??????的漏洞不用受权就能进入系统。通常认证绕过都是为权限提升或直接的数据访问服务的。??
????8. 从数据库??存漏洞的位置划分
????由于不同数据库类似功能的名称不同本文依oracle为例说明:按照漏洞位置可以分为TNS(监听)漏洞 、Aurora GIOP server漏洞、XDB组件漏洞、DBMS_CDC_IMPDP漏洞、LT组件漏洞、DBMS_CDC_SUBSCRIBE漏洞、DBMS_CDC_ISUBSCRIBE漏洞、MDSYS.SDO_GEOM_TRIG_INSI漏洞、SYS.CDC_DROP_CTABLE_BEFORE漏洞、DBMS_SCHRDULER漏洞、UTL_FILE漏洞、Data Redaction漏洞、审计漏洞等。??
????9. 从漏洞产生的时序上划分
?????????????????????????? 已发现很久的漏洞 。数据库厂商已经发布补丁或修补方法,很多人已经知晓。这类漏洞通常很多人已经进行了修改,宏观上看,危??????害较小。
??????刚发现的漏洞。数据库厂????商刚发布补丁或修补方法,知道的人还不多。相对于上一种漏洞其危害性较大,如果此时出现了蠕虫或傻??瓜化的利用程序,那么会????????导致大批数据库受到攻击。这也是一般黑客最多利用的漏洞。??????????????
????0day漏洞。还没有公开的漏洞,在私下交易中的。这类漏洞通常是最危险的,往往是有组织黑客所采用的。
篇7:网马解密初级篇漏洞预警
网马解密初级篇
一. 网页挂马的概念:
网页挂马是指:在获取网站或者网站服务器的部分或者全部权限后,在网页文件中插入一段恶意代码,这些恶意代码主要是一些包括IE等漏洞利用代码,用户访问被挂马的页面时,如果系统没有更新恶意代码中利用的漏洞补丁,则会执行恶意代码程序,进行 等危险操作,
二.常见的网页挂马方式:
框架挂马:
2. js文件挂马:
首先将以下代码:
document.write(“”);
保存为xxx.js,
则JS挂马代码为:
3. js变形加密
muma.txt可改成任意后缀
4. flash木马
网页木马地址 插入木马地址 width=10 height=10“, ”GET“ 宽度和高度,方式后面的照添,更改木马地址就可以了。
5. 不点出现链接的木马
页面要显示的内容
6.隐蔽挂马:
top.document.body.innerHTML=top.document.body.innerHTML+'\r\n'[/url]
7.css中挂马:
body {background-image:url('javascript.:document.write(”")')}
8.Java挂马:
三.常见网马所利用的漏洞判断方式:
1. 根据恶意网址名称来判断漏洞
2.根据CLSID判断漏洞:
常见网马解密工具:
1.Freshow工具(作者:jimmyleo大牛)
工具简介(摘自freshow帮助文档):Freshow是一款脚本解密的工具,其开发的初衷是减少机械操作和简化处理步骤,使您能专注于脚本本身,
一般解密方法有手动和工具两种,Freshow尽量使得工作在一个工具下完成,当然它还不是那么成熟,您可以搭配其他工具来完成工作。Freshow目前具备过滤和解密功能模块能满足常见加密分析所需的操作。它的性能和稳定性还有最终的成果取决于您对Freshow的熟悉程度、对脚本知识的了解程度以及分析程度。
2.HTMLDecoder(作者:祥子大牛)
工具简介:这是一款自动解密的工具,功能非常强大,可惜俺对它研究还是,不是很深。只用过它解密过flash网马和pdf网马。
3.malzilla又称神器
工具简介:这个工具很好很强大,freshow无法解出的网马,使用这个工具基本都可以解出。
4.MDecoder(麦田大牛)
工具简介(摘自麦田的博客):1,Freshow的模仿者,使用WIN32汇编编写。
2,支持对网马中swf和exe的查找(不完善)。
3,支持网马识别,可通过修改classid.ini来扩充特征。
暂时先介绍这么多,还有很多辅助类的工具,后续会一一介绍给大家
【空指针漏洞防护技术――初级篇】相关文章:






文档为doc格式