您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 网站策划/UE > 网站常见漏洞及解决办法
网站常见漏洞以及解决办法1问题远端请求解决办法①开启Apache的mod_rewrite功能:在Apahce的配置文件httpd.conf中把#LoadModulerewrite_modulemodules/mod_rewrite.so前的#去掉在httpd.conf中找到下面这段Directory/OptionsFollowSymLinksAllowOverrideNone/Directory将AllowOverrideNone改成AllowOverrideALL这样Apache的mod_rewrite就开启了。②在httpd.conf最后加上RewriteEngineonRewriteCond%{REQUEST_METHOD}^(TRACE|TRACK)RewriteRule.*-[F]禁用URL,返回403HTTP状态码mod_rewrite模块提供了一个基于规则的(使用正则表达式分析器的)实时转向URL请求的引擎。支持每个规则可以拥有不限数量的规则以及附加条件规则的灵活而且强大的URL操作机制。此URL操作可以取决于各种测试,比如服务器变量、环境变量、HTTP头、时间标记,甚至各种格式的用于匹配URL组成部分的查找数据库。RewriteEngineOnRewriteCond%{HTTP_HOST}^xxx\.com$[NC]RewriteRule^/(.*)$[R=301,L]对于unix,RedHatLinux运行的Apache是编译好的程序,提示信息被编译在程序里,要隐藏这些信息需要修改Apache的源代码,然后,重新编译安装程序,以替换里面的提示内容。2问题远端HTTP服务器类型和版本信息泄漏解决办法㈠apache版本信息泄漏解决方法:在配置文件Apache2.2/conf/httpd.conf中加入ServerTokensProd[uctOnly](等级[Prod,Major,Minor,Min,OS])ServerSignatureOff重启apache现在http头里面只看到:Server:Apache[/2,/2.0,/2.0.41,/2.0.41(Unix)]㈡服务器类型泄漏解决办法:Tomcat:①方法一:修改ServerInfo.properties里的版本信息Tomcat4\5:tomcat_home\server\lib\catalina.jarorg\apache\catalina\util\ServerInfo.propertiesTomcat6:tomcat_home\lib\catalina.jarorg\apache\catalina\util\ServerInfo.properties操作:用WinRAR打开catalina.jar找到ServerInfo.properties解压并修改再拖入即可。②方法二:使用WEB容器捕获异常进行处理在web.xml文件头部加上:error-pageexception-typejava.lang.Exception/exception-typelocation/system_error.jsp/location/error-pageerror-pageerror-code404/error-codelocation/system_error.jsp/location/error-pageerror-pageerror-code400/error-codelocation/system_error.jsp/location/error-pageerror-pageerror-code500/error-codelocation/system_error.jsp/location/error-page3问题①ApacheMPMworker.c远程拒绝服务漏洞。Apache2的worker模块在处理中止的TCP连接时存在内存泄漏,远程攻击者可以反复触发这种情况耗尽所有可用的内存,最终导致拒绝服务。②Apache.htaccess本地PCRE整数溢出权限提升漏洞。PCRE在处理字符类时存在缓冲区溢出漏洞,如果用户发送了codepoint大于255的超长UTF-8字符类的话,就可能触发这个溢出,导致执行任意指令。③Apachemod_imagemap和mod_imap模块跨站脚本漏洞。Apache的mod_imagemap和mod_imap模块中没有正确地过滤某些用户输入,允许远程攻击者提交恶意的HTTP请求执行跨站脚本攻击。④Apachemod_rewrite模块单字节缓冲区溢出漏洞。Apache的mod_rewrite模块在转义绝对URI主题时存在单字节缓冲区溢出漏洞,攻击者可能利用此漏洞在服务器上执行任意指令。mod_rewrite模块的escape_absolute_uri()函数分离LDAPURL中的令牌时,会导致在字符指针数组以外写入指向用户控制数据的指针,这样就可能完全控制受影响的主机。解决办法这些问题都是由于Apache自身的缺陷引起的。解决方法:①打apache补丁可解决②升级apache到最新版本。建议最好用升级apache到最新版本。4问题SQL注入攻击分析SQL注入的原理:就是从客户端提交特殊的代码,从而收集程序及服务器的信息,从而获取你想到得到的资料。1、单引号’法。通过错误提示,判断获取服务器的信息。2、经典的1=1、1=2测试法。这只是传入参数是数字型的时候用的判断方法。3、判断数据库类型及注入方法。anduser0user是SQLServer的一个内置变量,它的值是当前连接的用户名,类型为nvarchar。拿一个nvarchar的值跟int的数0比较,系统会先试图将nvarchar的值转成int型,当然,转的过程中肯定会出错,SQLServer的出错提示是:将nvarchar值”abc”转换数据类型为int的列时发生语法错误,呵呵,abc正是变量user的值,这样,不废吹灰之力就拿到了数据库的用户名。防止1、数据库访问用预定义会话PreparedStatement代替Statement从根本上防止SQL截断2、后台过滤(为输入的信息提供反馈信息,只要验证数据格式/长度正确就可以了,不必子自作主张的去过滤/转义各种特殊符号)3、前台过滤(这只是一个幌子,谁也不能指望前台过滤能防止什么,不过可以减少服务器压力)4、敏感信息提交(比如帐号密码)设置验证码(因为除了注入,还有穷举)5、数据库安全设置(每种数据库的弱点不太一样)。Java也提供了防止SQL注入攻击的方法。由于JDBC都是基于接口的设计,所以对于不同的数据库,代码基本一样。Connectionconn=DriverManager.getConnection(url,user,password);Stringquery=select*fromtable_userwhereuser_name=?;PreparedStatementpreState=conn.prepareStatement(query);preState.setString(1,aaa);ResultSetrs=preState.executeQuery();查询了表table_user中字段user_name为aaa的数据,由于采用了参数化查询的方式,JDBC底层已经防止了SQL注入攻击。在Java中,对于所有的数据库,参数化查询的方式都和上面类似,区别在于数据库连接字符串。5问题Apache升级过程升级全过程①从网上下载mod_jk.so/1.2.27(apache和tomcat的连接文件)②备份Apache目录下的conf目录及modules目录下的mod_jk.so/1.2.14文件③停掉Apache的相关服务④卸栽Apache并把原来的apache目录整体删除⑤安装apache_2.2.11。用IE浏览器访问Apache安装后的网站,要能访问Apache的默认首页。⑥把mod_jk.so文件拷贝到%Apache_Home%/modules目录下。⑦配置虚拟主机,包括Apache、Tomcat。对于Apache版本升级操作,建议参照原来的http.conf文件,改动新的http.conf文件几个地方即可。强烈建议:先备份系统默认安装后的http.conf文件。主要修改位置:LoadModulejk_modulemodules/mod_jk.soJkWorkersFileD:/ApacheGroup/Tomcat/conf/workers.propertiesJkLogFileD:/ApacheGroup/Tomcat/logs/mod_jk2.logJkLogLevelinfo#默认服务ServerName默认首页设置DirectoryIndexindex.htmlindex.html.varindex.jspindex.htmindex.do#禁止访问目录设置Directory~/WEB-INF/AllowOverrideNoneDenyfromAll/DirectoryNameVirtualHost××.××.××.××:80#虚拟目录配置VirtualHost××.××.××.××:80ServerName××.gov.cn#域名地址DocumentRootD:/??/??#工程路径#apache日志文件配置ErrorLoglogs/××.gov.cn-error_logCustomLoglogs/××.gov.cn-access_logcommonJkMount/servlet/*ajp13JkMount/*.jspajp13/VirtualHostVirtualHost××.××.××.××:80ServerName××.com#域名地址DocumentRootD:/??/??#工程路径#apache日志文件配置ErrorLoglogs/××.gov.cn-error_log86400480CustomLoglogs/××.gov.cn-access_log86400480commonJkMount/servlet/*ajp13JkMount/*.jspajp13/VirtualHostVirtualHost××.××.××.××:80ServerName××.××.gov.cn#域名地址DocumentRootD:/??/??#工程路径#apache日志文件配置ErrorLoglogs/××.gov.cn-error_logCustomLoglogs/××.gov.cn-access_logcommonJkMount/servlet/*ajp13JkMount/*.jspajp13JkMount/*.doajp13JkMount/*.ftlajp13JkMount/*.htmajp13JkMount/*.jsajp13JkMount/*.dwrajp13/VirtualHost远端HTTP服务器类型和版本信息泄漏1、ServerTokens指令语法-ServerTokensMajor|Minor|Min[imal]|Prod[uctOnly]|OS|Full默认值-ServerTokensFull这个指令控制了服务器回应给客户端的Server:应答头是否包含关于服务器操作系统类型和编译进的模块描述信息。ServerTokensProd[uctOnly]服务器会发送(比如):Server:ApacheServerTokensMajor服务器会发送(比如):Server:Apache/2ServerTokensMinor服务器会发送(比如):Server:Apache/2.0ServerTokensMin[imal]服
本文标题:网站常见漏洞及解决办法
链接地址:https://www.777doc.com/doc-2070233 .html