网站常见攻击方法和应对方法
一、常见的针对Web应用的攻击
注入攻击和跨站脚本攻击
Web应用主要有2种最常见的严重缺陷。首先是各种形式的注入攻击,其中包括SQL、操作系统、电子邮件和LDAP注入,它们的攻击方式都是在发给应用的命令或查询中夹带恶意数据。别有用心的数据可以让应用执行一些恶意命令或访问未授权数据。如果网站使用用户数据生成SQL查询,而不检查用户数据的合法性,那么攻击者就可能执行SQL注入。这样攻击者就可以直接向数据库提交恶意SQL查询和传输命令。举例来说,索尼的PlayStation数据库就曾经遭遇过SQL注入攻击,并植入未授权代码。
跨站脚本(XSS)攻击会将客户端脚本代码(如Javascript)注入到Web应用的输出中,从而攻击应用的用户。只要访问受攻击的输出或页面,浏览器就会执行代码,让攻击者劫持用户会话,将用户重定向到一个恶意站点或者破坏网页显示效果。XSS攻击很可能出现在动态生成的页面内容中,通常应用会接受用户提供的数据而没有正确验证或转码。
为了防御注入攻击和XSS攻击,应用程序应该配置为假定所有数据——无论是来自表单、URL、Cookie或应用的数据库,都是不可信来源。要检查所有处理用户提供数据的代码,保证它是有效的。验证函数需要清理所有可能有恶意作用的字符或字符串,然后再将它传给脚本和数据库。要检查输入数据的类型、长度、格式和范围。开发者应该使用现有的安全控制库,如OWASP的企业安全API或微软的反跨站脚本攻击库,而不要自行编写验证代码。此外,一定要检查所有从客户端接受的值,进行过滤和编码,然后再传回给用户。
身份验证和会话管理被攻破
Web应用程序必须处理用户验证,并建立会话跟踪每一个用户请求,因为HTTP本身不具备这个功能。除非任何时候所有的身份验证信息和会话身份标识都进行加密,保证不受其他缺陷(如XSS)的攻击,否则攻击者就有可能劫持一个激活的会话,伪装成某个用户的身份。如果一个攻击者发现某个原始用户未注销的会话(路过攻击),那么所有帐号管理功能和事务都必须重新验证,即使用户有一个有效的会话ID。此外,在重要的事务中还应该考虑使用双因子身份验证。
为了发现身份验证和会话管理问题,企业要以执行代码检查和渗透测试。开发者可以使用自动化代码和漏洞扫描程序,发现潜在的安全问题。有一些地方通常需要特别注意,其中包括会话身份标识的处理方式和用户修改用户身份信息的方法。如果没有预算购买商业版本,那么也可以使用许多开源和简化版本软件,它们可以发现一些需要更仔细检查的代码或进程。
不安全的直接对象引用
这是应用设计不当引起的另一个缺陷,它的根源是错误地假定用户总是会遵循应用程序的规则。例如,如果用户的帐号ID显示在页面的URL或隐藏域中,恶意用户可能会猜测其他用户的ID,然后再次提交请求访问他们的数据,特别是当ID值是可以猜测的时候。防止这种漏洞的最佳方法是使用随机、不可猜测的ID、文件名和对象名,而且不要暴露对象的真实名称。常见的错误暴露数据的位置是URL和超链接、隐藏表单域、ASP.NET的未保护视图状态、直接列表框、Javascript代码和客户端对象(如Java Applet)。每次访问敏感文件或内容时,都要验证访问数据的用户已获得授权。
安全性配置不当
支持Web应用程序的基础架构包含各种各样的设备和软件——服务器、防火墙、数据库、操作系统和应用软件。所有这些元素都必须正确配置和保证安全,应用程序只是运行在最低权限配置上,但是许多系统本身还不够安全。系统管理不当的一个主要原因是Web应用程序管理人员和基础架构支持人员从未接受过必要的培训。
为执行日常网络应用管理的人员提供足够的培训和资源,这是在开发过程中所有阶段保证安全性和保密性的重要条件。最后,要为Web应用程序安排一个渗透测试,处理所有敏感数据。这是一种主动评估应用抵抗攻击能力的方法,可以在受到攻击前发现系统漏洞。
结束语
一直以来,这5种常见的Web应用漏洞都是IT安全的痛处。它们并不是新漏洞,但是它们都没有解决,在人们对Web应用安全有足够认识之前,攻击者仍然会想尽办法继续利用这些缺陷发起偷盗、欺骗和网络间谍等攻击
二、网站安全常见问题的应对方法
1、SQL注入漏洞.这种漏洞在网上很普遍,通常是由于程序员对SQL注入攻击不了解,程序过滤不严格,或者某个参数忘记检查所产生的。这就导致入侵者通过构造特殊的SQL语句,而对数据库进行跨表查询攻击,通过这种方式很容易使入侵者得到一个WebShell,然后利用这个WebShell做进一步的渗透,直至得到系统的管理权限,所以这种漏洞产生的危害很严重。
2、一种比较特殊的Sql注入漏洞,也有人称之为万能密码漏洞。之所以说比较特殊,是因为它同样是通过构造特殊的SQL语句,来欺骗鉴别用户身份代码的,但与Sql注入的提交方式不同。比如入侵者找到后台管理入口后,在管理员用户名和密码输入“'or '1'='1'”、“'or''='”、“') or ('a'='a”、“" or "a"="a”、“' or 'a'='a”、“' or 1=1--”等这类字符串(不包含引号),提交,就有可能直接进入后台管理界面。这个漏洞比较老了,但还是在一些网站存在着。解决这个漏洞的办法是对“’”这类特殊字符进行过滤或者替换。
3、对提交的特殊字符不过滤。对于网友在网站注册用户信息和留言时,也要过滤提交的特殊字符,防止入侵者提交HTML语句,对页面挂马。
4、上传文件格式限制不严谨。尽量不要使用无组件上传,很容易被黑客利用上传木马。BBSXP、动网等网站都曾经存在此漏洞,入侵者通过修改一句话木马的头部分,可以直接将木马上传。不少网站后台管理使用的是ewebeditor字符编辑器,而这种编辑器有上传漏洞,只对类似于“asp”、“php”、“apsx”这类常见文件做了限制,而没有对“asa”格式的文件做限制,入侵者可以将一句话木马(对于一句话木马的防范,参考:http://www.365master.com/kt_article_show.php?article_id=5312,讲解的比较详细,这里就不详谈了)上传到服务器上,从而获得服务器的WebShell权限。
5、后台管理链接“大大方方”的放在首页上。后台管理入口采用验证码,避免黑客通过程序方式暴力破解。要登录后台上传木马,找到后台管理路径是关键。即使后台管理路径没有在首页上做链接,也会被SQL注入工具扫描出来,因为路径admin、Login等太容易被搜索到了。所以建议后台管理路径要放在深目录下,后台管理目录和登录页的名字也要起的复杂些,不要起admin、houtai等常见名字,这样才不容易被扫描到。另外,网站的数据库也要采取这种措施。
6、后台管理员用户名和密码过于简单。尽管后台管理员用户名和密码经过MD5加密,但还是可以被破解的,类似http://www.xmd5.org这样破解MD5密码的网站有很多,也有象Rainbowcrack、MD5Crack、DeMD5等这类的暴力破解软件,所以密码设置的复杂些也很重要。设置安全的密码(包括会员密码、ftp密码、邮箱密码、数据库密码、后台管理密码等)原则如下:比较安全的密码首先必须是8位长度,其次必须包括大小写、数字字母,如果有特殊控制符最好,最后就是不要太常见。比如说:d9c&v6q0这样的密码就是相对比较安全的,如果再坚持每隔几个月更换一次密码,那就更安全了。另外,还要注意最好及时清空自己的临时文件,上网拨号的时候不选择“保存密码”,在浏览网页输入密码的时候不让浏览器记住自己的密码等。
7、跨站漏洞。跨站漏洞的英文名称为Cross Site Script,即跨站脚本攻击,简称CSS(网页制作中的层叠样式表单也简称为CSS),也有人称之为XSS。它指的是恶意攻击者通过Web页面向数据库或HTML页面中提交恶意的HTML代码,当用户打开有恶意代码的连接或页面时,恶意代码会自动执行,从而达到攻击者的目的。产生这个漏洞的原因是网站开发者在编写程序时没有对用户提交的语句和变量中的HTML代码进行过滤或限制。跨站漏洞的危害性也比较大,并且该漏洞利用方法非常灵活,隐蔽性,利用该漏洞可以:
①得到受害者计算机中的Cookie信息,然后进行Cookie欺骗,成功后,获得对方在网站中的所有权限;
②使计算机用户打开带有木马的网页;
③使入侵者直接在Web系统中得到更高的操作权限;
④入侵者有可能对网站浏览者发起网络钓鱼式攻击。解决这个漏洞的方法同样是过滤或转换用户提交的一些特殊字符,比如:<,>,@,%,&,’,”,\,#等,过滤&和#是为了防止恶意攻击者将字母转换成ASC码提交,另外还要限制用户提交的字符串长度。
8、Cookie欺骗。这种入侵方式通常要上面的跨站漏洞和SQL注入结合使用,入侵者在得到受害者的Cookie后,把自己计算机上的Cookie文件修改为受害者的Cookie,就可以以受害者的身份进入网站。建议登录后台管理程序时使用Session验证。
9、暴库漏洞。(不太熟悉)这个漏洞是在2004年被牛人公布的,该漏洞是因为IIS解码的一个特性产生的,与网站开发者编写的网站代码无关。
入侵者只要在IE中提交类似于http://www.XXX.com%5cnews.asp?id=1(%5c是“\”的十六进制代码)这样的地址,就有可能暴出数据库在服务器上的绝对地址,被入侵者下载到本地浏览。解决这个漏洞方法很简单,在数据库连接文件conn.asp中加上On Error Resume Next就可以了,具体如下: <% on error resume next dim conn dim dbpath set conn=server.createobject("adodb.connection") DBPath = Server.MapPath("fdsasdffdsa/db/fdsafdsafds.mdb") conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath %> 10、数据库安全问题。如果网站使用的是Access数据库,就涉及到数据库有可能被下载的问题。解决这个问题的方法很多,比较简单的做法就是在数据库名前加“#”符号,这样就无法下载该数据库了。如果数据库是SQLServer、Oracle等数据库,建议数据库连接用户一定不要使用Sa等拥有很高权限的用户,一旦数据库的Sa密码泄露了,别说网站的安全无法保证,服务器都有可能被入侵者拿下 。
三、网站安全设置和应对方法
一般都是网站程序存在漏洞或者服务器存在漏洞而被攻击了,网站挂马是每个网站最头痛的问题,解决办法:在程序中很容易找到挂马的代码,直接删除,或则将你没有传服务器的源程序覆盖一次但反反复复被挂就得深入解决掉此问题了。
清马+修补漏洞=彻底解决
所谓的挂马,就是黑客通过各种手段,包括SQL注入,网站敏感文件扫描,服务器漏洞,网站程序0day, 等各种方法获得网站管理员账号,然后登陆网站后台,通过数据库 备份/恢复 或者上传漏洞获得一个webshell。利用获得的webshell修改网站页面的内容,向页面中加入恶意转向代码。也可以直接通过弱口令获得服务器或者网站FTP,然后直接对网站页面直接进行修改。当你访问被加入恶意代码的页面时,你就会自动的访问被转向的地址或者下载木马病毒
清马
1、找挂马的标签,比如有<script language="javascript" src="网马地址"></script>或<iframe width=420 height=330 frameborder=0scrolling=auto src=网马地址></iframe>,或者是你用360或病杀毒软件拦截了网马网址。SQL数据库被挂马,一般是JS挂马。
2、找到了恶意代码后,接下来就是清马,如果是网页被挂马,可以用手动清,也可以用批量清,网页清马比较简单,这里就不详细讲,现在着重讲一下SQL数据库清马,用这一句语句“update 表名 set 字段名=replace(字段名,'aaa','')”, 解释一下这一句子的意思:把字段名里的内容包含aaa的替换成空,这样子就可以一个表一个表的批量删除网马。
在你的网站程序或数据库没有备份情况下,可以实行以上两步骤进行清马,如果你的网站程序有备份的话,直接覆盖原来的文件即可。
修补漏洞(修补网站漏洞也就是做一下网站安全。)
1、修改网站后台的用户名和密码及后台的默认路径。
2、更改数据库名,如果是ACCESS数据库,那文件的扩展名最好不要用mdb,改成ASP的,文件名也可以多几个特殊符号。
3、接着检查一下网站有没有注入漏洞或跨站漏洞,如果有的话就相当打上防注入或防跨站补丁。
4、检查一下网站的上传文件,常见了有欺骗上传漏洞,就对相应的代码进行过滤。
5、尽可能不要暴露网站的后台地址,以免被社会工程学猜解出管理用户和密码。
6、写入一些防挂马代码,让框架代码等挂马无效。
7、禁用FSO权限也是一种比较绝的方法。
8、修改网站部分文件夹的读写权限。
9、如果你是自己的服务器,那就不仅要对你的网站程序做一下安全了,而且要对你的服务器做一下安全也是很有必要了。