一.SQL注入漏洞
SQL注入漏洞的危害不仅体现在数据库层面,还有可能危及承载数据库的操作系统;如果SQL注入被用来挂马,还可能用来传播恶意软件等,这些危害包括但不限于:
1、数据库信息泄漏:数据库中存储的用户隐私信息泄露。
2、网页篡改:通过操作数据库对特定网页进行篡改。
3、网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。
4、数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改。
5、服务器被远程控制,被安装后门:经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。
6、破坏硬盘数据,瘫痪全系统。
SQL注入漏洞的解决方案:
1、解决SQL注入漏洞的关键是对所有来自用户输入的数据进行严格检查、对数据库配置使用最小权限原则
2、所有的查询语句都使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。
3、对进入数据库的特殊字符(‘"\<>&*;等)进行转义处理,或编码转换。
4、确认每种数据的类型,比如数字型的数据就必须是数字,数据库中的存储字段必须对应为int型。
5、数据长度应该严格规定,能在一定程度上防止比较长的SQL注入语句无法正确执行。
6、网站每个数据层的编码统一,建议全部使用UTF-8编码,上下层编码不一致有可能导致一些过滤模型被绕过。
7、严格限制网站用户的数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害。
8、避免网站显示SQL错误信息,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判断。
9、在网站发布之前建议使用一些专业的SQL注入检测工具进行检测,及时修补这些SQL注入漏洞。
二.XSS跨站脚本漏洞
1、XSS跨站脚本漏洞的危害包括但不限于:
2、钓鱼欺骗:最典型的就是利用目标网站的反射型跨站脚本漏洞将目标网站重定向到钓鱼网站,或者注入钓鱼JavaScript以监控目标网站的表单输入,甚至发起基于DHTML更高级的钓鱼攻击方式。
3、网站挂马:跨站后利用IFrame嵌入隐藏的恶意网站或者将被攻击者定向到恶意网站上,或者弹出恶意网站窗口等方式都可以进行挂马攻击。
4、身份盗用:Cookie是用户对于特定网站的身份验证标志,XSS可以盗取用户的Cookie,从而利用该Cookie获取用户对该网站的操作权限。如果一个网站管理员用户Cookie被窃取,将会对网站引发巨大的危害。
5、盗取网站用户信息:当能够窃取到用户Cookie从而获取到用户身份时,攻击者可以获取到用户对网站的操作权限,从而查看用户隐私信息。
6、垃圾信息发送:比如在SNS社区中,利用XSS漏洞借用被攻击者的身份发送大量的垃圾信息给特定的目标群体。
7、劫持用户Web行为:一些高级的XSS攻击甚至可以劫持用户的Web行为,监视用户的浏览历史,发送与接收的数据等等。
8、XSS蠕虫:XSS 蠕虫可以用来打广告、刷流量、挂马、恶作剧、破坏网上数据、实施DDoS攻击等。
XSS跨站脚本漏洞的解决方案:
1.假定所有输入都是可疑的,必须对所有输入中的script、iframe等字样进行严格的检查。这里的输入不仅仅是用户可以直接交互的输入接口,也包括HTTP请求中的Cookie中的变量,HTTP请求头部中的变量等。
2.不要仅仅验证数据的类型,还要验证其格式、长度、范围和内容。
3.不要仅仅在客户端做数据的验证与过滤,关键的过滤步骤在服务端进行。
4.对输出的数据也要检查,数据库里的值有可能会在一个大网站的多处都有输出,即使在输入做了编码等操作,在各处的输出点时也要进行安全检查。
5.在网站发布之前建议测试所有已知的威胁。
三.信息泄露漏洞
CGI漏洞大多分为以下几种类型:信息泄露、命 令执行和溢出,因此危害的严重程度不一。信息泄露会暴露服务器的敏感信息,使攻击者能够通过泄露的信息进行进一步入侵;命令执行会对服务器的安全造成直接 的影响,如执行任意系统命令;溢出往往能够让攻击者直接控制目标服务器,危害重大。
四.内容泄露漏洞
1、内容泄露漏洞,会被攻击者利用导致其它类型的攻击,危害包括但不局限于:
2、内网ip泄露:可能会使攻击者渗透进入内网产生更大危害。
4、数据库信息泄露:让攻击者知道数据库类型,会降低攻击难度。
5、网站调试信息泄露:可能让攻击者知道网站使用的编程语言,使用的框架等,降低攻击难度。
6、网站目录结构泄露:攻击者容易发现敏感文件。
7、绝对路径泄露:某些攻击手段依赖网站的绝对路径,比如用SQL注入写webshell。
8、电子邮件泄露:邮件泄露可能会被垃圾邮件骚扰,还可能被攻击者利用社会工程学手段获取更多信息,扩大危害。
五.文件泄露漏洞
1、敏感文件的泄露可能会导致重要信息的泄露,进而扩大安全威胁,这些危害包括但不局限于:
2、帐号密码泄漏:可能导致攻击者直接操作网站后台或数据库,进行一些可能有危害的操作。
3、源码泄露:可能会让攻击者从源码中分析出更多其它的漏洞,如SQL注入,文件上传,代码执行等。
4、系统用户泄露:可能会方便暴力破解系统密码。
页面存在源代码泄露解决方案:
1、配置好服务端语言解析,防止解析失败而导致源码泄露;
2、关闭网站错误调试机制,防止因为报错而导致源码泄露。
3、网站存在备份文件:删除检测出的备份文件,或者将这类文件从网站目录下移走。
4、网站存在包含SVN信息的文件:删除网站目录下的SVN信息,不要使用SVN目录作为网站的目录。
5、网站存在Resin任意文件读取漏洞:删除resin_doc相关目录与文件。
6、网站存在目录浏览漏洞:关闭Web容器(如IIS/Apache等)的目录浏览功能,比如:
a、IIS中关闭目录浏览功能:在IIS的网站属性中,勾去“目录浏览”选项,重启IIS;
b、Apache中关闭目录浏览功能:打开Apache配置文件httpd.conf,查找 “Options Indexes FollowSymLinks”,修改为“ Options -Indexes”(减号表示取消),保存退出,重启Apache。
7、网站存在PHPINFO文件:删除检测出的PHPINFO文件。
8、网站存在服务器环境探针文件:删除检测出的探针文件,比如:iprober.php、phpcheck.php、jspcheck.jsp、DotNetInfo.aspx、aspcheck.asp等。
9、网站存在日志信息文件:删除检测出的日志信息文件。
10、网站存在PHP示例文件:删除PHP示例文件。
11、页面上存在数据库信息:关闭数据库的错误调试机制,防止因为SQL语句错误导致数据库报错信息显示到页面上。
12、页面上存在网站程序的调试信息:关闭网站程序的调试机制,这个机制经常被用于网站的测试调试,该机制能显示出很详细的网站报错信息。