解决远端www服务支持TRACE请求的几种方式

目录

1.为什么要禁止

漏洞描述:

漏洞危害:

2.怎么判断当前虚机是否存在trace漏洞

3.解决方式

3.1虚机层解决

3.2代码层修改


1.为什么要禁止

漏洞描述:

目标WEB服务器启用了TRACE方法。TRACE方法是HTTP(超文本传输)协议定义的一种协议调试方法,该方法使得服务器原样返回任何客户端请求的内容(可能会附加路由中间的代理服务器的信息),由于该方法原样返回客户端提交的任意数据,因此,可用来进行跨站脚本(XSS)攻击,这种攻击方式又称为跨站跟踪攻击(XST)

漏洞危害:

恶意攻击者可以通过TRACE Method返回的信息了解到网站前端的一些信息,如缓存服务器等,从而为下一步的攻击提供便利。
恶意攻击者可以通过TRACE Method进行XSS攻击
即使网站对关键页面启用了HttpOnly头标记和禁止脚本读取cookie信息,那么通过TRACE Method恶意攻击者还是可以绕过这个限制读取到cookie信息。


2.怎么判断当前虚机是否存在trace漏洞

服务器输入:

curl -v -X TRACE http://ip:端口号

存在trace漏洞,解决完成之后,无200响应即可

3.解决方式

3.1虚机层解决

IIS服务器:

   

     URLScan

Apache服务器:找到相关apach配置目录

1、停止Apache服务(以root权限登录)

                #    cd  /opt/IBM/HTTPServer/bin

                #    ./apachectl stop

2、修改httpd.conf文件

               #   cd  /opt/IBM/HTTPServer/conf

              编辑httpd.conf文件
 
              # 首先,激活rewrite模块(去掉符号#)
              LoadModule rewrite_module modules/mod_rewrite.so

             # 启用Rewrite引擎
             RewriteEngine On
            

             # 对Request中的Method字段进行匹配:^TRACE 即以TRACE字符串开头
             RewriteCond %{REQUEST_METHOD} ^TRACE
             

             # 定义规则:对于所有格式的来源请求,均返回[F]-Forbidden响应
             RewriteRule .* - [F]
 
            对于2.0.55以上版本的apache服务器,有一种更简单的办法:
            TraceEnable off



3、启动Apache服务(以root权限登录)

                #    cd  /opt/IBM/HTTPServer/bin

                #    ./apachectl start

3.2代码层修改

boot项目,内嵌undertow容器解决方案:

pom依赖:

<dependency>
    <groupId>org.springframwork.boot</groupId>
    <artifactId>spring-boot-starter-undertow</artifactId>
</dependency>

前提是,这个类,可以被扫描到,componentScan扫描到

注:定制器怎么调用、加载的,可参考:源码解析

@Configuration
public class UndertowWebServerCustomizerConfig implements WebServerFactoryCustomizer<UndertowServletWebServerFactory>{

    @Override
    public void customize(UndertowServletWebServerFactory factory){
        factory.addDeploymentInfoCustomizers(deploymentInfo ->{
            deploymentInfo.addInitualHandlerChainWrapper(new HandlerWrapper(){
                
                @Override
                public HttpHandler wrap(HttpHandler handler){
                    HttpString[] disallowerHttpMethods = {HttpString.tryFromString("TRACE"),HttpString.tryFromString("TRACK")
                    };

                    return new DisallowedMethodsHandler(handler,disallowerHttpMethods );
                }  
            });
        });

    }

}

其余容器的解决方案如下:

可参考:https://www.cnblogs.com/zcg-cpdd/p/14485370.html

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值