Tomcat相关的安全扫描漏洞记录
目录
1.SSLv3漏洞(CVE-2014-3566)
备注:SSLv3漏洞(CVE-2014-3566),该漏洞贯穿于所有的SSLv3版本中,利用该漏洞,黑客可以通过中间人攻击等类似的方式(只要劫持到的数据加密两端均使用SSL3.0),便可以成功获取到传输数据(例如cookies)。
针对此漏洞,需要服务器端和客户端均停用SSLv3协议。
(1)如果开启了https请求,又没有进行特殊设置,就会有这个漏洞,默认是支持SSLv3协议的
(2)如果不需要https请求,直接禁用https请求,sslEnable=false即可。
(3)假设需要https请求,找到server.xml,调整如下:
< Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="keystore/SSL.jks" keystorePass="证书密码"
clientAuth="false" sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2"
ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
TLS_RSA_WITH_AES_128_CBC_SHA256,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
TLS_RSA_WITH_3DES_EDE_CBC_SHA,
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA" />
可以通过 https://wosign.ssllabs.com/在线检测漏洞。
2.检测到错误页面web应用服务器版本信息泄露
备注:Web服务器未能正确处理异常请求导致Web服务器版本信息泄露,攻击者收集到服务器信息后可进行进一步针对性攻击。默认情况,404的页面是tomcat自身的,能看到tomcat的版本号。我们可以通过调整web.xml中配置,来修复。如下在web.xml中添加如下:
<error-page>
<error-code>404</error-code>
<location>/system_error.html</location>
</error-page>
<error-page>
<error-code>403</error-code>
<location>/system_error.html</location>
</error-page>
<error-page>
<error-code>400</error-code>
<location>/system_error.html</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/system_error.html</location>
</error-page>
这样的话,相关错误就跳转到指定的system_error.html页面去了,这个页面,我们可以自己定制化。至于这个html放的位置,要根据你部署项目的情况来说,一般来说,放到根目录即可,和index.html入口文件放到一块。
另外,正式发布的时候,最好把tomcat对应webapp目录下原来自带的项目都删除掉,避免不必要的漏洞扫描麻烦,因为doc项目下也会有tomcat的版本信息,会有泄露服务版本的风险。
3.点击劫持:X-Frame-Options未配置
备注:点击劫持(ClickJacking)是一种视觉上的欺骗手段。攻击者使用一个透明的、不可见的iframe,覆盖在一个网页上,然后诱使用户在该网页上进行操作,此时用户将在不知情的情况下点击透明的iframe页面。通过调整iframe页面的位置,可以诱使用户恰好点击在iframe页面的一些功能性按钮上。
HTTP 响应头信息中的X-Frame-Options,可以指示浏览器是否应该加载一个 iframe 中的页面。如果服务器响应头信息中没有X-Frame-Options,则该网站存在ClickJacking攻击风险。网站可以通过设置 X-Frame-Options 阻止站点内的页面被其他页面嵌入从而防止点击劫持。
这个是页面可以被ifream引用的漏洞,可以通过配置调整web.xml来解决该问题。在tomcat的web.xml文件中,搜:httpHeaderSecurity,然后进行调整,调整如下:
<filter>
<filter-name>httpHeaderSecurity</filter-name>
<filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
<async-supported>true</async-supported>
<init-param>
<param-name>antiClickJackingEnabled</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>antiClickJackingOption</param-name>
<param-value>DENY</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>httpHeaderSecurity</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
红色是可以配置项,如下:
-
DENY:浏览器拒绝当前页面加载任何Frame页面。
-
SAMEORIGIN:页面只能加载入同源域名下的页面。
-
ALLOW-FROM uri:只能被嵌入到指定域名的框架中。
注:如果只配置自己项目所属的web.xml则只限制单个项目,配置tomcat的web.xml,会限制在该tomcat下所有应用。
4.检测到目标服务器启用了OPTIONS方法
备注:OPTIONS方法是用于请求获得由Request-URI标识的资源在请求/响应的通信过程中可以使用的功能选项。通过这个方法,客户端可以在采取具体资源请求之前,决定对该资源采取何种必要措施,或者了解服务器的性能。OPTIONS方法可能会暴露一些敏感信息,这些信息将帮助攻击者准备更进一步的攻击。
可以通过配置web.xml只放开需要的请求协议,例如,我只放开get和post,相关配置如下:
<!--请求协议禁用-->
<security-constraint>
<web-resource-collection>
<web-resource-name>http method security</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>PUT</http-method>
<http-method>DELETE</http-method>
<http-method>HEAD</http-method>
<http-method>OPTIONS</http-method>
<http-method>TRACE</http-method>
</web-resource-collection>
<auth-constraint/>
直接在web.xml中添加如上配置即可。上述是禁用put/delete/head/options/trace这些请求。
配置了之后,通过 curl -v -X OPTIONS http://xxx.xxx.xxx.xxx 进行验证即可。如果返回403禁用,那就是成功了。
参考文献
上一篇: 淘宝网上购物流程及防骗方法介绍
推荐阅读
-
python环境功能强大的pip-audit安全漏洞扫描工具
-
python环境功能强大的pip-audit安全漏洞扫描工具
-
全自动安全漏洞扫描器的低准确率与高性价比观点分析
-
历数几款第三方的Oracle数据库安全及漏洞扫描软件
-
关于安全检测工具扫描项目程序出现安全漏洞的问题?
-
Tomcat相关的安全扫描漏洞记录
-
关于安全检测工具扫描项目程序出现安全漏洞的问题?
-
360网站安全测试时向我的评论表里填写了一些怪异的字符,然后相关文件提示得分99分, [轻微]跨站脚本攻击漏洞,应该没问题吧?
-
360网站安全测试时向我的评论表里填写了一些怪异的字符,然后相关文件提示得分99分, [轻微]跨站脚本攻击漏洞,应该没问题吧?
-
全自动安全漏洞扫描器的低准确率与高性价比观点分析