漏洞_漏洞挖掘 - CSDN
精华内容
参与话题
  • 十大常见web漏洞及防范

    万次阅读 多人点赞 2018-07-29 13:26:54
    十大常见web漏洞 一、SQL注入漏洞 SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。在设计程序,忽略了对输入字符串中夹带的SQL...

    十大常见web漏洞

    一、SQL注入漏洞

    SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。在设计程序,忽略了对输入字符串中夹带的SQL指令的检查,被数据库误认为是正常的SQL指令而运行,从而使数据库受到攻击,可能导致数据被窃取、更改、删除,以及进一步导致网站被嵌入恶意代码、被植入后门程序等危害。
    通常情况下,SQL注入的位置包括:
    (1)表单提交,主要是POST请求,也包括GET请求;
    (2)URL参数提交,主要为GET请求参数;
    (3)Cookie参数提交;
    (4)HTTP请求头部的一些可修改的值,比如Referer、User_Agent等;
    (5)一些边缘的输入点,比如.mp3文件的一些文件信息等。
    常见的防范方法
    (1)所有的查询语句都使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。当前几乎所有的数据库系统都提供了参数化SQL语句执行接口,使用此接口可以非常有效的防止SQL注入攻击。
    (2)对进入数据库的特殊字符(’”<>&*;等)进行转义处理,或编码转换。
    (3)确认每种数据的类型,比如数字型的数据就必须是数字,数据库中的存储字段必须对应为int型。
    (4)数据长度应该严格规定,能在一定程度上防止比较长的SQL注入语句无法正确执行。
    (5)网站每个数据层的编码统一,建议全部使用UTF-8编码,上下层编码不一致有可能导致一些过滤模型被绕过。
    (6)严格限制网站用户的数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害。
    (7)避免网站显示SQL错误信息,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判断。
    (8)在网站发布之前建议使用一些专业的SQL注入检测工具进行检测,及时修补这些SQL注入漏洞。

    二、跨站脚本漏洞

    跨站脚本攻击(Cross-site scripting,通常简称为XSS)发生在客户端,可被用于进行窃取隐私、钓鱼欺骗、窃取密码、传播恶意代码等攻击。
    XSS攻击使用到的技术主要为HTML和Javascript,也包括VBScript和ActionScript等。XSS攻击对WEB服务器虽无直接危害,但是它借助网站进行传播,使网站的使用用户受到攻击,导致网站用户帐号被窃取,从而对网站也产生了较严重的危害。
    XSS类型包括:
    (1)非持久型跨站:即反射型跨站脚本漏洞,是目前最普遍的跨站类型。跨站代码一般存在于链接中,请求这样的链接时,跨站代码经过服务端反射回来,这类跨站的代码不存储到服务端(比如数据库中)。上面章节所举的例子就是这类情况。
    (2)持久型跨站:这是危害最直接的跨站类型,跨站代码存储于服务端(比如数据库中)。常见情况是某用户在论坛发贴,如果论坛没有过滤用户输入的Javascript代码数据,就会导致其他浏览此贴的用户的浏览器会执行发贴人所嵌入的Javascript代码。
    (3)DOM跨站(DOM XSS):是一种发生在客户端DOM(Document Object Model文档对象模型)中的跨站漏洞,很大原因是因为客户端脚本处理逻辑导致的安全问题。
    常用的防止XSS技术包括:
    (1)与SQL注入防护的建议一样,假定所有输入都是可疑的,必须对所有输入中的script、iframe等字样进行严格的检查。这里的输入不仅仅是用户可以直接交互的输入接口,也包括HTTP请求中的Cookie中的变量,HTTP请求头部中的变量等。
    (2)不仅要验证数据的类型,还要验证其格式、长度、范围和内容。
    (3)不要仅仅在客户端做数据的验证与过滤,关键的过滤步骤在服务端进行。
    (4)对输出的数据也要检查,数据库里的值有可能会在一个大网站的多处都有输出,即使在输入做了编码等操作,在各处的输出点时也要进行安全检查。
    (5)在发布应用程序之前测试所有已知的威胁。

    三、弱口令漏洞

    弱口令(weak password) 没有严格和准确的定义,通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令。设置密码通常遵循以下原则:
    (1)不使用空口令或系统缺省的口令,这些口令众所周之,为典型的弱口令。
    (2)口令长度不小于8个字符。
    (3)口令不应该为连续的某个字符(例如:AAAAAAAA)或重复某些字符的组合(例如:tzf.tzf.)。
    (4)口令应该为以下四类字符的组合,大写字母(A-Z)、小写字母(a-z)、数字(0-9)和特殊字符。每类字符至少包含一个。如果某类字符只包含一个,那么该字符不应为首字符或尾字符。
    (5)口令中不应包含本人、父母、子女和配偶的姓名和出生日期、纪念日期、登录名、E-mail地址等等与本人有关的信息,以及字典中的单词。
    (6)口令不应该为用数字或符号代替某些字母的单词。
    (7)口令应该易记且可以快速输入,防止他人从你身后很容易看到你的输入。
    (8)至少90天内更换一次口令,防止未被发现的入侵者继续使用该口令。

    四、HTTP报头追踪漏洞

    HTTP/1.1(RFC2616)规范定义了HTTP TRACE方法,主要是用于客户端通过向Web服务器提交TRACE请求来进行测试或获得诊断信息。当Web服务器启用TRACE时,提交的请求头会在服务器响应的内容(Body)中完整的返回,其中HTTP头很可能包括Session Token、Cookies或其它认证信息。攻击者可以利用此漏洞来欺骗合法用户并得到他们的私人信息。该漏洞往往与其它方式配合来进行有效攻击,由于HTTP TRACE请求可以通过客户浏览器脚本发起(如XMLHttpRequest),并可以通过DOM接口来访问,因此很容易被攻击者利用。
    防御HTTP报头追踪漏洞的方法通常禁用HTTP TRACE方法。

    五、Struts2远程命令执行漏洞

    ApacheStruts是一款建立Java web应用程序的开放源代码架构。Apache Struts存在一个输入过滤错误,如果遇到转换错误可被利用注入和执行任意Java代码。
    网站存在远程代码执行漏洞的大部分原因是由于网站采用了Apache Struts Xwork作为网站应用框架,由于该软件存在远程代码执高危漏洞,导致网站面临安全风险。CNVD处置过诸多此类漏洞,例如:“GPS车载卫星定位系统”网站存在远程命令执行漏洞(CNVD-2012-13934);Aspcms留言本远程代码执行漏洞(CNVD-2012-11590)等。
    修复此类漏洞,只需到Apache官网升级Apache Struts到最新版本:http://struts.apache.org

    六、文件上传漏洞

    文件上传漏洞通常由于网页代码中的文件上传路径变量过滤不严造成的,如果文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,攻击者可通过 Web 访问的目录上传任意文件,包括网站后门文件(webshell),进而远程控制网站服务器。
    因此,在开发网站及应用程序过程中,需严格限制和校验上传的文件,禁止上传恶意代码的文件。同时限制相关目录的执行权限,防范webshell攻击。

    七、私有IP地址泄露漏洞

    IP地址是网络用户的重要标示,是攻击者进行攻击前需要了解的。获取的方法较多,攻击者也会因不同的网络情况采取不同的方法,如:在局域网内使用Ping指令,Ping对方在网络中的名称而获得IP;在Internet上使用IP版的QQ直接显示。最有效的办法是截获并分析对方的网络数据包。攻击者可以找到并直接通过软件解析截获后的数据包的IP包头信息,再根据这些信息了解具体的IP。
    针对最有效的“数据包分析方法”而言,就可以安装能够自动去掉发送数据包包头IP信息的一些软件。不过使用这些软件有些缺点,譬如:耗费资源严重,降低计算机性能;访问一些论坛或者网站时会受影响;不适合网吧用户使用等等。现在的个人用户采用最普及隐藏IP的方法应该是使用代理,由于使用代理服务器后,“转址服务”会对发送出去的数据包有所修改,致使“数据包分析”的方法失效。一些容易泄漏用户IP的网络软件(QQ、MSN、IE等)都支持使用代理方式连接Internet,特别是QQ使用“ezProxy”等代理软件连接后,IP版的QQ都无法显示该IP地址。虽然代理可以有效地隐藏用户IP,但攻击者亦可以绕过代理,查找到对方的真实IP地址,用户在何种情况下使用何种方法隐藏IP,也要因情况而论。

    八、未加密登录请求

    由于Web配置不安全,登陆请求把诸如用户名和密码等敏感字段未加密进行传输,攻击者可以窃听网络以劫获这些敏感信息。建议进行例如SSH等的加密后再传输。

    九、敏感信息泄露漏洞

    SQL注入、XSS、目录遍历、弱口令等均可导致敏感信息泄露,攻击者可以通过漏洞获得敏感信息。针对不同成因,防御方式不同

    十、CSRF

    http://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html


    Web应用是指采用B/S架构、通过HTTP/HTTPS协议提供服务的统称。随着互联网的广泛使用,Web应用已经融入到日常生活中的各个方面:网上购物、网络银行应用、证券股票交易、政府行政审批等等。在这些Web访问中,大多数应用不是静态的网页浏览,而是涉及到服务器侧的动态处理。此时,如果Java、PHP、ASP等程序语言的编程人员的安全意识不足,对程序参数输入等检查不严格等,会导致Web应用安全问题层出不穷。

    本文根据当前Web应用的安全情况,列举了Web应用程序常见的攻击原理及危害,并给出如何避免遭受Web攻击的建议。

    Web应用漏洞原理

    Web应用攻击是攻击者通过浏览器或攻击工具,在URL或者其它输入区域(如表单等),向Web服务器发送特殊请求,从中发现Web应用程序存在的漏洞,从而进一步操纵和控制网站,查看、修改未授权的信息。

    1.1 Web应用的漏洞分类

    1、信息泄露漏洞

    信息泄露漏洞是由于Web服务器或应用程序没有正确处理一些特殊请求,泄露Web服务器的一些敏感信息,如用户名、密码、源代码、服务器信息、配置信息等。

    造成信息泄露主要有以下三种原因:

    –Web服务器配置存在问题,导致一些系统文件或者配置文件暴露在互联网中;

    –Web服务器本身存在漏洞,在浏览器中输入一些特殊的字符,可以访问未授权的文件或者动态脚本文件源码;

    –Web网站的程序编写存在问题,对用户提交请求没有进行适当的过滤,直接使用用户提交上来的数据。

    2、目录遍历漏洞

    目录遍历漏洞是攻击者向Web服务器发送请求,通过在URL中或在有特殊意义的目录中附加“../”、或者附加“../”的一些变形(如“..\”或“..//”甚至其编码),导致攻击者能够访问未授权的目录,以及在Web服务器的根目录以外执行命令。

    3、命令执行漏洞

    命令执行漏洞是通过URL发起请求,在Web服务器端执行未授权的命令,获取系统信息,篡改系统配置,控制整个系统,使系统瘫痪等。

    命令执行漏洞主要有两种情况:

    –通过目录遍历漏洞,访问系统文件夹,执行指定的系统命令;

    –攻击者提交特殊的字符或者命令,Web程序没有进行检测或者绕过Web应用程序过滤,把用户提交的请求作为指令进行解析,导致执行任意命令。

    4、文件包含漏洞

    文件包含漏洞是由攻击者向Web服务器发送请求时,在URL添加非法参数,Web服务器端程序变量过滤不严,把非法的文件名作为参数处理。这些非法的文件名可以是服务器本地的某个文件,也可以是远端的某个恶意文件。由于这种漏洞是由PHP变量过滤不严导致的,所以只有基于PHP开发的Web应用程序才有可能存在文件包含漏洞。

    5、SQL注入漏洞

    SQL注入漏洞是由于Web应用程序没有对用户输入数据的合法性进行判断,攻击者通过Web页面的输入区域(如URL、表单等) ,用精心构造的SQL语句插入特殊字符和指令,通过和数据库交互获得私密信息或者篡改数据库信息。SQL注入攻击在Web攻击中非常流行,攻击者可以利用SQL注入漏洞获得管理员权限,在网页上加挂木马和各种恶意程序,盗取企业和用户敏感信息。

    6、跨站脚本漏洞

    跨站脚本漏洞是因为Web应用程序时没有对用户提交的语句和变量进行过滤或限制,攻击者通过Web页面的输入区域向数据库或HTML页面中提交恶意代码,当用户打开有恶意代码的链接或页面时,恶意代码通过浏览器自动执行,从而达到攻击的目的。跨站脚本漏洞危害很大,尤其是目前被广泛使用的网络银行,通过跨站脚本漏洞攻击者可以冒充受害者访问用户重要账户,盗窃企业重要信息。

    根据前期各个漏洞研究机构的调查显示,SQL注入漏洞和跨站脚本漏洞的普遍程度排名前两位,造成的危害也更加巨大。

    1.2 SQL注入攻击原理

    SQL注入攻击是通过构造巧妙的SQL语句,同网页提交的内容结合起来进行注入攻击。比较常用的手段有使用注释符号、恒等式(如1=1)、使用union语句进行联合查询、使用insert或update语句插入或修改数据等,此外还可以利用一些内置函数辅助攻击。

    通过SQL注入漏洞攻击网站的步骤一般如下:

    第一步:探测网站是否存在SQL注入漏洞。

    第二步:探测后台数据库的类型。

    第三步:根据后台数据库的类型,探测系统表的信息。

    第四步:探测存在的表信息。

    第五步:探测表中存在的列信息。

    第六步:探测表中的数据信息。

    1.3 跨站脚本攻击原理

    跨站脚本攻击的目的是盗走客户端敏感信息,冒充受害者访问用户的重要账户。跨站脚本攻击主要有以下三种形式:

    1、本地跨站脚本攻击

    B给A发送一个恶意构造的Web URL,A点击查看了这个URL,并将该页面保存到本地硬盘(或B构造的网页中存在这样的功能)。A在本地运行该网页,网页中嵌入的恶意脚本可以A电脑上执行A持有的权限下的所有命令。

    2、反射跨站脚本攻击

    A经常浏览某个网站,此网站为B所拥有。A使用用户名/密码登录B网站,B网站存储下A的敏感信息(如银行帐户信息等)。C发现B的站点包含反射跨站脚本漏洞,编写一个利用漏洞的URL,域名为B网站,在URL后面嵌入了恶意脚本(如获取A的cookie文件),并通过邮件或社会工程学等方式欺骗A访问存在恶意的URL。当A使用C提供的URL访问B网站时,由于B网站存在反射跨站脚本漏洞,嵌入到URL中的恶意脚本通过Web服务器返回给A,并在A浏览器中执行,A的敏感信息在完全不知情的情况下将发送给了C。

    3、持久跨站脚本攻击

    B拥有一个Web站点,该站点允许用户发布和浏览已发布的信息。C注意到B的站点具有持久跨站脚本漏洞,C发布一个热点信息,吸引用户阅读。A一旦浏览该信息,其会话cookies或者其它信息将被C盗走。持久性跨站脚本攻击一般出现在论坛、留言簿等网页,攻击者通过留言,将攻击数据写入服务器数据库中,浏览该留言的用户的信息都会被泄漏。


    Web应用漏洞的防御实现

    对于以上常见的Web应用漏洞漏洞,可以从如下几个方面入手进行防御:

    1)对 Web应用开发者而言

    大部分Web应用常见漏洞,都是在Web应用开发中,开发者没有对用户输入的参数进行检测或者检测不严格造成的。所以,Web应用开发者应该树立很强的安全意识,开发中编写安全代码;对用户提交的URL、查询关键字、HTTP头、POST数据等进行严格的检测和限制,只接受一定长度范围内、采用适当格式及编码的字符,阻塞、过滤或者忽略其它的任何字符。通过编写安全的Web应用代码,可以消除绝大部分的Web应用安全问题。

    2) 对Web网站管理员而言

    作为负责网站日常维护管理工作Web管理员,应该及时跟踪并安装最新的、支撑Web网站运行的各种软件的安全补丁,确保攻击者无法通过软件漏洞对网站进行攻击。

    除了软件本身的漏洞外,Web服务器、数据库等不正确的配置也可能导致Web应用安全问题。Web网站管理员应该对网站各种软件配置进行仔细检测,降低安全问题的出现可能。

    此外,Web管理员还应该定期审计Web服务器日志,检测是否存在异常访问,及早发现潜在的安全问题。

    3)使用网络防攻击设备

    前两种为事前预防方式,是比较理想化的情况。然而在现实中,Web应用系统的漏洞还是不可避免的存在:部分Web网站已经存在大量的安全漏洞,而Web开发者和网站管理员并没有意识到或发现这些安全漏洞。由于Web应用是采用HTTP协议,普通的防火墙设备无法对Web类攻击进行防御,因此可以使用IPS入侵防御设备来实现安全防护。

    H3C IPS Web攻击防御

    H3C IPS入侵防御设备有一套完整的Web攻击防御框架,能够及时发现各种已经暴露的和潜在的Web攻击。下图为对于Web攻击的总体防御框架。

    图1:Web攻击防御框架,参见:http://blog.csdn.net/moshenglv/article/details/53439579

    H3C IPS采用基于特征识别的方式识别并阻断各种攻击。IPS设备有一个完整的特征库,并可定期以手工与自动的方式对特征库进行升级。当网络流量进入IPS后,IPS首先对报文进行预处理,检测报文是否正确,即满足协议定义要求,没有错误字段;如果报文正确,则进入深度检测引擎。该引擎是IPS检测的核心模块,对通过IPS设备的Web流量进行深层次的分析,并与IPS攻击库中的特征进行匹配,检测Web流量是否存在异常;如果发现流量匹配了攻击特征,IPS则阻断网络流量并上报日志;否则,网络流量顺利通过。

    此Web攻击防御框架有如下几个特点:

    1) 构造完整的Web攻击检测模型,准确识别各种Web攻击

    针对Web攻击的特点,考虑到各种Web攻击的原理和形态,在不同漏洞模型之上开发出通用的、层次化的Web攻击检测模型,并融合到特征库中。这些模型抽象出Web攻击的一般形态,对主流的攻击能够准确识别,使得模型通用化。

    2) 检测方式灵活,可以准确识别变形的Web攻击

    在实际攻击中,攻击者为了逃避防攻击设备的检测,经常对Web攻击进行变形,如采用URL编码技术、修改参数等。H3C根据Web应用漏洞发生的原理、攻击方式和攻击目标,对攻击特征进行了扩展。即使攻击者修改攻击参数、格式、语句等内容,相同漏洞原理下各种变形的攻击同样能够被有效阻断。这使得IPS的防御范围扩大,防御的灵活性也显著增强,极大的减少了漏报情况的出现。

    3) 确保对最新漏洞及技术的跟踪,有效阻止最新的攻击

    随着Web攻击出现的频率日益增高,其危害有逐步扩展的趋势。这对IPS设备在防御的深度和广度上提出了更高的要求,不仅要能够防御已有的Web攻击,更要有效的阻止最新出现的、未公布的攻击。目前,H3C已经建立起一套完整的攻防试验环境,可以及时发现潜在Web安全漏洞。同时还在继续跟踪最新的Web攻击技术和工具,及时更新Web攻击的特征库,第一时间发布最新的Web漏洞应对措施,确保用户的网络不受到攻击。

    4) 保证正常业务的高效运行

    检测引擎是IPS整个设备运行的关键,该引擎使用了高效、准确的检测算法,对通过设备的流量进行深层次的分析,并通过和攻击特征进行匹配,检测流量是否存在异常。如果流量没有匹配到攻击特征,则允许流量通过,不会妨碍正常的网络业务,在准确防御的同时保证了正常业务的高效运行。

    结束语

    互联网和Web技术广泛使用,使Web应用安全所面临的挑战日益严峻,Web系统时时刻刻都在遭受各种攻击的威胁,在这种情况下,需要制定一个完整的Web攻击防御解决方案,通过安全的Web应用程序、Web服务器软件、Web防攻击设备共同配合,确保整个网站的安全。任何一个简单的漏洞、疏忽都会造成整个网站受到攻击,造成巨大损失。此外 ,Web攻击防御是一个长期持续的工作,随着Web技术的发展和更新,Web攻击手段也不断发展,针对这些最新的安全威胁,需要及时调整Web安全防护策略,确保Web攻击防御的主动性,使Web网站在一个安全的环境中为企业和客户服务。

    展开全文
  • 漏洞详解

    2019-09-03 11:14:35
    漏洞的定义 官方定义:漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的下访问或破坏系统。 基本理解:漏洞是协议在生命周期的各个阶段(设计、实现、运维...

    漏洞的定义

    • 官方定义:漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的下访问或破坏系统。

    • 基本理解:漏洞是协议在生命周期的各个阶段(设计、实现、运维等过程)中产生的某类问题,这些问题会对系统的安全(机密性、完整性、可用性)产生影响。

    • BUG与漏洞 有人经常理解为BUG就是漏洞,其实它们两者之间还是有很大区别的,漏洞与Bug并不等同,他们之间的关系基本可以描述为:大部分的Bug影响功能性,并不涉及安全性,也就不构成漏洞;大部分的漏洞来源于Bug,但并不是全部,它们之间只是有一个很大的交集。

    漏洞产生原因

    漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。即某个程序(包括操作系统).在设计时未考虑周全,当程序遇到一个看似合理,但实际无法处理的问题时,引发的不可预见的错误

    它不是安装的时候的结果 也不是永久后的结果而是编程人员的人为因素,在程序编写过程,为实现不可告人的目的,在程序代码的隐蔽处保留后门,受编程人员的能力、经验和当时安全技术所限,在程序中难免会有不足之处,轻则影响程序效率,重则导致非授权用户的权限提升。

    出现频率最高的依次是: + 设计错误 + 输入验证错误 + 意外情况处理错误 + 边界条件错误 + 环境错误 + 访问验证错误

    软件漏洞的产生来源

    1. 缓冲区溢出(buffer overflows)

    缓冲区溢出是软件安全漏洞的主要来源。所谓缓冲区溢出,指的就是代码写入的数据超过了缓冲区的边界,比如向大小10KB的缓冲区写如12KB的数据,那么这个缓冲就溢出了。当然,前向溢出也算溢出,也就是写入的数据写入到了缓冲区的起始边界之前。

    缓冲区溢出是一种比较常见的编码错误,特别是在字符串处理过程中。缓冲区造成的危害也是比较多样的。比较轻微的就是程序直接崩溃,除了用户体验也没什么大损失;比较严重的就是错误的写入覆盖了其他敏感数据,造成数据的丢失;最严重的莫过于执行恶意代码,因为数据写入越界,恶意代码可以将原先正常的函数修改为自己的代码,从而获得整个软件的执行权。

    缓冲区溢出根据溢出的内存类型分为:

    • 栈溢出()

    • 栈内的数据溢出。

    • 堆溢出(heap overflow)

    • 堆内的数据溢出

    根据溢出的类型可分为overflow及underflow

    • overflow,写入的数据超过了缓冲的边界

    • underflow, 缓冲中有用数据的大小小于缓冲区长度,这有可能造成脏数据的问题

    1. 未验证输入(Unvalidated Input)

    一款应用往往需要接收各种各样的输入,针对一款iOS应用,主要的输入有读取文件,读取用户输入,读取网络传输数据,或通过URL被启动(URL Schema)。各种类型的输入都有可能是非法的,甚至是恶意的,所以针对所有类型的输入,应用都要进行检验,确保输入的数据是符合程序要求的,合理的,合法的数据。

    非法输入可能造成的危害主要有:

    • 输入的数据大于接收缓冲,会造成缓冲溢出

    • 格式化字符串注入,对这些字符串进行处理时,如果不小心会造成程序的崩溃,或某些敏感数据被篡改

    • URLSchema中的命令为恶意命令,执行了恶意的命令

    • 代码注入,输入的URL或命令中带有脚本、代码等恶意片段

    1. 竞争条件(Race Condtions)

    如果一个任务的完成需要几个特定的子任务以特定的顺序完成来完成,那么这个任务就是存在竞争条件这个漏洞的。黑客可以通过修改事件完成的顺序来改变应用的行为。

    竞争条件类型的漏洞主要有以下两种:

    • Time of Check Versus Time of Use (TOCTOU)

    应用运行的过程中,在某个操作之前,比如写文件,都会检查一下文件是否存在,在检查与真正的写入之间的间隔就是一个可以被利用的Race Condition,恶意软件可以将用户检查的文件替换成自己的文件,这样数据就泄露了。

    • Signal Handling

    处理信号的过程中,是随时可以被另一个信号的处理打断的,如果在处理一个信号的过程中另一个信号到来,那么这个过程会被马上中断,这样,系统就会处于一种未知的状态。

    1. 进程间通信(Interprocess Communication)

    进程间通信采用的方法很多,共享内存,管道,油槽等,由于通信管道两端的应用的不同,那么,有可能存在这钟管道被恶意利用的肯能性,也就是说,进程间通信也是软件漏洞的一个来源,当与另一个应用通信的时候,要默认此应用是不安全的,要对通信的内容进行安全方面的验证。

    1. 不安全的文件操作(Insecure File Operation)

    应用对文件进行处理时,若果没有进行进行有效的验证,那么有可能处理的文件已经是被恶意软件修改过的,是不安全的。所以,进行有效的验证是安全处理文件的重要保证。不安全文件操作类型有以几种:

    读取或写入一个位于其他应用也拥有读写权限路径下的文件。

    对文件信息,例如权限等信息没有进行有效验证便进行处理。

    对文件操作的返回结果没有进行有效利用

    假定一个拥有本地文件名的文件就是真正的本地文件。

    1. 权限控制问题(Access Control)

    很多情况下,权限控制是安全机制保证的核心,同时也是漏洞的主要来源。每个应用都有与其匹配的权限,应用申请的权限应该物尽其用,不能申请超过自身需求的权限,而很多的软件漏洞就是因为应用申请了超过自身需求的权限,比如root权限,然后被恶意软件利用,也就有了对整个系统执行所有操作的权限。

    很多情况下,对权限的申请进行验证是明智的选择,例如输入用户名及密码来提升权限。注意,在采用验证机制时,最好使用系统内置的权限验证方法,而不是自己取实现,这里需要额外提一下,权限控制是操作系统级别的,当硬件设备被控制时,各种权限的控制也就显得无力,这种情况下,数据的加密保护就显现出了其价值。

    1. 社会工程(Social Engineering)

    用户往往是安全保证机制中那薄弱的一环。即使提供再强大的安全保全机制,如果用户安全意识薄弱,同样会出现问题。很简单的例子,比如用户将密码设置的非常复杂,服务器端数据库的安全保证也很周全,黑客完全无法通过技术手段窃取用户密码,可黑客一个伪装客服的电话就完全有可能将用户的密码从用户的口中骗取到。这就是所谓的”社会工程”. 在界面,使用习惯上教育,引导用户进行安全的操作,也是软件设计的重中之重。

    漏洞的基本分类

    按照漏洞的形成原因,漏洞大体上可以分为程序逻辑结构漏洞、程序设计错误漏洞、开放式协议造成的漏洞和人为因素造成的漏洞。

    按照漏洞被人掌握的情况,漏洞又可以分为已知漏洞、未知漏洞和0day等几种类型。

    1. 程序逻辑结构漏洞

    这种类型的漏洞有可能是编程人员在编写程序时,因为程序的逻辑设计不合理或者错误而造成的程序逻辑漏洞。这种类型的漏洞最典型的要数微软的Windows 2000用户登录的中文输入法漏洞。非授权人员可以通过登录界面的输入法的帮助文件绕过Windows的用户名和密码验证而取的计算机的最高权限。

    这种类型的漏洞也有可能是合法的程序用途被黑客利用去做不正当的用途。这种类型的漏洞最典型的就是后面案例中提到的Winrar的自解压功能,程序设计者的本意是为了方便用户的使用,使得没有安装Winrar的用户也可以解压经过这种方式压缩的文件。但是这种功能被黑客用到了不正当的用途上。

    这种漏洞用一个比喻可能更容易理解。打一个比方来说,你开了一扇门,在门上开了一个狗洞,专门为了狗方便出入。正常情况下,人应该用钥匙打开锁才能进来。可是有个家伙他发现利用某个窍门人也可以从狗洞进出,那么这个从狗洞进出的方法就可以看着是一个安全漏洞。

    1. 程序设计错误漏洞

    还有一种类型的漏洞是编程人员在编写程序时由于技术上的疏忽造成的漏洞。这种类型的漏洞最典型的是缓冲区溢出漏洞,它也是被黑客利用得最多的一种类型的漏洞。下面的章节我们会详细介绍这种缓冲区溢出漏洞。

    1. 开放式协议造成的漏洞

    目前,国际互联网的通信采用的是具有开放性的TCP/IP协议。因为TCP/IP协议的最初设计者在设计该通信协议时,只考虑到了协议的实用性,而没有考虑到协议的安全性,所以在TCP/IP协议中存在着很多漏洞。比如说,利用TCP/IP协议的开放和透明性嗅探网络数据包,窃取数据包里面的用户口令和密码信息;TCP协议三次握手的潜在缺陷所导致的拒绝服务攻击等。在下面的章节中会介绍一些利用TCP/IP协议的漏洞进行攻击的一些案例。

    1. 人为因素造成的漏洞

    一个系统如果本身设计得很完善,安全性也很高,但管理人员安全意识淡薄,同样的会给系统留下漏洞。譬如说,系统本身非常完备安全,但系统登录所需要的管理 员帐户或口令,可是因为设置过于得简单而被黑客猜解出来了,那么其他的环节再安全也没有丝毫意义;再或者虽然管理员设置了很复杂的密码,可是他把密码写在 一张纸上,并随手扔到废纸篓里,那么也同样有可能造成密码泄露而导致系统被黑客入侵。

    1. 已知漏洞

    已知漏洞是指已经被人们发现,并被人们广为传播的公开漏洞。这种类型的特点是漏洞形成的原因和利用方法已经被众多的安全组织、黑客和黑客组织所掌握。安全 组织或厂商按照公布的漏洞形成原因和利用方法,在他们的安全防护产品中或安全服务项目加入针对相应类型漏洞的防护方法。黑客和黑客组织利用公布的漏洞形成 原因,写出专门的具有针对性的漏洞利用程序文件,并能绕过安全防护软件。比如说针对某个IE浏览器版本的IE漏洞利用文件,或者他们干脆利用一些漏洞公布站点上提供的漏洞利用程序文件并不加任何修改地去攻击互联网上的计算机。

    产生漏洞的软件的开发商则会针对被公开的漏洞的信息,修补他们开发的程序以供他们的用户修补已经存在漏洞的软件。

    1. 未知漏洞

    未知的漏洞则是指那些已经存在但还没有被人发现的漏洞,这种类型漏洞的特征是虽然它们没有被发现,但它们在客观上已经存在了,它们带给计算机网络安全的是隐蔽的威胁。如果它们哪一天被黑客有意或无意的找出来后就会对计算机网络安全构成巨大的威胁。

    所以软件开发商、安全组织、黑客和黑客组织都在努力的发现漏洞,可以说谁先发现了漏洞,谁就可以掌握主动权。如果是软件开发商和安全组织先发现了漏洞,他们就可以在安全防护上取得主动权;如果是黑客或黑客组织先发现了漏洞,他们就可以在攻击上取得主动权。

    1. 0day漏洞

    所谓0day漏 洞是指已经被发掘出来,但还没有大范围传播开的漏洞,也就是说,这种类型的漏洞有可能掌握在极少数人的手里。黑客有可能在这种类型的漏洞的信息还没有大范 围的传播开的时候,利用这段时间差攻击他们想要攻击的目标机器,因为绝大多数用户还没有获取到相关的漏洞信息,也无从防御,黑客要想得手还是很容易的

    漏洞挖掘分析技术

    由于种种原因,漏洞的存在不可避免,一旦某些较严重的漏洞被攻击者发现,就有可能被其利用,在未授权的情况下访问或破坏计算机系统。先于攻击者发现并及时修补漏洞可有效减少来自网络的威胁。因此主动发掘并分析系统安全漏洞,对网络攻防战具有重要的意义。漏洞的研究主要分为漏洞挖掘与漏洞分析两部分。漏洞挖掘技术是指对未知漏洞的探索,综合应用各种技术和工具,尽可能地找出软件中的潜在漏洞;漏洞分析技术是指对已发现漏洞的细节进行深入分析,为漏洞利用、补救等处理措施作铺垫。

    1. 现有漏洞挖掘技术分类

    根据分析对象的不同,漏洞挖掘技术可以分为基于源码的漏洞挖掘技术和基于目标代码的漏洞挖掘技术两大类。基于源码的漏洞挖掘的前提是必须能获取源代码,对于一些开源项目,通过分析其公布的源代码,就可能找到存在的漏洞。例如对Linux系统的漏洞挖掘就可采用这种方法。但大多数的商业软件其源码很难获得,不能从源码的角度进行漏洞挖掘,只能采用基于目标代码的漏洞挖掘技术。对目标码进行分析涉及编译器、指令系统、可执行文件格式等多方面的知识,难度较大。基于目标代码的漏洞挖掘首先将要分析的二进制目标代码反汇编,得到汇编代码;然后对汇编代码进行切片,即对某些上下文关联密切、有意义的代码进行汇聚,降低其复杂性;最后通过分析功能模块,来判断是否存在漏洞。漏洞挖掘技术从逆向分析的软件测试角度,又可分为白箱分析、黑箱分析和灰箱分析三类

    1. 常见的漏洞挖掘分析技术

    漏洞挖掘是一个多种漏洞挖掘分析技术相互结合、共同使用和优势互补的过程。目前漏洞挖掘分析技术有多种,主要包括手工测试技术(manual testing)、Fuzzing技术、比对和二进制比对技术(Diff and BinDiff)、静态分析技术(static analysis)、动态分析技术(runtime analysis)等。

    2.1. 人工分析

    人工分析是一种灰盒分析技术。针对被分析目标程序,手工构造特殊输入条件,观察输出、目标状态变化等,获得漏洞的分析技术。输入包括有效的和无效的输入,输出包括正常输出和非正常输出。非正常输出是漏洞出现的前提,或者就是目标程序的漏洞。非正常目标状态的变化也是发现漏洞的预兆,是深入挖掘的方向。人工分析高度依赖于分析人员的经验和技巧。人工分析多用于有人机交互界面的目标程序,Web漏洞挖掘中多使用人工分析的方法。

    2.2.Fuzzing技术

    Fuzzing技术是一种基于缺陷注入的自动软件测试技术,它利用黑盒分析技术方法,使用大量半有效的数据作为应用程序的输入,以程序是否出现异常为标志,来发现应用程序中可能存在的安全漏洞。半有效数据是指被测目标程序的必要标识部分和大部分数据是有效的,有意构造的数据部分是无效的,应用程序在处理该数据时就有可能发生错误,可能导致应用程序的崩溃或者触发相应的安全漏洞。根据分析目标的特点,Fuzzing可以分为三类:

    1). 动态Web页面Fuzzing,针对ASP、PHP、Java、Perl等编写的网页程序,也包括使用这类技术构建的B/S架构应用程序,典型应用软件为HTTP Fuzz;

    2). 文件格式Fuzzing,针对各种文档格式,典型应用软件为PDF Fuzz;

    3). 协议Fuzzing,针对网络协议,典型应用软件为针对微软RPC(远程过程调用)的Fuzz。Fuzzer软件输入的构造方法与黑盒测试软件的构造相似,边界值、字符串、文件头、文件尾的附加字符串等均可以作为基本的构造条件。Fuzzer软件可以用于检测多种安全漏洞,包括缓冲区溢出漏洞、整型溢出漏洞、格式化字符串和特殊字符漏洞、竞争条件和死锁漏洞、SQL注入、跨站脚本、RPC漏洞攻击、文件系统攻击、信息泄露等。与其它技术相比,Fuzzing技术具有思想简单,容易理解、从发现漏洞到漏洞重现容易、不存在误报的优点。同时它也存在黑盒分析的全部缺点,而且具有不通用、构造测试周期长等问题。常用的Fuzzer软件包括SPIKE Proxy、Peach Fuzzer Framework、Acunetix Web Vulnerability Scanner的HTTP Fuzzer、OWASP JBroFuzz、WebScarab等。

    2.3. 补丁比对技术

    补丁比对技术主要用于黑客或竞争对手找出软件发布者已修正但未尚公开的漏洞,是黑客利用漏洞前经常使用的技术手段。

    安全公告或补丁发布说明书中一般不指明漏洞的准确位置和原因,黑客很难仅根据该声明利用漏洞。黑客可以通过比较打补丁前后的二进制文件,确定漏洞的位置,再结合其他漏洞挖掘技术,即可了解漏洞的细节,最后可以得到漏洞利用的攻击代码。简单的比较方法有二进制字节和字符串比较、对目标程序逆向工程后的比较两种。

    第一种方法适用于补丁前后有少量变化的比较,常用的于字符串变化、边界值变化等导致漏洞的分析。

    第二种方法适用于程序可被反编译,且可根据反编译找到函数参数变化导致漏洞的分析。这两种方法都不适合文件修改较多的情况。复杂的比较方法有Tobb Sabin提出的基于指令相似性的图形化比较和Halvar Flake提出的结构化二进制比较,可以发现文件中一些非结构化的变化,如缓冲区大小的改变,且以图形化的方式进行显示。

    常用的补丁比对工具有Beyond Compare、IDACompare、Binary Diffing Suite(EBDS)、BinDiff、NIPC Binary Differ(NBD)。此外大量的高级文字编辑工具也有相似的功能,如Ultra Edit、HexEdit等。这些补丁比对工具软件基于字符串比较或二进制比较技术。

    2.4.静态分析技术静态分析技术是对被分析目标的源程序进行分析检测,发现程序中存在的安全漏洞或隐患,是一种典型的白盒分析技术。它的方法主要包括静态字符串搜索、上下文搜索。静态分析过程主要是找到不正确的函数调用及返回状态,特别是可能未进行边界检查或边界检查不正确的函数调用,可能造成缓冲区溢出的函数、外部调用函数、共享内存函数以及函数指针等。对开放源代码的程序,通过检测程序中不符合安全规则的文件结构、命名规则、函数、堆栈指针可以发现程序中存在的安全缺陷。被分析目标没有附带源程序时,就需要对程序进行逆向工程,获取类似于源代码的逆向工程代码,然后再进行搜索。使用与源代码相似的方法,也可以发现程序中的漏洞,这类静态分析方法叫做反汇编扫描。由于采用了底层的汇编语言进行漏洞分析,在理论上可以发现所有计算机可运行的漏洞,对于不公开源代码的程序来说往往是最有效的发现安全漏洞的办法。但这种方法也存在很大的局限性,不断扩充的特征库或词典将造成检测的结果集大、误报率高;同时此方法重点是分析代码的”特征”,而不关心程序的功能,不会有针对功能及程序结构的分析检查。

    2.5. 动态分析技术

    动态分析技术起源于软件调试技术,是用调试器作为动态分析工具,但不同于软件调试技术的是它往往处理的是没有源代码的被分析程序,或是被逆向工程过的被分析程序。动态分析需要在调试器中运行目标程序,通过观察执行过程中程序的运行状态、内存使用状况以及寄存器的值等以发现漏洞。一般分析过程分为代码流分析和数据流分析。代码流分析主要是通过设置断点动态跟踪目标程序代码流,以检测有缺陷的函数调用及其参数。数据流分析是通过构造特殊数据触发潜在错误。比较特殊的,在动态分析过程中可以采用动态代码替换技术,破坏程序运行流程、替换函数入口、函数参数,相当于构造半有效数据,从而找到隐藏在系统中的缺陷。常见的动态分析工具有SoftIce、OllyDbg、WinDbg等。

    漏洞挖掘分析实例

    1、使用Acunetix Web Vulnerability Scanner软件进行漏洞挖掘: 漏洞的“定义、趋势、产生、分类、挖掘和分析技术详解”

    该软件提供了一些预定义好的Fuzz运算参数库,可以便于初学者上手,也可以方便分析者使用。过程如下:

    1)定义HTTP请求(Request),即定义所需访问的网页URL;

    2)定义运算参数(Add generator),即定义可能产生漏洞的字符串表达式,如:查找$password、$passwd、$token;

    3)插入运算参数(Insert into request),即将定义好的多条运算参数绑定为一条搜索策略;4)定义成功触发特征(Fuzzer Filters),将运算参数与HTTP请求绑定;

    5)扫描(Start);

    6)等待软件返回匹配的项,这些项就是可能的漏洞。经过以上步骤,一个网页中可能存在的漏洞就被发现了。

    2、使用补丁比对技术找到漏洞的例子:

    微软发布的MS08-067的补丁,该问题被列为严重。该安全更新解决了服务器服务中一个秘密报告的漏洞。如果用户在受影响的系统上收到特制的RPC请求,则该漏洞可能允许远程执行代码。漏洞挖掘过程为例说明补丁对比技术的应用。首先保留一份原始文件,然后安装新的补丁程序,提取出相同和新加入的文件后,就可以使用软件进行对比。 漏洞的“定义、趋势、产生、分类、挖掘和分析技术详解”

    经过对比后发现被修改的3个函数

    对比软件列出了三个函数名称,分别为0.25、0.67和0.94并列出补丁前后的相似程度。通过对比结果,可以针对性构造参数,观察补丁前后的行为,最终发现在给出的这三个函数中,有两个是和漏洞直接相关的。

    展开全文
  • 安全漏洞概念及分类

    万次阅读 2016-10-12 16:50:58
    本文是一个安全漏洞相关的科普,介绍安全漏洞的概念认识,漏洞在几个维度上的分类及实例展示。 安全漏洞及相关的概念 本节介绍什么是安全漏洞及相关的概况。 安全漏洞的定义 我们经常听到漏洞这个概念,可...
    本文是一个安全漏洞相关的科普,介绍安全漏洞的概念认识,漏洞在几个维度上的分类及实例展示。

    安全漏洞及相关的概念

    本节介绍什么是安全漏洞及相关的概况。

    安全漏洞的定义

    我们经常听到漏洞这个概念,可什么是安全漏洞?想给它一个清晰完整的定义其实是非常困难的。如果你去搜索一下对于漏洞的定义,基本上会发现高大上的学术界和讲求实用的工业界各有各的说法,漏洞相关的各种角色,比如研究者、厂商、用户,对漏洞的认识也是非常不一致的。  
    从业多年,我至今都找不到一个满意的定义,于是我自己定义一个:  

    安全漏洞是信息系统在生命周期的各个阶段(设计、实现、运维等过程)中产生的某类问题,这些问题会对系统的安全(机密性、完整性、可用性)产生影响。

    这是一个从研究者角度的偏狭义的定义,影响的主体范围限定在了信息系统中,以尽量不把我们所不熟悉的对象扯进来。

    漏洞之所以被描述为某种”问题”,是因为我发现无法简单地用脆弱性、缺陷和Bug等概念来涵盖它,而更象是这些概念的一个超集。    
    漏洞会在系统生命周期内的各个阶段被引入进来,比如设计阶段引入的一个设计得非常容易被破解加密算法,实现阶段引入的一个代码缓冲区溢出问题,运维阶段的一个错误的安全配置,这些都有可能最终成为漏洞。     
    定义对安全的影响也只涉及狭义信息安全的三方面:机密性、完整性和可用性。漏洞造成的敏感信息泄露导致机密性的破坏;造成数据库中的信息被非法篡改导致完整性的破坏;造成服务器进程的崩溃导致可用性的丧失。漏洞也可能同时导致多个安全属性的破坏。

    安全漏洞与Bug的关系

    漏洞与Bug并不等同,他们之间的关系基本可以描述为:大部分的Bug影响功能性,并不涉及安全性,也就不构成漏洞;大部分的漏洞来源于Bug,但并不是全部,它们之间只是有一个很大的交集。可以用如下这个图来展示它们的关系

    安全漏洞概念及分类

    已知漏洞的数量

    各个漏洞数据库和索引收录了大量已知的安全漏洞,下表是一个主流漏洞库的数量的大致估计,漏洞一般最早从20世纪90年代开始:

    漏洞条目库

    特点

    数量 URL
    SecurityFocus 全揭露,带POC >60000 http://www.securityfocus.com/bid/
    OSVDB 数量最大,索引丰富 >100000 http://www.osvdb.org/
    Secunia 产品分类细 >58000 http://secunia.com/community/advisories/
    ISS XForce 描述信息专业 >90000 http://xforce.iss.net/
    CVE 最全的索引 >60000 http://cve.mitre.org/cve/cve.html
    CNVD 国内的中文数据库 >60000 http://www.cnvd.org.cn/flaw/list.htm

    事实上,即便把未知的漏洞排除在外,只要订了若干漏洞相关的邮件列表就会知道:并不是所有漏洞数据库都会收录,就算把上面的所列的数据库中的所有条目加起来去重以后也只是收录了一部分的已知漏洞而已,实际的已知漏洞数比总收录的要高得多。

    安全漏洞的分类

    和其他事物一样,安全漏洞具有多方面的属性,也就可以从多个维度对其进行分类,重点关注基于技术的维度。注意,下面提到的所有分类并不是在数学意义上严格的,也就是说并不保证同一抽象层次、穷举和互斥,而是极其简化的出于实用为目的分类。

    基于利用位置的分类

    本地漏洞

    需要操作系统级的有效帐号登录到本地才能利用的漏洞,主要构成为权限提升类漏洞,即把自身的执行权限从普通用户级别提升到管理员级别。

    实例:

    Linux Kernel 2.6 udev Netlink消息验证本地权限提升漏洞( CVE-2009-1185 )

    攻击者需要以普通用户登录到系统上,通过利用漏洞把自己的权限提升到root用户,获取对系统的完全控制。

    远程漏洞

    无需系统级的帐号验证即可通过网络访问目标进行利用,这里强调的是系统级帐号,如果漏洞利用需要诸如FTP用户这样应用级的帐号要求也算是远程漏洞。   
    实例:

    -  Microsoft Windows DCOM RPC接口长主机名远程缓冲区溢出漏洞(MS03-026)(CVE-2003-0352)   
    攻击者可以远程通过访问目标服务器的RPC服务端口无需用户验证就能利用漏洞,以系统权限执行任意指令,实现对系统的完全控制。 

    基于威胁类型的分类

    获取控制

    可以导致劫持程序执行流程,转向执行攻击者指定的任意指令或命令,控制应用系统或操作系统。威胁最大,同时影响系统的机密性、完整性,甚至在需要的时候可以影响可用性。   
    主要来源:内存破坏类、CGI类漏洞

    获取信息

    可以导致劫持程序访问预期外的资源并泄露给攻击者,影响系统的机密性。   
    主要来源:输入验证类、配置错误类漏洞

    拒绝服务

    可以导致目标应用或系统暂时或永远性地失去响应正常服务的能力,影响系统的可用性。   
    主要来源:内存破坏类、意外处理错误处理类漏洞。  

    基于技术类型的分类   

    基于漏洞成因技术的分类相比上述的两种维度要复杂得多,对于目前我所见过的漏洞大致归纳为以下几类:

    - 内存破坏类
    - 逻辑错误类
    - 输入验证类
    - 设计错误类
    - 配置错误类

    以下是对这几类漏洞的描述和实例分析。

    内存破坏类

    此类漏洞的共同特征是由于某种形式的非预期的内存越界访问(读、写或兼而有之),可控程度较好的情况下可执行攻击者指定的任意指令,其他的大多数情况下会导致拒绝服务或信息泄露。   
    对内存破坏类漏洞再细分下来源,可以分出如下这些子类型:

    - 栈缓冲区溢出
    - 堆缓冲区溢出
    - 静态数据区溢出
    - 格式串问题
    - 越界内存访问
    - 释放后重用
    - 二次释放
    栈缓冲区溢出

    最古老的内存破坏类型。发生在堆栈中的缓冲区溢出,由于利用起来非常稳定,大多可以导致执行任意指令,威胁很大。此类漏洞历史非常悠久, 1988年著名的Morris蠕虫传播手段之一就是利用了finger服务的一个栈缓冲区溢出漏洞。在2008年之前的几乎所有影响面巨大的网络蠕虫也基本利用此类漏洞,汇总情况可以见下表: 

    蠕虫 中文名号 MS 公告号  CVE ID 漏洞名
    Slammer 蠕虫王 MS02-056 CVE-2002-1123 Microsoft SQL Server预验证过程远程缓冲区溢出漏洞
    MSBlast 冲击波 MS03-026 CVE-2003-0352 Microsoft Windows DCOM RPC接口长主机名远程缓冲区溢出漏洞
    Sasser 震荡波 MS04-011 CVE-2003-0533 Microsoft Windows LSASS远程缓冲区溢出漏洞
    Conficker 飞客蠕虫 MS08-067 CVE-2008-4250 Microsoft Windows Server服务RPC请求缓冲区溢出漏洞

    上面表格里列出的蠕虫即使经过多年,在当前的互联网上还经常被捕捉到。   栈溢出漏洞是相对比较容易发现的漏洞,静态动态分析的方法对于此漏洞的挖掘已经相当成熟,因此这类漏洞,特别是服务端程序中,目前基本处于日渐消亡的状态。   实例:
    - 暴风影音stormtray进程远程栈缓冲区溢出漏洞
    长度检查不充分的串连接操作。

    安全漏洞概念及分类

    - Sun Solaris snoop(1M)工具远程指令执行漏洞( CVE-2008-0964 )

    无长度检查的*printf调用。

    安全漏洞概念及分类

    frameborder="0" allowtransparency="true" scrolling="no" vspace="0" hspace="0" style="position: static; display: block; padding: 0px; margin: 0px; border-style: none; vertical-align: baseline; width: 341px; height: 74px;">

    - Novell eDirectory HTTPSTK Web服务器栈溢出漏洞

    无长度检查的memcpy调用。

    安全漏洞概念及分类

    frameborder="0" allowtransparency="true" scrolling="no" vspace="0" hspace="0" style="position: static; display: block; padding: 0px; margin: 0px; border-style: none; vertical-align: baseline; width: 342px; height: 74px;">

    - FlashGet FTP PWD命令超长响应栈溢出漏洞

    安全漏洞概念及分类

    - Imatix Xitami If-Modified-Since头远程栈溢出漏洞。

    极其危险的sscanf类调用。

    安全漏洞概念及分类

    - Borland StarTeam Multicast服务用户请求解析远程栈溢出漏洞( CVE-2008-0311 )

    安全漏洞概念及分类

    - Microsoft DirectShow MPEG2TuneRequest 溢出漏洞( CVE-2008-0015 )

    手抖,缓冲区的指针被当做缓冲区本身被数据覆盖溢出。

    安全漏洞概念及分类

    堆缓冲区溢出

    导致堆缓冲区溢出的来源与栈溢出的一致,基本都是因为一些长度检查不充分的数据操作,唯一不同的地方只是发生问题的对象不是在编译阶段就已经确定分配的栈缓冲区,而是随着程序执行动态分配的堆块。   
    实例:
    - HP OpenView NNM Accept-Language HTTP头堆溢出漏洞( CVE-2009-0921)
    典型的先分配后使用的堆溢出问题。

    安全漏洞概念及分类

    PHP (phar extension)堆溢出漏洞

    堆溢出特有的溢出样式:由于整数溢出引发Malloc小缓冲区从而最终导致堆溢出。

    安全漏洞概念及分类

    静态数据区溢出

    发生在静态数据区BSS段中的溢出,非常少见的溢出类型。

    实例:

    - Symantec pcAnyWhere awhost32远程代码执行漏洞(CVE-2011-3478)

    安全漏洞概念及分类

    格式串问题

    在*printf类调用中由于没有正确使用格式串参数,使攻击者可以控制格式串的内容操纵*printf调用越界访问内存。此类漏洞通过静态或动态的分析方法可以相对容易地被挖掘出来,因此目前已经很少能够在使用广泛的软件中看到了。

    实例:

    - Qualcomm Qpopper 2.53格式串处理远程溢出漏洞(CVE-2000-0442)

    安全漏洞概念及分类

    想了解更多格式串漏洞的原理和利用,可以参考warning3在很早之前写的文档:

    *printf()格式化串安全漏洞分析 http://www.nsfocus.net/index.php?act=magazine&do=view&mid=533http://www.nsfocus.net/index.php?act=magazine&do=view&mid=534<喎�"/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxoNj4NCgk8c3Ryb25nPtS9vefE2rTmt8POyjwvc3Ryb25nPjwvaDY+DQo8cD6zzNDyw6TEv9DFyM7AtNfUzajQxbbUt720q7XdtcTK/b7do6yyotLUtMvX986qxNq05rfDzsq1xMv30v2jrLv70M61xMr91rW1vNbC1L2957XExNq05rfDzsqjrNTss8nE2rTmxsa7tbvy0MXPotC5wrahoyZuYnNwOyAmbmJzcDs8YnIgLz4NCsq1wP2jujxiciAvPg0KLSBPcGVuU1NMIFRMU9DEzPjAqdW50K3S6bD81LazzNDFz6LQucK2wqm2tCAoQ1ZFLTIwMTQtMDE2MCk8YnIgLz4NCsKptrTKx9PJ09q9+LPMsru807zssum12Mq508PNqNDFttS2y8zhuam1xMr9vt3H+LOktsjWtaOssLTWuLaotcSzpLbItsHIocTatOa3tbvYo6y1vNbC1L2957fDzsq1vbTzv+m1xNSkxtrS1M3itcTE2rTmyv2+3bKit7W72KOs0LnCtrD8wKjTw7unw/uhor/awe6holNlc3Npb25JRMn11sHKx8u91L+1yNTaxNq1xMP0uNDQxc+ioaM8L3A+DQo8cD48aW1nIGFsdD0="安全漏洞概念及分类" src="/uploadfile/2014/0508/20140508110216384.png" style="display: block;" />

    释放后重用

    这是目前最主流最具威胁的客户端(特别是浏览器)漏洞类型,大多数被发现的利用0day漏洞进行的水坑攻击也几乎都是这种类型,每个月各大浏览器厂商都在修复大量的此类漏洞。技术上说,此类漏洞大多来源于对象的引用计数操作不平衡,导致对象被非预期地释放后重用,进程在后续操作那些已经被污染的对象时执行攻击者的指令。与上述几类内存破坏类漏洞的不同之处在于,此类漏洞的触发基于对象的操作异常,而非基于数据的畸形异常(通常是不是符合协议要求的超长或畸形字段值),一般基于协议合规性的异常检测不再能起作用,检测上构成极大的挑战。   
    实例:
    - Microsoft IE非法事件操作内存破坏漏洞(CVE-2010-0249)
    著名的Aurora攻击,涉嫌入侵包括Google在内的许多大互联网公司的行动,就使用了这个CVE-2010-0249这个典型的释放后重用漏洞。

    安全漏洞概念及分类

    二次释放

    一般来源于代码中涉及内存使用和释放的操作逻辑,导致同一个堆缓冲区可以被反复地释放,最终导致的后果与操作系统堆管理的实现方式相关,很可能实现执行任意指令。

    实例:

    - CVS远程非法目录请求导致堆破坏漏洞( CVE-2003-0015)

    安全漏洞概念及分类

    逻辑错误类

    涉及安全检查的实现逻辑上存在的问题,导致设计的安全机制被绕过。

    实例:

    - Real VNC 4.1.1验证绕过漏洞( CVE-2006-2369 )

    漏洞允许客户端指定服务端并不声明支持的验证类型,服务端的验证交互代码存在逻辑问题。

    安全漏洞概念及分类

    安全漏洞概念及分类

    Android应用内购买验证绕过漏洞

    Google Play的应用内购买机制的实现上存在的漏洞,在用户在Android应用内购买某些数字资产时会从Play 市场获取是否已经付费的验证数据,对这块数据的解析验证的代码存在逻辑问题,导致攻击者可以绕过验证不用真的付费就能买到东西。验证相关的代码如下:

    安全漏洞概念及分类

    代码会先检查回来的数据签名是否为空,不空的话检查签名是否正确,如果不对返回失败。问题在于如果签名是空的话并没有对应的else逻辑分支来处理,会直接执行最下面的return true操作,导致的结果是只要返回的消息中签名为空就会返回验证通过。

    输入验证类

    漏洞来源都是由于对来自用户输入没有做充分的检查过滤就用于后续操作,绝大部分的CGI漏洞属于此类。所能导致的后果,经常看到且威胁较大的有以下几类:  

    - SQL注入
    - 跨站脚本执行
    - 远程或本地文件包含
    - 命令注入
    - 目录遍历
    SQL注入

    Web应用对来自用户的输入数据未做充分检查过滤,就用于构造访问后台数据库的SQL命令,导致执行非预期的SQL操作,最终导致数据泄露或数据库破坏。   
    实例:
    - 一个网站Web应用的数值参数的SQL注入漏洞。

    安全漏洞概念及分类

    跨站脚本执行(XSS)

    Web应用对来自用户的输入数据未做充分检查过滤,用于构造返回给用户浏览器的回应数据,导致在用户浏览器中执行任意脚本代码。   
    实例: YouTube上的一个存储式XSS漏洞。

    安全漏洞概念及分类

    远程或本地文件包含

    安全漏洞概念及分类安全漏洞概念及分类

    如果Web应用支持在URL参数中指定服务器上的一个文件执行一些处理,对来自客户端URL数据及本地资源的访问许可如果未做充分的检查,攻击者可能通过简单的目录遍历串使应用把Web主目录以外的系统目录下的文件包含进来,很可能导致信息泄露。   
    实例:
    - 一个网站存在的本地文件包含的漏洞

    安全漏洞概念及分类

    命令注入

    涉及系统命令调用和执行的函数在接收用户的参数输入时未做检查过滤,或者攻击者可以通过编码及其他替换手段绕过安全限制注入命令串,导致执行攻击指定的命令。   实例:
    - AWStats 6.1及以下版本configdir变量远程执行命令漏洞( CVE-2005-0116 )
    典型的由于Perl语言对文件名特性的支持加入未充分检查用户输入的问题,导致的命令注入漏洞,awstats.pl的1082行:if (open(CONFIG,”$searchdir$PROG.$SiteConfig.conf”)) 。

    安全漏洞概念及分类

    目录遍历

    涉及系统用于生成访问文件路径用户输入数据时未做检查过滤,并且对最终的文件绝对路径的合法性检查存在问题,导致访问允许位置以外的文件。多见于CGI类应用,其他服务类型也可能存在此类漏洞。

    实例:

    -  Novell Sentinel Log Manager “filename”参数目录遍历漏洞( CVE-2011-5028 )

    http://www.example.com/novelllogmanager/FileDownload?filename=/opt/novell/sentinel_log_mgr/3rdparty/tomcat/temp/../../../../../../etc/passwd

    -  HP Data Protector Media Operations DBServer.exe目录遍历漏洞

    在HP Data protecetor Media Operations的客户端连接服务端时,通过私访有的通信协议,客户端会首先检查[系统分区]:/Documents and Settings/[用户名]/Application Data下面是否有相应的资源(如插件等),如果没有,则会向服务器请求需要的文件,服务器没有验证请求的文件名的合法性,而且这个过程不需要任何验证,攻击者精心构造文件名,可以读取服务端安装目录所在分区的任意文件。

    安全漏洞概念及分类

    - RHINOSOFT SERV-U FTP SERVER远程目录遍历漏洞

    安全漏洞概念及分类

    Caucho Resin远程目录遍历漏洞

    安全漏洞概念及分类

    设计错误类

    系统设计上对安全机制的考虑不足导致的在设计阶段就已经引入的安全漏洞。

    实例:

    -  LM HASH算法脆弱性

    安全漏洞概念及分类

    这个算法至少存在以下3方面的弱点:

    1、口令转换为大写极大地缩小了密钥空间。
    2、切分出的两组数据分别是独立加密的,暴力破解时可以完全独立并行。
    3、不足7字节的口令加密后得到的结果后半部分都是一样的固定串,由此很容易判定口令长度。

    这些算法上的弱点导致攻击者得到口令HASH后可以非常容易地暴力猜测出等价的明文口令。

     -   Microsoft Windows图形渲染引擎WMF格式代码执行漏洞(MS06-001) (CVE-2005-4560)

        如果一个WMF文件的StandardMetaRecord中,Function 被设置为 META_ESCAPE而Parameters[0] 等于SETABORTPROC,PlayMetaFileRecord()就会调用Escape()函数,Escape()调用SetAbortProc()将自己的第四形参设置为一个回调函数,把图像文件中包含的一个数据块象Shellcode那样执行。此漏洞从Windows 3.1一直影响到2003,攻击者只要让用户处理恶意的WMF文件(通过挂马或邮件)在用户系统上执行任意指令,漏洞实在是太好用影响面太大了,以至有人认为这是一个故意留的后门,其实影响设计的功能是处理打印任务的取消,功能已经被废弃,但废弃的代码并没有移除而导致问题。

      – 搜狐邮箱密码找回功能

        密码找回功能在要求用户提供找回密码需要的问题答案时,在返回给用户的页面中就已经包含了答案,只要通过查看页面源码就能看到,使这个找回密码功能的安全验证完全形同虚设,攻击者由此可以控制任意邮箱。之所以这么设计,可能就是为了尽可能地少对数据库的查询,而把用户帐号安全根本不放在心上。

    安全漏洞概念及分类

      – 紫光输入法用户验证绕过漏洞

    这是类似于2000年微软输入法漏洞的例子,通过访问输入法设置的某些功能绕过操作系统的用户验证执行某些操作。

    安全漏洞概念及分类

    配置错误类

    系统运维过程中默认不安全的配置状态,大多涉及访问验证的方面。

    实例:

      – JBoss企业应用平台非授权访问漏洞( CVE-2010-0738 )

    对控制台访问接口的访问控制默认配置只禁止了HTTP的两个主要请求方法GET和POST,事实上HTTP还支持其他的访问方法,比如HEAD,虽然无法得到的请求返回的结果,但是提交的命令还是可以正常执行的。

    安全漏洞概念及分类

    展开全文
  • web渗透测试

    千人学习 2019-06-25 11:35:51
    Web渗透测试教程,该课程侧重于讲解Web安全,并通过实验详细分析常见的十种Web漏洞漏洞利用过程等。
  • 越权漏洞系列

    万次阅读 2018-04-02 15:25:04
    0x01:越权的定义越权漏洞是我们在测试过程中遇到比较多的漏洞,我们可以这样来理解越权漏洞,一个用户A一般只能够对自己本身的信息进行增删改查,然而由于后台开发人员的疏忽,没有在信息进行增删改查时候进行用户...

    0x01:越权的定义

    越权漏洞是我们在测试过程中遇到比较多的漏洞,我们可以这样来理解越权漏洞,一个用户A一般只能够对自己本身的信息进行增删改查,然而由于后台开发人员的疏忽,没有在信息进行增删改查时候进行用户判断,从而导致用户A可以对其他用户进行增删改查等等操作。

    当然越权漏洞的话,分为水平越权和垂直越权。

    0x01:

    水平越权:

    也可以把其称作访问控制攻击漏洞.Web应用程序在接收到用户的请求时,我们在增删改查某条数据时候,没有判断数据所对应的用户,或者在判断数据的用户时是通过从用户表单参数中获取userid来实现的,这里的话我们可以修改userid来实现水平越权。

    0x011:

    所以我们一般在增删改查,登陆,更新的地方寻找越权漏洞

    0x012:

    案例如下:

    漏洞命名:xxx存在水平越权访问高危漏洞

    漏洞简要描述:xxx存在水平越权访问高危漏洞

    漏洞地址:xxxx

    漏洞类型:越权漏洞

    漏洞等级:高危漏洞

    漏洞大类:业务逻辑漏洞

    漏洞修复建议:如果使用token来作为后续身份识别的令牌的话,应该是在提交密码或者验证码的数据包中而且验证通过后返回token,否则可以利用token直接进行越权访问

    首先我们访问这个地址,下载天翼客服的app


    然后我们使用burpsuite抓包分析,当然我们这里首先登录一个已知的正确的用户分析一下登录过程



    案例二:

    我们进入xx公众号



    我们选择账单|积分这个功能,然后burpsuite抓数据包,分析其参数

    我们输入任意的手机号码,也可以查询到用户的套餐使用情况。




    0x02:

    垂直越权

    垂直越权又叫做权限提升攻击,具体原因就是web应用没有做用户权限控制,或者只是在菜单上做了权限控制,导致恶意用户只要猜测到其他管理页面的URL,就可以访问或者控制其他角色拥有的数据或者页面,达到权限提升的目的。

    案例一:

    漏洞命名:xxx越权访问

    漏洞简要描述:xxx存在越权访问

    漏洞地址:xxxx

    漏洞类型:WEB漏洞

    漏洞等级:中危漏洞

    漏洞大类:重要业务的越权访问

    漏洞小类:绕过验证直接访问后台

    漏洞修复建议:做好权限控制

    0x01:我们进入该网站的登录页面

    URL为:xxxx/LecManager/login/auth

    我们访问这个URL:xxxx/LecManager/view/list/4,可以发现能够直接查看后台数据


    展开全文
  • 常见漏洞类型汇总

    千次阅读 2018-11-18 13:41:26
    一、SQL注入漏洞 SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。在设计程序,忽略了对输入字符串中夹带的SQL指令的检查,被数据库...
  • 常见安全漏洞及解决方案

    千次阅读 2018-06-30 17:19:39
    CSRF攻击XSS攻击DoS攻击Jsonp劫持SQL注入
  • web常见安全漏洞

    万次阅读 2018-09-08 10:07:40
    随着Web2.0、网络社交等一系列新型的互联网产品的诞生,基于Web环境的互联网应用越来越广泛,企业信息化的过程中,越来越多的应用都架设在Web平台上。...黑客利用网站操作系统的漏洞和Web服务程序的SQL注入漏洞...
  • F5 BIG-IP 远程代码执行漏洞(CVE-2020-5902) 漏洞利用 0x01 漏洞详情 最近各大平台都在推送F5 BIG-IP 远程代码执行漏洞漏洞编号为CVE-2020-5902。 BIG-IP ADC广泛应用于大型企业,数据中心、云计算平台中,可以...
  • Kali Linux 网络安全渗透测试

    千人学习 2020-10-12 15:49:33
    为什么学网络安全? 1. 市场巨大 每年各安全厂商收入高达400亿左右,随着5G的发展,万物互联时代,市场将进一步扩大。 2. 薪资高 网安人才的匮乏,用人开出招聘薪资往往高于求职者的预期。 3. 靠能力说话 ...
  • 文件包含漏洞概述

    2020-09-22 21:22:52
    基本概念包含的定义文件包含的定义相关函数条件分类本地文件包含(Local File Inclusion,简称LFI)定义前提:示例:利用1,利用漏洞读取敏感文件;利用2. 配合文件上传,包含一句话木马,远程文件包含(Remote File ...
  • Windows五次shift漏洞

    2020-08-29 18:55:07
    漏洞利用windows启动恢复功能,篡改系统文件名,从而可以利用命令行来清除用户密码或新建用户,以及更多事情
  • 1.看到云服务器下,标签栏,有个黄色盾牌标识,点进去,就是提示漏洞 2.再点击1个待处理,进去就显示如下:   3.当点击右边的“操作”,显示一键修复或者生成修复命令(不过这是花钱的)。 关于这个...
  • 服务器系统及软件常见漏洞

    万次阅读 2013-07-10 21:01:11
    最近由有一个什么事情,大家都懂。上头发了个加密传真,要求加强网络安全检查,于是乎所有服务器进行了大扫描,现整理一些常见漏洞...
  • 网站漏洞修复之最新版本UEditor漏洞

    万次阅读 2018-08-30 08:05:58
    UEditor于近日被曝出高危漏洞,包括目前官方UEditor 1.4.3.3 最新版本,都受到此漏洞的影响,ueditor是百度官方技术团队开发的一套前端编辑器,可以上传图片,写文字,支持自定义的html编写,移动端以及电脑端都可以...
  • 漏洞扫描器的扫描原理 ZZ

    万次阅读 2007-02-02 15:39:00
    1、漏洞扫描器的扫描原理  网络漏洞扫描器对目标系统进行漏洞检测时,首先探测目标系统的存活主机,对存活主机进行端口扫描,确定系统听开放的端口,同时根据协议指纹技术识别出主机的操作系统类型。...
  • Web漏洞扫描工具汇总

    万次阅读 2019-01-07 17:10:14
    可见总体漏洞扫描概况,也可导出报告,报告提供漏洞明细说明、漏洞利用方式、修复建议。缺点是限制了并行扫描的网站数。 2、OWASP Zed(ZAP),来自OWASP项目组织的开源免费工具,提供漏洞扫描、爬虫、Fuzz功能,...
  • 美国1, 赛门铁克的漏洞库 https://www.securityfocus.com/2, 美国国家信息安全漏洞库 https://nvd.nist.gov/3, 全球信息安全漏洞指纹库与文件检测服务 http://cvescan.com4, 美国著名安全公司Offensive Security的...
  • 购买阿里云服务器后, 一段时间, 会发钱提示高危漏洞, 而且很多, 有高危/中危/低危/严重等几个等级.当点击(一键修复或者生成修复命令时,开始让买买买了就);关于这个问题自己手动修复的话, 采用软件升级一般都可以解决...
  • 高校安全漏洞管理流程:你必须知道的几个要素 | Web安全 2017-07-21 09:42 高校信息安全管理是当前高校信息化工作的重点和难点。经过十余年的发展,各高校都基本完成了信息化建设的“原始积累”,拥有了相当数量的...
1 2 3 4 5 ... 20
收藏数 329,096
精华内容 131,638
关键字:

漏洞