附录:网站安全常见问题
挂马攻击 挂马攻击是指攻击者在已经获得控制权的网站的网页中嵌入恶意代码(通常是通过IFrame、Script引用来实现),当用户访问该网页时,嵌入的恶意代码利用浏览器本身的漏洞、第三方ActiveX漏洞或者其它插件(如Flash、PDF插件等)漏洞,在用户不知情的情况下下载并执行恶意木马。 挂马方式 目前挂马的主要方式是通过IFrame与Script嵌入网马URL,比如下面的挂马代码: 这里通过将IFrame的width与height设置为0,使得嵌入的网马URL在网页上不可见。 这里Script里的URL是经过URL encode编码的。通过各种编码、混淆、客户端判断等方式来隐藏、保护网马是攻击者挂马常用的手段。 除了这两种常见的挂马方式外,还有如下几种: 1、 利用JavaScript执行各种经过编码、混淆的攻击代码进行挂马。 2、 利用网页跳转、弹出新窗口等方式进行挂马。 3、 利用Flash等媒体封装的方式进行挂马。 4、 在CSS(层叠样式表)里可以执行JavaScript的浏览器中进行挂马。 挂马常见类型 常见的几种类型如下: 1、 数据库挂马 1 / 13
附录:网站安全常见问题
攻击者利用SQL注入漏洞将挂马代码注入到数据库的某些字段中,如果网站页面使用到这些字段的值,并且没做适当的过滤,就有可能导致用户访问该网站的页面时执行攻击者注入的代码。 2、 文件挂马 攻击者直接将挂马代码批量写入服务端文件里以达到整站挂马的目的。 3、 ARP挂马 在与目标站点同一局域网的情况下,攻击者可以通过控制局域网中任意一台主机计算机发起ARP欺骗,并将挂马代码注入到用户请求的响应页面上,从而达到隐蔽的挂马目的。这样的攻击方式在客户端上也可能发生,比如用户所在的局域网有ARP病毒,那么用户请求的所有网站都有可能被注入挂马代码。 4、 服务端配置文件挂马 比如IIS里的文件重定向、启用文档页脚、修改IIS映射等挂马。这类挂马比较隐蔽,也是挂马常用的技巧。 5、 XSS挂马 利用XSS跨站脚本漏洞,将挂马代码注入到客户端页面以达到挂马的目的。 挂马危害 网站被挂马不仅严重影响到了网站的公众信誉度,还可能对访问该网站的用户计算机造成很大的破坏。 一般情况下,攻击者挂马的目的只有一个:利益。如果用户访问被挂网站时,用户计算机就有可能被植入病毒,这些病毒会偷盗各类账号密码,如网银账户、游戏账号、邮箱账号、 2 / 13
附录:网站安全常见问题
QQ及MSN账号等。植入的病毒还可能破坏用户的本地数据,从而给用户带来巨大的损失,甚至让用户计算机沦为僵尸网络中的一员。 网站被挂马的解决方案 对于网站被挂马,建议如下: 1、 通过上面介绍的“挂马常见类型”迅速分析定位网站被挂马的原因。 a) 数据库挂马:及时恢复数据库或者利用嵌入的挂马代码,搜索数据库,定位到挂马代码所在的字段值并清除。 b) 文件挂马:使用工具或者命令遍历网站所有文本文件,批量清除挂马代码。 c) ARP挂马:查找出局域网中的ARP病毒源头,清除病毒,并将相应计算机进行安全加固或重新安装系统。 d) 服务端配置文件挂马:如果上述的方法找不到挂马代码时,就应该查找网站服务端配置文件是否存在异常,并恢复。 e) XSS挂马:这类挂马使用不广泛,修补网站的XSS漏洞即可解决问题。 2、 及时检测并修补网站本身以及网站所在服务端环境的各类漏洞,从而在根源上降低消除网站被挂马的风险。 3 / 13
附录:网站安全常见问题
SQL注入攻击漏洞 SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,是发生在应用程序的数据库层上的安全漏洞。在设计不良的程序当中,忽略了对输入字符串中夹带的SQL指令的检查,那么这些夹带进去的指令就会被数据库误认为是正常的SQL指令而运行,从而使数据库受到攻击,可能导致数据被窃取、更改、删除,以及进一步导致网站被嵌入恶意代码、被植入后门程序等危害。 SQL注入实例 某网站的登录页面如下: 页面表单提交时,将用户名赋予变量v_user,将密码赋予变量v_pass。 假定该登录页面后台身份验证代码为: “select * from user where user_name=’” + v_user + “’ and password=’” + v_pass + ”’;” 如果输入:用户名:admin,密码:123456 则数据库执行的查询语句为: 4 / 13
附录:网站安全常见问题
select * from user where user_name=’admin’ and password=’123456’; 一切均正常。但如果用户恶意输入使得: v_user=”admin” v_pass=”1’ or ‘1’=’1” 此时认证SQL语句变成了: select * from user where user_name=’admin’ and password=’1’ or ‘1’=’1’; 等同于语句: select * from user where user_name=’admin’; 从而达到了无需密码,同样可登入网站的目的。 如果用户输入数据中包含其他update、 delete、 select等操作,则会导致数据库数据被修改、删除、和敏感内容泄密。 SQL注入位置 无论是内网环境还是环境(互联网),B/S架构的Web应用(以下指网站)都直接或者间接地受到各种类型的Web攻击的影响。对于后台数据库来说,以SQL注入攻击危害最为普遍,由于网站服务端语言自身的缺陷与程序员编写代码的安全意识不足,攻击者可以将恶意SQL语句注入到正常的数据库操作指令中去,从而使该恶意SQL语句在后台数据库中被解析执行。 在SQL注入攻击之前,首先要找到网站中各类与数据库形成交互的输入点。通常情况下,一个网站的输入点包括: 5 / 13
附录:网站安全常见问题
1、 表单提交,主要是POST请求,也包括GET请求。 2、 URL参数提交,主要为GET请求参数。 3、 Cookie参数提交。 4、 HTTP请求头部的一些可修改的值,比如Referer、User_Agent等。 5、 一些边缘的输入点,比如.mp3文件的一些文件信息等。 服务端从客户端直接或间接获取数据的过程都是一次输入过程,无论直接或间接,默认情况下输入的数据都应该认为是不安全的。上面列举的几类输入点,只要任何一点存在过滤不严,过滤缺陷等问题,都有可能发生SQL注入攻击。大多数情况下,SQL注入的过程都是由工具完成的,其中包括大批量注入工具的使用。 SQL注入危害 SQL注入的危害不仅体现在数据库层面上,还有可能危及承载数据库的操作系统;如果SQL注入被用来挂马,还可能用来传播恶意软件等,这些危害包括但不局限于: 1、 数据库信息泄漏:数据库中存放的用户的隐私信息的泄露。作为数据的存储中心,数据库里往往保存着各类的隐私信息,SQL注入攻击能导致这些隐私信息透明于攻击者。 2、 网页篡改:通过操作数据库对特定网页进行篡改。 3、 网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。 4、 数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改。 5、 服务器被远程控制,被安装后门。经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。 6 / 13
附录:网站安全常见问题
6、 破坏硬盘数据,瘫痪全系统。 一些类型的数据库系统能够让SQL指令操作文件系统,这使得SQL注入的危害被进一步放大。 SQL注入解决方案 解决SQL注入问题的关键是对所有可能来自用户输入的数据进行严格的检查、对数据库配置使用最小权限原则。 经常使用的方案有: 1、 所有的查询语句都使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。当前几乎所有的数据库系统都提供了参数化SQL语句执行接口,使用此接口可以非常有效的防止SQL注入攻击。 2、 对进入数据库的特殊字符('\"\\&<>*;等)进行转义处理,或编码转换。 3、 确认每种数据的类型,比如数字型的数据就必须是数字,数据库中的存储字段必须对应为int型。 4、 数据长度应该严格规定,能在一定程度上防止比较长的SQL注入语句无法正确执行。 5、 网站每个数据层的编码统一,建议全部使用UTF-8编码,上下层编码不一致有可能导致一些过滤模型被绕过。 6、 严格网站用户的数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害。 7 / 13
附录:网站安全常见问题
7、 避免网站显示SQL错误信息,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判断。 8、 在网站发布之前建议使用一些专业的SQL注入检测工具进行检测,及时修补这些SQL注入漏洞。 8 / 13
附录:网站安全常见问题
XSS攻击漏洞 跨站脚本攻击(Cross-site scripting,通常简称为XSS)发生在客户端,恶意的攻击者将对客户端有危害的代码放到服务器上作为一个网页内容,使得其他网站用户在观看此网页时,这些代码注入到了用户的浏览器中执行,使用户受到攻击。一般而言,利用跨站脚本攻击,攻击者可窃会话COOKIE从而窃取网站用户的隐私,包括密码。 XSS攻击使用到的技术主要为HTML和JavaScript,也包括VBScript和ActionScript等。XSS攻击对WEB服务器虽无直接危害,但是它借助网站进行传播,使网站的使用用户受到攻击,导致网站用户帐号被窃取,从而对网站也产生了较严重的危害。 XSS实例 假如一个搜索引擎网站中存在跨站脚本漏洞,攻击者给查询参数q增加了恶意构造的值(跨站代码: http://www.xxx.cn?q= 如果服务端在返回的结果页面中,将用户提交的内容进行了原样的显示,那么访问这个链接时会弹出你的Cookie信息,例如: …
你查询的是:… 这儿跨站产生的原因是:链接中的跨站代码被写进客户端HTML代码中,从而引进了不安全的HTML标签(