- 挂马攻击漏洞
挂马攻击是指攻击者在获取网站控制权(非法获取控制权的手段包括SQL注入,XSS攻击等)之后,通过篡改网站的网页内容,在页面中嵌入恶意代码 (通常是通过IFrame、Script引用来实现),当用户访问该网页时, 嵌入的恶意代码利用浏览器本身的漏洞、第三方ActiveX漏洞或者其它插件(如Flash、PDF插件等)漏洞, 在用户不知情的情况下下载并执行恶意木马。
挂马方式
目前挂马的主要方式是通过IFrame与Script嵌入网马URL,比如下面的挂马代码:
<iframe src=http://www.cq***.com/Img/ width=0 height=0></iframe>
这里通过将IFrame的width与height设置为0,使得嵌入的网马URL在网页上不可见。
<script src=http://%68%68%6A%32***%63%6E></script>
这里Script里的URL是经过URL encode编码的。 通过各种编码、混淆、客户端判断等方式来隐藏、保护网马是攻击者挂马常用的手段。
除了这两种常见的挂马方式外,还有如下几种:
- 利用JavaScript执行各种经过编码、混淆的攻击代码进行挂马。
- 利用网页跳转、弹出新窗口等方式进行挂马。
- 利用Flash等媒体封装的方式进行挂马。
- 在CSS(层叠样式表)里可以执行JavaScript的浏览器中进行挂马。
挂马常见类型
常见的几种类型如下:
- 数据库挂马:攻击者利用SQL注入漏洞将挂马代码注入到数据库的某些字段中, 如果网站页面使用到这些字段的值,并且没做适当的过滤,就有可能导致用户访问该网站的页面时执行攻击者注入的代码。
- 文件挂马:攻击者直接将挂马代码批量写入服务端文件里以达到整站挂马的目的。
- arp挂马:在与目标站点同一局域网的情况下, 攻击者可以通过控制局域网中任意一台主机计算机发起ARP欺骗,并将挂马代码注入到用户请求的响应页面上,从而达到隐蔽的挂马目的。 这样的攻击方式在客户端上也可能发生,比如用户所在的局域网有ARP病毒,那么用户请求的所有网站都有可能被注入挂马代码。
- 服务端配置文件挂马:比如IIS里的文件重定向、启用文档页脚、修改IIS映射等挂马。这类挂马比较隐蔽,也是挂马常用的技巧。
- XSS挂马:利用XSS跨站脚本漏洞,将挂马代码注入到客户端页面以达到挂马的目的。
挂马危害
网站被挂马不仅严重影响到了网站的公众信誉度,还可能对访问该网站的用户计算机造成很大的破坏。
一般情况下,攻击者挂马的目的只有一个:利益。 如果用户访问被挂网站时,用户计算机就有可能被植入病毒,这些病毒会偷盗各类账号密码,如网银账户、游戏账号、邮箱账号、QQ及MSN账号等。 植入的病毒还可能破坏用户的本地数据,从而给用户带来巨大的损失,甚至让用户计算机沦为僵尸网络中的一员。
网站被挂马的解决方案
对于网站被挂马,建议如下:
- 通过上面介绍的“挂马常见类型”迅速分析定位网站被挂马的原因。
a) 数据库挂马:及时恢复数据库或者利用嵌入的挂马代码,搜索数据库,定位到挂马代码所在的字段值并清除。
b) 文件挂马:使用工具或者命令遍历网站所有文本文件,批量清除挂马代码。
c) ARP挂马:查找出局域网中的ARP病毒源头,清除病毒,并将相应计算机进行安全加固或重新安装系统。
d) 服务端配置文件挂马:如果上述的方法找不到挂马代码时,就应该查找网站服务端配置文件是否存在异常,并恢复。
e) XSS挂马:这类挂马使用不广泛,修补网站的XSS漏洞即可解决问题。
- 及时检测并修补网站本身以及网站所在服务端环境的各类漏洞,从而在根源上降低消除网站被挂马的风险。
- 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
则数据库执行的查询语句为:
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注入攻击之前,首先要找到网站中各类与数据库形成交互的输入点。通常情况下,一个网站的输入点包括:
- 表单提交,主要是POST请求,也包括GET请求。
- URL参数提交,主要为GET请求参数。
- Cookie参数提交。
- HTTP请求头部的一些可修改的值,比如Referer、User_Agent等。
- 一些边缘的输入点,比如.mp3文件的一些文件信息等。
服务端从客户端直接或间接获取数据的过程都是一次输入过程, 无论直接或间接,默认情况下输入的数据都应该认为是不安全的。 上面列举的几类输入点,只要任何一点存在过滤不严,过滤缺陷等问题, 都有可能发生SQL注入攻击。大多数情况下,SQL注入的过程都是由工具完成的, 其中包括大批量注入工具的使用。
SQL注入危害
SQL注入的危害不仅体现在数据库层面上,还有可能危及承载数据库的操作系统;如果SQL注入被用来挂马,还可能用来传播恶意软件等,这些危害包括但不局限于:
- 数据库信息泄漏:数据库中存放的用户的隐私信息的泄露。作为数据的存储中心,数据库里往往保存着各类的隐私信息,SQL注入攻击能导致这些隐私信息透明于攻击者。
- 网页篡改:通过操作数据库对特定网页进行篡改。
- 网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。
- 数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改。
- 服务器被远程控制,被安装后门。经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。
- 破坏硬盘数据,瘫痪全系统。
一些类型的数据库系统能够让SQL指令操作文件系统,这使得SQL注入的危害被进一步放大。
SQL注入解决方案
解决SQL注入问题的关键是对所有可能来自用户输入的数据进行严格的检查、对数据库配置使用最小权限原则。
经常使用的方案有:
- 所有的查询语句都使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。当前几乎所有的数据库系统都提供了参数化SQL语句执行接口,使用此接口可以非常有效的防止SQL注入攻击。
- 对进入数据库的特殊字符('"\<>&*;等)进行转义处理,或编码转换。
- 确认每种数据的类型,比如数字型的数据就必须是数字,数据库中的存储字段必须对应为int型。
- 数据长度应该严格规定,能在一定程度上防止比较长的SQL注入语句无法正确执行。
- 网站每个数据层的编码统一,建议全部使用UTF-8编码,上下层编码不一致有可能导致一些过滤模型被绕过。
- 严格限制网站用户的数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害。
- 避免网站显示SQL错误信息,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判断。
- 在网站发布之前建议使用一些专业的SQL注入检测工具进行检测,及时修补这些SQL注入漏洞。
- XSS攻击漏洞
跨站脚本攻击(Cross-site scripting,通常简称为XSS)发生在客户端,可被用于进行窃取隐私、钓鱼欺骗、偷取密码、传播恶意代码等攻击行为。 恶意的攻击者将对客户端有危害的代码放到服务器上作为一个网页内容, 使得其他网站用户在观看此网页时,这些代码注入到了用户的浏览器中执行,使用户受到攻击。一般而言,利用跨站脚本攻击,攻击者可窃会话COOKIE从而窃取网站用户的隐私,包括密码。
XSS攻击使用到的技术主要为HTML和Javascript,也包括VBScript和ActionScript等。XSS攻击对WEB服务器虽无直接危害,但是它借助网站进行传播,使网站的使用用户受到攻击,导致网站用户帐号被窃取,从而对网站也产生了较严重的危害。
XSS实例
假如一个搜索引擎网站中存在跨站脚本漏洞,攻击者给查询参数q增加了恶意构造的值(跨站代码):
http://www.xxx.cn?q=<script>alert(document.cookie)<script>
如果服务端在返回的结果页面中,将用户提交的内容进行了原样的显示,那么访问这个链接时会弹出你的Cookie信息,例如:
<html>...<br />你查询的是:<script>alert(document.cookie)</script>...</html>
这里跨站产生的原因是:链接中的跨站代码被写进客户端HTML代码中,从而引进了不安全的HTML标签(<script>)导致跨站脚本攻击。
XSS原理
攻击者通过网站的输入点嵌入非法的HTML标签与JavaScript脚本并执行以达到在客户端攻击的目的。攻击者注入的标签与脚本最终都要在客户端执行,攻击的过程实际上都在客户端的浏览器上发生的。
能在客户端进行跨站的不仅仅是HTML标签与JavaScript脚本,还包含一些其它的客户端应用,比如Flash里的ActionScript脚本也能辅助发起XSS攻击。
XSS攻击中WEB服务器没有过滤类似<script>标签字符串是导致XSS攻击得逞的最主要原因。
XSS类型
XSS类型包括:
- 非持久型跨站:即反射型跨站脚本漏洞,是目前最普遍的跨站类型。 跨站代码一般存在于链接中,请求这样的链接时,跨站代码经过服务端反射回来, 这类跨站的代码不存储到服务端(比如数据库中)。上面章节所举的例子就是这类情况。
- 持久型跨站:这是危害最直接的跨站类型,跨站代码存储于服务端(比如数据库中)。 常见情况是某用户在论坛发贴,如果论坛没有过滤用户输入的Javascript代码数据, 就会导致其他浏览此贴的用户的浏览器会执行发贴人所嵌入的Javascript代码。
- DOM跨站(DOM XSS):是一种发生在客户端DOM(Document Object Model文档对象模型)中的跨站漏洞,很大原因是因为客户端脚本处理逻辑导致的安全问题。
XSS危害
XSS的危害包括但不限于:
- 钓鱼欺骗:最典型的就是利用目标网站的反射型跨站脚本漏洞将目标网站重定向到钓鱼网站,或者注入钓鱼JavaScript以监控目标网站的表单输入,甚至发起基于DHTML更高级的钓鱼攻击方式。
- 网站挂马:跨站时利用IFrame嵌入隐藏的恶意网站或者将被攻击者定向到恶意网站上,或者弹出恶意网站窗口等方式都可以进行挂马攻击。
- 身份盗用:Cookie是用户对于特定网站的身份验证标志,XSS可以盗取到用户的Cookie,从而利用该Cookie盗取用户对该网站的操作权限。如果一个网站管理员用户Cookie被窃取,将会对网站引发巨大的危害。
- 盗取网站用户信息:当能够窃取到用户Cookie从而获取到用户身份使,攻击者可以获取到用户对网站的操作权限,从而查看用户隐私信息。
- 垃圾信息发送:比如在SNS社区中,利用XSS漏洞借用被攻击者的身份发送大量的垃圾信息给特定的目标群。
- 劫持用户Web行为:一些高级的XSS攻击甚至可以劫持用户的Web行为,监视用户的浏览历史,发送与接收的数据等等。
- XSS蠕虫:XSS 蠕虫可以用来打广告、刷流量、挂马、恶作剧、破坏网上数据、实施DDoS攻击等。
XSS解决方案
常用的防止XSS技术包括:
- 与SQL注入防护的建议一样,假定所有输入都是可疑的,必须对所有输入中的script、iframe等字样进行严格的检查。这里的输入不仅仅是用户可以直接交互的输入接口,也包括HTTP请求中的Cookie中的变量,HTTP请求头部中的变量等。
- 不仅要验证数据的类型,还要验证其格式、长度、范围和内容。
- 不要仅仅在客户端做数据的验证与过滤,关键的过滤步骤在服务端进行。
- 对输出的数据也要检查,数据库里的值有可能会在一个大网站的多处都有输出,即使在输入做了编码等操作,在各处的输出点时也要进行安全检查。
- 在发布应用程序之前测试所有已知的威胁。
- 什么是ICP备案
网络内容服务商(英文为 Internet Content Provider 简写为ICP),其必须具备的证书即为ICP证。
ICP证是指各地通信管理部门核发的《中华人民共和国电信与信息服务业务经营许可证》。国家对提供互联网信息服务的经营性ICP实行许可证制度 。 经营性ICP主要是指利用网上广告、代制作网页、出租服务器内存空间、主机托管、有偿提供特定信息内容、电子商务及其它网上应用服务等方式获得收入的ICP。
根据中华人民共和国国务院令第291号《中华人民共和国电信条例》、第292号《互联网信息服务管理办法》(简称ICP管理办法),国家对提供互联网信息服务的ICP实行许可证制度。
ICP证是网站经营的许可证,根据国家《互联网信息服务管理办法》规定,经营性网站必须办理ICP证,否则就属于非法经营。
根据《互联网信息服务管理办法》,违反本办法的规定,未取得经营许可证,擅自从事经营性互联网信息服务, 或者超出许可的项目提供服务的,由所在地电信管理机构责令限期改正,有违法所得的,没收违法所得,处违法所得3倍以上5倍以下的罚款; 没有违法所得或者违法所得不足5万元的,处10万元以上100万元以下的罚款;情节严重的,责令关闭网站。
从事互联网信息服务,需要到当地通信管理部门申请ICP经营许可证或备案。 通信管理部门是指各省通信管理局、市通信管理局、市通信行业管理办公室。 可以先通过拨打相关部门的电话,进行咨询;或者通过网络查询相关部门的网站信息,获取办理流程及所需资料。
ICP证需显示在网站首页底部的中间位置。
隐私信息泄露
隐私信息通常包括:组织机构或个人身份信息、Email地址、银行卡帐号、手机号等。
信息泄露危害
攻击者可能利用网络爬虫、搜索引擎等方法获取到这些信息,随后它们可能进行如下攻击:
- 垃圾信息邮件、垃圾短信、营销电话等攻击。
- 通过这些敏感信息进行网络诈骗、网络钓鱼等非法行为。
常见防御方式
常见的几种防御方式如下:
- 如非必要不要泄露任何隐私信息到互联网上。
- 将隐私信息使用图片生成,而非以文本的形式展现在网站上。
- 将Email信息中“@”以“#”等字符代替,并在Email地址后做出说明。
邮箱地址:example#email.com (请将#改为@)
- 使用全角输入帐号等信息,如:
邮箱地址:example@email.com,银行帐号:6222023300000000000
敏感路径泄露
敏感路径信息通常包括:网站管理后台地址、网站数据库路径、svn信息文件、服务器管理软件配置文件、常见备份文件与临时文件路径等,这些路径信息的泄露可能被黑客利用从而进行进一步的攻击行为。
敏感路径泄露的危害
- 攻击者在通过Web漏洞或其它方式获得到网站的管理密码后,可以通过网站后台路径进入网站管理后台进行完全控制网站。
- 部分数据库,如微软的Access数据库是可以通过HTTP方式进行下载,若数据库路径泄露,被黑客下载数据库后,包括网站管理帐号密码等数据均将泄露。
- 攻击者在获得SVN信息文件后,可能通过SVN向服务器端发送恶意脚本、程序,进而获得服务器的控制权。
- 攻击者通过泄露的服务器软件配置文件得到该软件的信息,可能利用该软件存在的漏洞等进行进一步的服务器渗透。
- 备份文件、临时文件的路径泄露可以使得黑客通过访问其后,得到保存在其中的敏感信息,如管理密码等。
敏感路径泄露解决方案
- 修改默认网站后台路径,如将后台所有路径文件名进行修改,避免使用admin、manage、login等常见的名称。
- 修改数据库默认路径,避免使用database、db等容易被猜测到的名称做为数据库名称。
如果使用开源CMS进行建站,更应该对相关敏感目录、文件进行改名处理。
暗链攻击
暗链在这里通俗的说,网站链接中的一种,也称为黑链。如果再通俗的说一点“暗链”就是看不见的网站链接,“暗链”在网站中的链接做的非常隐蔽,短时间内不易被搜索引擎察觉。它和友情链接有相似之处,可以有效地提高PR值。但要注意一点PR值是对单独页面,而不是整个网站。
黑客取得网站控制权后,往往通过在被控制网站的首页放置暗链,从而达到欺骗搜索引擎的效果,使得自身网站搜索引擎权重大幅提高,在搜索引擎中的排名大幅上升。但这并不是无代价的,受到损失最大的就是被控制的网站,往往随着暗链所指向的网站的权重不断提高,存在暗链的网站的权重将不断下降,搜索引擎排名也必然一再下降,严重影响网站的影响力。另一方面黑客往往放置的链接大多为私服、博彩、色情等非法网站的链接,对于被暗链网站来说,这无疑也有着巨大的风险。
暗链实例
下面是最常见最传统的一例,通过设置链接文本的颜色与网页背景相似或相同从而达到不可见的效果。
<a href="http://xxx.com"><font color="#ffffff">暗链</font></a>
如果遭受暗链攻击的网站的背景色是白色的话,那么上面的暗链代码如果被植入该网站,暗链的效果就达到了。
暗链的实现方式有多种,不过万变不离其宗,其最明显的特征就是在页面上无法看到,但网页HTML代码中却是存在的。