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