信息安全常见漏洞类型汇总

一、SQL 注入漏洞
SQL 注入攻击( SQL Injection ),简称注入攻击、SQL 注入,被广泛用
于非法获取网站控制权, 是发生在应用程序的数据库层上的安全漏洞。在设计程序,
忽略了对输入字符串中夹带的SQL 指令的检查,被数据库误认为是正常的SQL 指
令而运行,从而使数据库受到攻击,可能导致数据被窃取、更改、删除,以及进一
步导致网站被嵌入恶意代码、被植入后门程序等危害。
通常情况下, SQL 注入的位置包括:
(1)表单提交,主要是POST 请求,也包括GET 请求;
(2)URL 参数提交,主要为GET 请求参数;
(3)Cookie 参数提交;
(4)HTTP 请求头部的一些可修改的值,比如Referer 、User_Agent 等;
(5)一些边缘的输入点,比如.mp3 文件的一些文件信息等。
SQL 注入的危害不仅体现在数据库层面上, 还有可能危及承载数据库的操
作系统;如果SQL 注入被用来挂马,还可能用来传播恶意软件等,这些危害包括但
不局限于:
(1)数据库信息泄漏:数据库中存放的用户的隐私信息的泄露。作为数据
的存储中心,数据库里往往保存着各类的隐私信息, SQL 注入攻击能导致这些隐私
信息透明于攻击者。
(2)网页篡改:通过操作数据库对特定网页进行篡改。
(3)网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链
接,进行挂马攻击。
(4)数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户
被篡改。
(5)服务器被远程控制,被安装后门。经由数据库服务器提供的操作系统
支持,让黑客得以修改或控制操作系统。
(6)破坏硬盘数据,瘫痪全系统。
解决SQL 注入问题的关键是对所有可能来自用户输入的数据进行严格的
检查、对数据库配置使用最小权限原则。通常使用的方案有:
(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)钓鱼欺骗:最典型的就是利用目标网站的反射型跨站脚本漏洞将目
标网站重定向到钓鱼网站,或者注入钓鱼JavaScript 以监控目标网站的表单输入,
甚至发起基于DHTML 更高级的钓鱼攻击方式。
(2 )网站挂马:跨站时利用IFrame 嵌入隐藏的恶意网站或者将被攻击
者定向到恶意网站上,或者弹出恶意网站窗口等方式都可以进行挂马攻击。
(3)身份盗用: Cookie 是用户对于特定网站的身份验证标志, XSS 可
以盗取到用户的Cookie ,从而利用该Cookie 盗取用户对该网站的操作权限。如果
一个网站管理员用户Cookie 被窃取,将会对网站引发巨大的危害。
(4)盗取网站用户信息:当能够窃取到用户Cookie 从而获取到用户身
份使,攻击者可以获取到用户对网站的操作权限,从而查看用户隐私信息。
(5)垃圾信息发送:比如在SNS 社区中,利用XSS 漏洞借用被攻击者
的身份发送大量的垃圾信息给特定的目标群。
(6)劫持用户Web 行为:一些高级的XSS 攻击甚至可以劫持用户的
Web 行为,监视用户的浏览历史,发送与接收的数据等等。
(7)XSS 蠕虫:XSS 蠕虫可以用来打广告、刷流量、挂马、恶作剧、破
坏网上数据、实施DDoS 攻击等。
常用的防止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 远程命令执行漏洞
Apache Struts 是一款建立Java web 应用程序的开放源代码架构。
Apache Struts 存在一个输入过滤错误,如果遇到转换错误可被利用注入和执行任
意Java 代码。
网站存在远程代码执行漏洞的大部分原因是由于网站采用了Apache
Struts Xwork 作为网站应用框架,由于该软件存在远程代码执高危漏洞,导致网站
面临安全风险。CNVD 处置过诸多此类漏洞,例如:“ GPS 车载卫星定位系统”网
站存在远程命令执行漏洞(CNVD-2012-13934) ;Aspcms 留言本远程代码执行漏
洞( CNVD-2012-11590 )等。
修复此类漏洞,只需到Apache 官网升级Apache Struts 到最新版本:
http://struts.apache.org
六、框架钓鱼漏洞(框架注入漏洞)
框架注入攻击是针对Internet Explorer 5 、Internet Explorer 6 、与
Internet Explorer 7 攻击的一种。这种攻击导致Internet Explorer 不检查结果框
架的目的网站,因而允许任意代码像Javascript 或者VBScript 跨框架存取。这种
攻击也发生在代码透过多框架注入,肇因于脚本并不确认来自多框架的输入。这种
其他形式的框架注入会影响所有的不确认不受信任输入的各厂商浏览器和脚本。
如果应用程序不要求不同的框架互相通信,就可以通过完全删除框架名
称、使用匿名框架防止框架注入。但是,因为应用程序通常都要求框架之间相互通
信,因此这种方法并不可行。因此,通常使用命名框架,但在每个会话中使用不同
的框架,并且使用无法预测的名称。一种可行的方法是在每个基本的框架名称后附
加用户的会话令牌,如main_display 。
七、文件上传漏洞
文件上传漏洞通常由于网页代码中的文件上传路径变量过滤不严造成
的,如果文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,
攻击者可通过Web 访问的目录上传任意文件,包括网站后门文件( webshell ),
进而远程控制网站服务器。
因此,在开发网站及应用程序过程中,需严格限制和校验上传的文件,禁
止上传恶意代码的文件。同时限制相关目录的执行权限,防范webshell 攻击。
八、应用程序测试脚本泄露
由于测试脚本对提交的参数数据缺少充分过滤,远程攻击者可以利用洞
以WEB 进程权限在系统上查看任意文件内容。防御此类漏洞通常需严格过滤提交
的数据,有效检测攻击。
九、私有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、目录遍历、弱口令等均可导致敏感信息泄露,攻击者可
以通过漏洞获得敏感信息。针对不同成因,防御方式不同。

posted @ 2019-02-17 14:22  yzloo  阅读(15492)  评论(0编辑  收藏  举报