Web应用程序和服务的增长已超越了程序开发人员所接受的安全培训和安全意识的范围。Web应用系统的安全风险达到了前所未有的高度。本文详细剖析了Web应用中的常见漏洞及攻击方式,全面分析Web应用系统的安全风险。
Web应用系统是由操作系统和Web应用程序组成的。许多程序员不知道如何开发安全的应用程序,他们没有经过安全编码的培训。他们的经验也许是开发独立应用程序或企业 Web应用程序,这些应用程序没有考虑到在安全缺陷被利用时可能会出现灾难性后果。
Web应用的大多数安全问题都属于下面三种类型之一:
2 服务器向公众提供了不应该提供的服务,导致存在安全隐患。
2 服务器把本应私有的数据放到了公开访问的区域,导致敏感信息泄露。
2 服务器信赖了来自不可信赖数据源的数据,导致受到攻击。
许多Web服务器管理员从来没有从另一个角度来看看他们的服务器,没有对服务器的安全风险进行检查,例如使用端口扫描程序进行系统风险分析等。如果他们曾经这样做了,就不会在自己的系统上运行那么多的服务,而这些服务原本无需在正式提供Web服务的机器上运行,或者这些服务原本无需面向公众开放。另外他们没有修改对外提供服务的应用程序的banner信息,使攻击者容易获取到Web服务器对外提供应用程序的相关版本信息,并根据信息找到相对应的攻击方法和攻击程序。
许多Web应用程序容易受到通过服务器、应用程序和内部已开发的代码进行的攻击。这些攻击行动直接绕过了周边防火墙安全措施,因为端口80或 443(SSL,安全套接字协议层)必须开放,以便让应用程序正常运行。Web应用安全存在非法输入、失效的访问控制、失效的账户和线程管理、跨站脚本攻击、缓冲区溢出、注射攻击、异常错误处理、不安全的存储、拒绝服务攻击、不安全的配置管理等问题。Web应用程序攻击包括对应用程序本身的DoS(拒绝服务)攻击、改变网页内容、SQL注入、上传Webshell以及获取对Web服务的控制权限等。
总之,Web应用攻击之所以与其他攻击不同,是因为它们很难被发现,而且可能来自任何在线用户,甚至是经过验证的用户。Web应用攻击能绕过防火墙和入侵检测产品的防护,企业用户无法发现存在的Web安全问题。
下面为大家分享下简单的WEB安全设置总结:
服务器方面
1、首先是要NTFS格式,并减少user之类用户的权限,FAT32格式的磁盘没有权限设置,也就没有安全可言
2、其次是补丁要全,否则服务器中了木马,那什么都是白搭
3、接着是禁用危险的组建和服务项,这个比较难,如果是简单的应用还好说,如果服务器里跑着比较纠结的程序,很可能就会因为禁止了某些组件或服务导致无法运行,我对这个是比较头痛的,所以做安全还是有必要知道应用所涉及到的权限以及其他方面
4、端口屏蔽,比如普通的WEB服务器开个21和80以及3389就够了
5、加密传输,这个防止嗅探的,不过WIN好像没自带
6、密码安全、桌面锁定软件、命令函数更名等其他小的设置,就和安全意识有关了,作用不会太大,但是比没有要好
IIS安全
1、执行权限这个很重要,不同的站点用不同的匿名用户访问,但是这些用户不能给权限,连组都不用加,而且这写单独访客的权限只在对应的WEB目录有效,其他盘都无效,Everyone之类的大权限统统删掉…而且大部分目录不给写入权,用户权限是WEB安全最重要的一块
2、取消掉没用的API扩展,搞黑的都知道asp传不了就用asa或者cer格式的木马,安全也一样,没用的API扩展统统去掉,比如asp的站点只留一个.asp的,其他扩展删掉,你传了后门也没用
3、取消不必要的WEB扩展,扩展多了漏洞也就多,能少用还是少用吧
权限类
1、站点单独用户权,防止跨站,IIS那说过了,其实这个可以再IIS设置,也可以再硬盘设置,本质都一样,就是NTFS格式的权限设置,而且权限最多给到读取写入,不可能再多了
2、目录与文件的权限设置,图片目录这样的,给个读取权就可以了,而且脚本都可以禁掉,没哪个图片是可执行的吧….文件也一样,HTML的目录和文件,脚本权可以禁掉,普通页面给个读取权就可以了,写入权这玩意很危险,能少给就少给,但是弄错了网站会崩
3、特殊目录的权限,像D盘E盘这样的,删了Everyone就连子目录的也一并删了,但是例如system这样的目录,没有继承权,你删了C盘的某用户,很多子目录里还是有的,要一个一个删,否则就会出现像入侵时候遇到的情况:C盘无法访问,但是用户文件夹和windows目录可以访问
代码安全
1、代码防注入,这个是最多的安全问题,有了数据库就有了注入,防御办法很多,绕过防御的办法也很多,很难一概而论,总之还是靠程序员的安全意识与代码功底
2、上传漏洞的防止,除了注入上传也是个大户,很多入侵依赖上传,解决方案是:减少上传数量,提高验证强度,验证的时候要固定后缀、类型,而不是排除,上传的文件随即命名,自动修改后缀,上传目录不给任何权限!
3、文件命名规则,一些测试文件和敏感文件,名称和目录一定不能让人猜解,或者加入验证,猜解到了文件也进不去
4、第三方代码,这个要少用,尤其是小团队写的,DISCUZ这么牛X的代码都一直爆漏洞,别说其他代码了,原因是这些代码都是公开的,可以从源代码里找漏洞,很危险的
5、其他一些例如防社会工程学漏洞、防爆路径,就比较难说清了,还是安全意识的问题