web项目中常见漏洞及解决方案

1.X-Frame-Options劫持

漏洞类型:内容欺骗

描述:

点击劫持(ClickJacking)是一种视觉上的欺骗手段。攻击者使用一个透明的、不可见
的iframe,覆盖在一个网页上,然后诱使用户在该网页上进行操作,此时用户将在不知
情的情况下点击透明的iframe页面。通过调整iframe页面的位置,可以诱使用户恰好点
击在iframe页面的一些功能性按钮上。
HTTP 响应头信息中的X-Frame-Options,可以指示浏览器是否应该加载一个 iframe
中的页面。如果服务器响应头信息中没有X-Frame-Options,则该网站存在
ClickJacking攻击风险。网站可以通过设置 X-Frame-Options 阻止站点内的页面被其他
页面嵌入从而防止点击劫持。

解决方案: 

方案1.

修改web服务器配置,添加X-Frame-Options响应头。赋值有如下三种:
1、DENY:不能被嵌入到任何iframe或者frame中。
2、SAMEORIGIN:页面只能被本站页面嵌入到iframe或者frame中。
3、ALLOW-FROM uri:只能被嵌入到指定域名的框架中。
例如:
apache可配置http.conf如下:
<IfModule headers_module> 
Header always append X-Frame-Options "DENY" 
</IfModule> 

方案2.

修改web.xml

<filter>
    <filter-name>httpHeaderSecurity</filter-name>
    <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
    <init-param>
        <param-name>antiClickJackingEnabled</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>antiClickJackingOption</param-name>
        <param-value>sameorigin</param-value>
    </init-param>
    <init-param>
        <param-name>antiClickJackingUri</param-name>
        <param-value>https://baidu.com/</param-value>
    </init-param>
    <async-supported>true</async-supported>
</filter>

<filter-mapping>
    <filter-name>httpHeaderSecurity</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
</filter-mapping>

2.通过HTTP获取远端WWW服务信息

漏洞详情 Server is running 
Version: 
[Apache-Coyote/1.1] 
漏洞类型:远程信息泄露
详细描述:本插件检测远端HTTP Server信息。这可能使得攻击者了解远程系统类型以便进行下一
步的攻击。
解决方案:tomcat服务器修改config/server.xml文件

3.检测到目标URL存在http host头攻击漏洞

命令执行类型:系统命令执行
详细描述:为了方便的获得网站域名,开发人员一般依赖于HTTP Host header。例如,在php里用
_SERVER["HTTP_HOST"]。但是这个header是不可信赖的,如果应用程序没有对host
header值进行处理,就有可能造成恶意代码的传入。
解决方案:web应用程序应该使用SERVER_NAME而不是host header。
在Apache和Nginx里可以通过设置一个虚拟机来记录所有的非法host header。在
Nginx里还可以通过指定一个SERVER_NAME名单,Apache也可以通过指定一个
SERVER_NAME名单并开启UseCanonicalName选项。

tomcat将Host里的name修改为静态的域名,如下:

name将localhost改为静态ip

4.缺少“X-Content-Type-Options” 头、缺少“X-XSS-Protection” 头

《1.》TTP X-XSS-Protection响应标头是Internet Explorer,Chrome和Safari的一项功能,可在检测到反映的跨站点脚本(XSS)攻击时阻止页面加载。虽然这些保护在现代浏览器中很大程度上是不必要的,当站点实现Content-Security-Policy禁用内联JavaScript('unsafe-inline')的强大功能时,它们仍然可以为尚未支持CPS的旧版Web浏览器的用户提供保护。

语法:

X-XSS-Protection: 0
X-XSS-Protection: 1
X-XSS-Protection: 1; mode=block
X-XSS-Protection: 1; report=<reporting-uri>

解决方案:Apache

<IfModule mod_headers.c> 
  Header set X-XSS-Protection "1; mode=block" 
</IfModule>

《2.》描述:X-Content-Type-Options 响应首部相当于一个提示标志,被服务器用来提示客户端一定要遵循在 Content-Type 首部中对MIME类型的设定,而不能对其进行修改。这就禁用了客户端的 MIME类型嗅探行为,换句话说,也就是意味着网站管理员确定自己的设置没有问题。

这个消息首部最初是由微软在 IE 8 浏览器中引入的,提供给网站管理员用作禁用内容嗅探的手段,内容嗅探技术可能会把不可执行的 MIME 类型转变为可执行的 MIME 类型。在此之后,其他浏览器也相继引入了这个首部,尽管它们的 MIME 嗅探算法没有那么有侵略性。

nosniff 只应用于 "script" 和 "style" 两种类型。事实证明,将其应用于图片类型的文件会导致与现有站点冲突。

Header type: Response header

Forbidden header name:no

语法:X-Content-Type-Options: nosniff

指令:nosniff

下面两种情况的请求将被阻止:

  • 请求类型是"style" 但是 MIME 类型不是 "text/css",
  • 请求类型是"script" 但是 MIME 类型不是 JavaScript MIME类型。

tomcat配置“X-Content-Type-Options” 头解决方案:

  打开tomcat/conf/web.xml添加如下代码(低版本tomcat有可能缺少HttpHeaderSecurityFilter.class文件,可以下载高本版tomcat在catalina.jar中):

<filter>
        <filter-name>httpHeaderSecurity</filter-name>
        <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
        <init-param>
            <param-name>antiClickJackingOption</param-name>
            <param-value>SAMEORIGIN</param-value>
        </init-param>
        <async-supported>true</async-supported>
    </filter>
    
    <filter-mapping>
        <filter-name>httpHeaderSecurity</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>


描述缺少“X-Content-Type-Options”头

 

算-Content-Type-Options”头缺少“X-Content-Type-Options”头缺少“X-Content-Type-Options”头

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章