安全漏洞的检查方法

2024-05-09 18:55

1. 安全漏洞的检查方法

 建立安全模型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、对漏洞归纳分类,全面考虑;

安全漏洞的检查方法

2. 漏洞检测的方法分为哪几种?

1、直接测试(Test):直接测试是指利用漏洞特点发现系统漏洞的方法。要找出系统中的常见漏洞,最显而易见的方法就是试图渗透漏洞。渗透测试是指使用针对漏洞特点设计的脚本或者程序检测漏洞。根据渗透方法的不同,可以将测试分为两种不同的类型:可以直接观察到的测试和只能间接观察到的测试。2、推断(Inference):推断是指不利用系统漏洞而判断漏洞是否存在的方法。它并不直接渗透漏洞,只是间接地寻找漏洞存在的证据。采用推断方法的检测手段主要有版本检查(VersionCheck)、程序行为分析、操作系统堆栈指纹分析和时序分析等。3、带凭证的测试(TestwithCredentials):凭证是指访问服务所需要的用户名或者密码,包括UNIX的登录权限和从网络调用WindowsNT的API的能力。带凭证的测试定义是:除了目标主机IP地址以外,直接测试和推断两种方法都不需要其他任何信息

3. 注入漏洞的检测方法

目前比较准确的检测注入漏洞的方法是进行网站漏洞扫描,推荐EeSafe网站安全联盟。查找与修补一、注入点的查找当我们想要测试某个站点时,一般会架上注入工具对其狂轰乱炸,这样做虽然有时能找到注入点,但还是有些盲目,我个人的看法是:如果有源码的话,就从源码入手,在源码中查找注入点。对于源码,有些朋友可能觉得很难,其实源码并不神秘,它也是有一定的语法规则的,看一套优秀的源码就像是在欣赏一部精美的电影,只要我们坚持每天看一些优秀源码,再加上百度这个老师的指点,用不了多久,源码的神秘面纱就会被你揭去。闲话少说,下面我们就开始查找注入点,目标有两个:一是Request,二是SQL语句。说到Request,这个是ASP程序中的一个内建对象,怎么?不懂?那就跟我先来恶补一下吧!它是用来获取客户端信息的,有五种方法,而会出现注入点的一般有以下三种:1、Request.QueryString:取得客户端提交的信息。当Form以Get方法提交信息,或是直接在URL中提交变量值时,在服务器端接收数据时采用的就是这种方法。2、Request.Form:同样也是取得客户端提交的信息,但它接收的是Form以Post方法提交的信息。3、Request.Cookies:取得客户端浏览器的Cookies信息。Cookies就是小甜饼,指的是一些私人信息,如用户名、密码之类的信息。有些程序员为了减少错误,对于前两种信息的获取,会采用Request来取得客户端提交的信息,这种方法,虽然可以通吃Request.QueryString和Request.Form的提交信息,但如果过滤的不好,就会被漏洞反咬一口。了解过一些Request的知识后,下面就在“查找”中输入“request”进行搜索,OK!当找到上面所列的三项Request语句后,再来看一下程序对这些Request语句是否做了过滤,比如ID值是否用INT过滤,例:id=int(request(id));字符串值是否用replace ()或instr()等函数进行过滤单引号或一些特殊字符,例:username=replace(request(username),, );或者程序是否采用本身的一些过滤函数来过滤这些提交值。从查找到这句request参数起,一直到SQL语句中使用这个提交值至,如果中间没有上面的层层关卡,那么,一个注入点,基本上就算是出现了。说到SQL语句,不能不提到以下几个常用的语句:1、查询语句:Select [( [,, ...])] FROM  [Where  [AND|OR ...]2、更新语句:Update  SET 列名1 = 常量表达式1[,列名2 = 常量表达式2 ...] Where  [AND|OR ...]3、删除语句:Delete FROM〈表名JMDCW〉[Where  [AND|OR ...]]这里不对SQL语句做介绍了。在上面列出的SQL语句中,注入点出现频率最高的是Select语句,而注入参数的出没地通常都是在Where之后的条件中。当一个没有过滤的Request语句进入SQL语句后,就是注入大显身手的时候了,不过,在进行注入之前还要先看一下该参数是直接引入,还是用单引号引入的,另外,该参数是否还应用于其他SQL语句中,然后,根据不同的信息,选择不同的处理方式,或直接暴破,或UNION查询,当然,如果存在注入点的程序使用的是SQL数据库,那就不单单是得到一些重要信息,甚至还可以增加管理员。下面用“蚂蚁影院3.0”版注销用户(wantlogin.asp)中的一段源码来做一下介绍:引用 thenset rst=server.createobject(adodb.recordset)sql=select money,online from users where userid=&request(userid1)& and password=&md5(request(pws))&rst.open sql,conn,1,3if rst.eof and rst.bof thenresponse.writealert(用户名或密码错误!);history.back();elseresponse.writealert(恢复成功你现在可以登陆!);response.writelocation.href = index.asp;rst.closeset rst=nothingconn.closeset conn=nothingend ifend if%>在其流程中,首先判断取得的提交值userid1是否为空,不为空的话就进入SQL语句中,验证取得的用户名及密码是否和数据库内的用户名及密码一致,如果不一致,则弹出“用户名及密码错误”窗口,否则,就弹出“恢复成功”的窗口。这也是一段典型的注入漏洞源码,并且,接收的方式还是使用的 request,这就给我们提交注入语句提供了最大的方便。如果我们在URL地址中提交如下字符:http: //127.0.0.1/wantlogin.asp?userid1=aa&pws=bb,因为没有aa这个用户,那么就会弹出错误窗口,而如果我们将aa换成如下字符:aa or 1=1 or 1=1,pws保持不变,这样提交的语句到了SQL语句中就成了如下语句:select money,online from users where userid1=aa or 1=1 or 1=1 and password=md5(bb),以往我们所见到的测试代码一般为“or 1=1”,而这里却多用了一个 or ,为什么要多用一个or呢?解释一下,在逻辑运算符中,and的优先级别高于or ,程序运行后会先运算后面的1=1 and password=md5(bb),因为密码是随便输入的,所以and后的password值为假,而and前的1=1虽然为真,但真and 假=假,所以,这个and的运算值为假,再来看or运算,因为前面的用户名也是不存在的,其值当然为假,如此一来,where后的逻辑运算就成了如下表达式:假or真or假,结果值还是为真,这样就会弹出“恢复成功”窗口,如果将其中的or 1=1 改为or 1=2,那逻辑表达式则成了:假or假or假,值当然也为假,弹出的就是“用户名或密码错误”的窗口。这样,根据弹出窗口的不同,我们就可以构造一些特殊字符,然后猜测出需要的数据了,比如查询管理员ID的语句,将or后的1=1更改为: 1=(Select top 1 id from admin),这里暂用admin表示管理员表名,如果存在ID为1的管理员,那么就会弹出“恢复成功”的窗口,否则,就证明管理员的ID不为1,那就要再用其他数字来测试。猜出管理员ID后,再把此段字符更改为猜测管理员名称长度的字符:5<(Select len(adminname) from admin where id=1),如为真,则证明长度大于5,否则长度小于或等于5。猜出长度后,再用asc()函数来猜测管理员的名称:90<(select asc(mid(adminname,1,1)) from admin where id=1),如此循环,就能暴破出管理员的名称及密码了。上面提到的是Request.QueryString和Request.Form的注入方法,而Request.Cookies的注入方法则是要修改本地的Cookies值来实现的,推荐使用一些专门的Cookies修改工具,不过,用Cookies来注入相对而言,就麻烦了好多,但原理和前面的注入是一样的,这里就不介绍了。二、注入点的修补在上面着重讲了如何查找注入点及简单的利用方法,当我们知道了攻后,也就明白了如何守,攻和守之间虽然是对立的,但也是相互的。明白了什么地方存在注入点,再来修补也就容易多了。在前面查找注入点时,我也提到查看程序中是否对提交参数进行了过滤,每个程序对注入的过滤函数都不相同,我们在修补自已站点上的注入点时,可参照其他程序中的过滤函数,也可根据自已的需要,单独过滤一些敏感的字符。这里,还是以上面的那个例子来说一下如何修补注入点。在前面的 SQL语句中有这一句:userid=&request(userid1)&,这其中对提交来的参数是用单引号来引入的,而我们能成功注入也是在提交参数中加入了单引号来闭合其语句,这样,加入一个replace()函数对单引号进行过滤,修改后的语句为:userid= &replace(request(userid1),,)&,这样用户再提交带有单引号的字符时, Replace()就会将单引号过滤为空,如此一来,提交的那些特殊字符也就失去了其意义。当然,我们还可以在userid1进入SQL语句之前,对其长度进行一下判断,如果超过规定的长度,就弹出错误,中止页面执行并返回到指定的页面。当然还可以借鉴一些优秀源码中的过滤方法。总之,注入漏洞是可以避免的,即使出现了注入点,只要我们分析出其出现的原因,也就能很容易地将其修补了!

注入漏洞的检测方法

4. 如何检测网站漏洞 教你一个简单的方法

1、通常是指基于漏洞数据库,通过扫描等手段,对指定的远程或者本地计算机系统的安全脆弱性进行检测,发现可利用的漏洞的一种安全检测(渗透攻击)行为。网站漏洞检测是对你的网站进行全方位的扫描,检查你当前的网页是否有漏洞,如果有漏洞则需要马上进行修复,否则网页很容易受到网络的伤害甚至被黑客借助于网页的漏洞植入木马,那么后果将不堪设想,一但发现有漏洞就要马上修复。 
 
 2、网站漏洞检测的工具目前有两种模式:软件扫描和平台扫描。软件扫描就通过下载软件安装,对自身网站进行漏洞扫描,一般网站漏洞软件都需要付费的,比较知名有X-Scan;还有像SCANV、MDCSOFT SCAN等的这种检测平台,而平台扫描是近几年兴起的,要将网站提交到该平台,通过认证即可以提交认证,认证后将扫描结果通过邮件把漏洞清单发给用户,实现云安全,平台一般免费。

5. 网站漏洞的网站漏洞检测

通常是指基于漏洞数据库,通过扫描等手段,对指定的远程或者本地计算机系统的安全脆弱性进行检测,发现可利用的漏洞的一种安全检测(渗透攻击)行为。网站漏洞检测是对你的网站进行全方位的扫描,检查你当前的网页是否有漏洞,如果有漏洞则需要马上进行修复,否则网页很容易受到网络的伤害甚至被黑客借助于网页的漏洞植入木马,那么后果将不堪设想,一但发现有漏洞就要马上修复。网站漏洞检测的工具目前有两种模式:软件扫描和平台扫描。软件扫描就通过下载软件安装,对自身网站进行漏洞扫描,一般网站漏洞软件都需要付费的,比较知名有X-Scan;还有像SCANV、MDCSOFT SCAN等的这种检测平台,而平台扫描是近几年兴起的,要将网站提交到该平台,通过认证即可以提交认证,认证后将扫描结果通过邮件把漏洞清单发给用户,实现云安全,平台一般免费。

网站漏洞的网站漏洞检测

6. 安全漏洞的常见方法

常见攻击方法与攻击过程的简单描述系统攻击是指某人非法使用或破坏某一信息系统中的资源,以及非授权使系统丧失部分或全部服务功能的行为。通常可以把攻击活动大致分为远程攻击和内部攻击两种。随着互联网络的进步,其中的远程攻击技术得到很大发展,威胁也越来越大,而其中涉及的系统漏洞以及相关的知识也较多,因此有重要的研究价值。寻找客户端漏洞目标:客户端的漏洞?客户端易受攻击: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.dllWindows 内核实现对Ani 的支持,通过ie 不需要用户互动操作。谁会怀疑网页上的指针文件?PNG Msn, libpng 很多开源软件隐蔽性严重威胁用户安全从黑客的角度:如果利用图像格式触发的漏洞,会降低了受害者的警觉性,易利用社会工程学。蠕虫传播可能利用一些非常容易让人警惕的文件格式,但我们讨论的是图片格式jgp, png, ani...不容易让人引起怀疑多种攻击媒介,利于黑客攻击:通过网页,邮件可以穿越防火墙的保护,IDS不易检查,需要对各种格式,协议进行解析才能检查出漏洞攻击。图像的基本格式流格式由很多段构成,段里面又由标记,参数(漏洞点),数据段构成还可能有段里面再嵌套段(漏洞点)Gif,Ani可能包含很多帧,刷新率,帧的索引(漏洞点)可能会有标记图形模式的bit-map,可能会有逻辑上的错误pngJPG格式中的漏洞先来一个实际的例子: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没有做正确的处理,导致解压程序认为长度是0do { *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类函数非法参数导致地址访问越界多种逻辑上的错误充分发挥想象:刷新率?总结安全提示:文件格式是攻击者的另一种输入渠道,同样不要信任从文件读取的数据解析文件格式时应该对参数进行充分的检查同样需要想象力,需要考虑到每种可能的情况

7. 什么是漏洞检测的推断方法,有什么优缺点?

推断是指不利用系统漏洞而判断漏洞是否存在的方法。它并不直接渗透漏洞,只是间接地寻找漏洞存在的证据。优点:推断的方法在快速检查大量目标时很有用,因为这种方法对计算机和网络的要求都很低。它比渗透测试方法攻击性更小。它也可以用于检查DoS漏洞,因为它基本没有攻击性,所以可以在检查很多DoS漏洞以后再重新启动系统。缺点:该方法不如渗透测试方法可靠。

什么是漏洞检测的推断方法,有什么优缺点?

8. 安全漏洞的发掘方法

首先必须清楚安全漏洞是软件BUG的一个子集,一切软件测试的手段都对安全漏洞发掘实用。现在”黑客“用的各种漏洞发掘手段里有模式可循的有:fuzz测试(黑盒测试),通过构造可能导致程序出现问题的方式构造输入数据进行自动测试。源码审计(白盒测试),现在有了一系列的工具都能协助发现程序中的安全BUG,最简单的就是你手上最新版本的C语言编译器。IDA反汇编审计(灰盒测试),这和上面的源码审计非常类似,唯一不同的是很多时候你能获得软件,但你无法拿到源码来审计,但IDA是一个非常强大的反汇编平台,能让你基于汇编码(其实也是源码的等价物)进行安全审计。动态跟踪分析,就是记录程序在不同条件下执行的全部和安全问题相关的操作(如文件操作),然后分析这些操作序列是否存在问题,这是竞争条件类漏洞发现的主要途径之一,其他的污点传播跟踪也属于这类。补丁比较,厂商的软件出了问题通常都会在补丁中解决,通过对比补丁前后文件的源码(或反汇编码)就能了解到漏洞的具体细节。以上手段中无论是用哪种都涉及到一个关键点:需要通过人工分析来找到全面的流程覆盖路径。分析手法多种多样,有分析设计文档、分析源码、分析反汇编代码、动态调试程序等。

最新文章
热门文章
推荐阅读