漏洞描述

远端WWW服务支持TRACE请求。RFC 2616介绍了TRACE请求,该请求典型地用于测试HTTP协议实现。

漏洞危害

攻击者利用TRACE请求,结合其它浏览器端漏洞,有可能进行跨站脚本攻击,获取敏感信息,比如cookie中的认证信息,这些敏感信息将被用于其它类型的攻击。

验证方法

如果目标存在服务端支持TRACE请求,验证方法如下

1.通过抓包软件burpsuite,重发数据

将请求方法修改为TRACE,相应包中返回 如图所示,则存在改漏洞

2.模拟trace请求,假设报漏洞的端口是8081:

curl -v -X TRACE -I localhost:8081

如果回显为,如下所示,则该端口服务支持trace请求,漏洞存在。

< HTTP/1.1 200 OK
HTTP/1.1 200 OK
< Content-Type: message/http
Content-Type: message/http

如果回显为,如下所示,则该漏洞不存在。

< HTTP/1.1 403 Forbidden
< Content-Type: text/html; charset=iso-8859-1
或者回显为
< HTTP/1.1 405 Method Not Allowed
< Content-Type: text/html; charset=iso-8859-1

加固方案

1.对于apache:
对于2.0.55以上版本的apache服务器,
在httpd.conf尾部添加如下指令后重启apache即可:

TraceEnable off

其它版本的Apache服务器可编辑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]

注:可以在httpd.conf里搜索VirtualHost确定虚拟主机的配置文件。

2.对于非内嵌tomcat:
直接修改tomcat根目录conf目录下的web.xml,
在文件末尾(</web-app>之前)添加如下代码:

<security-constraint>
<web-resource-collection>
<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>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>

注:在tomcat的在server.xml中先允许TRACE请求,再在web.xml中禁用TRACE,以此禁用TRACE请求.

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" allowTrace="true"redirectPort="8443" />

3.对于spring boot内嵌tomcat:

配置TomcatConfig.java

 1 import org.apache.catalina.Context;2 import org.apache.tomcat.util.descriptor.web.SecurityCollection;3 import org.apache.tomcat.util.descriptor.web.SecurityConstraint;4 import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory;5 import org.springframework.boot.context.embedded.tomcat.TomcatContextCustomizer;6 import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;7 import org.springframework.context.annotation.Bean;8 import org.springframework.context.annotation.Configuration;9
10 @Configuration
11 public class TomcatConfig {
12
13     @Bean
14     public EmbeddedServletContainerFactory servletContainer() {
15         TomcatEmbeddedServletContainerFactory tomcatServletContainerFactory = new TomcatEmbeddedServletContainerFactory();
16         tomcatServletContainerFactory.addContextCustomizers(new TomcatContextCustomizer(){
17             @Override
18             public void customize(Context context) {
19                 SecurityConstraint securityConstraint  = new SecurityConstraint();
20                 securityConstraint.setUserConstraint("CONFIDENTIAL");
21                 SecurityCollection collection = new SecurityCollection();
22
23                 collection.addPattern("/*");
24                 collection.addMethod("HEAD");
25                 collection.addMethod("PUT");
26                 collection.addMethod("DELETE");
27                 collection.addMethod("OPTIONS");
28                 collection.addMethod("TRACE");
29                 collection.addMethod("COPY");
30                 collection.addMethod("SEARCH");
31                 collection.addMethod("PROPFIND");
32                 securityConstraint .addCollection(collection);
33                 context.addConstraint(securityConstraint );
34             }
35         });
36
37         //禁用TRACE请求
38         tomcatServletContainerFactory.addConnectorCustomizers(connector -> {
39             connector.setAllowTrace(true);
40         });
41         return tomcatServletContainerFactory;
42     }
43 }

4.对于非内嵌式Jetty:

在jetty.xml中增加配置:

1 <security-constraint>
2     <web-resource-collection>
3         <web-resource-name>NoTrace</web-resource-name>
4         <url-pattern>/*</url-pattern>
5         <http-method>TRACE</http-method>
6     </web-resource-collection>
7     <auth-constraint></auth-constraint>
8 </security-constraint>

5.对于Springboot内嵌式Jetty:

由于这种情况没有实际操作过,代码参考其他博主。采用拦截器来过滤所有的trace请求->启动类增加配置来实现,或者和内嵌式tomcat一样直接添加Jetty配置类来实现也可以。

web漏洞-远端WWW服务支持TRACE请求相关推荐

  1. “远端www服务支持TRACE请求“验证及修复jetty,非框架,内嵌版本

    远端www服务支持TRACE请求 最近有个项目被扫出来这个漏洞,使用了jetty来做后台访问,在网上查了很多资料也没有找到如何去过滤这个请求 自定义拦截器 自己实现了一个拦截TRACE请求然后返回40 ...

  2. 远端WWW服务支持TRACE请求

    TOMCAT 在tomcat的web.xml配置文件中,对不安全的方法进行拦截,禁用TRACE,HEAD,PUT,DELETE,OPTIONS请求方式: <security-constraint ...

  3. 远端WWW服务支持TRACE请求漏洞修复(linux)

    系统版本 CentOS Linux release 7.4.1708 (Core) 内核版本 Linux ngiosSvr 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 2 ...

  4. 扫描器可发现远程服务器,服务器扫描发现漏洞-可通过HTTP获取远端WWW服务信息...

    可通过HTTP获取远端WWW服务信息[Microsoft-IIS/7.5] 漏洞描述 本插件检测远端HTTP Server信息.这可能使得攻击者了解远程系统类型以便进行下一步的攻击. 解决方案 NSF ...

  5. web基础漏洞之CSRF(跨站请求伪造漏洞)

    cookie session token 我觉得在开始学习CSRF之前应该先学会区分这三种东西:cookie session token cookie: Cookie,有时也用其复数形式 Cookie ...

  6. 面向Java应用的快速Web服务支持工具 - Netrifex

    面向Java应用的快速Web服务支持工具 - Netrifex Proxisoft今天宣布Netrifex 1.0版. Netrifex可以立即把Web Services添加到现有的Java SE和J ...

  7. 跨站点请求伪造_十大常见web漏洞——跨站点请求伪造(CSRF)

    CSRF介绍 什么是CSRF呢?我们直接看例子. https://mp.toutiao.com/profile_v3/graphic/preview?do=delete&pgc_id=6829 ...

  8. 基于 cz88 纯真IP数据库开发的 IP 解析服务 - 支持 http 协议请求或 rpc 协议请求,也支持第三方包的方式引入直接使用

    cz88 基于 cz88 纯真IP数据库开发的 IP 解析服务 - 支持 http 协议请求或 rpc 协议请求,也支持第三方包的方式引入直接使用 Go 语言编写 进程内缓存结果,重复的 ip 查询响 ...

  9. SpringCloud微服务前后端分离开发中出现的弱智问题之(不支持当前请求方法)

    SpringCloud微服务前后端分离开发中出现的弱智问题之(不支持当前请求方法) 问题背景 问题解决 为什么说这是一个弱智问题,因为这多是编写代码不仔细造成的. 问题背景 当当后台API发布的接口与 ...

最新文章

  1. mysql linux 中文乱码_解决MySQL中文乱码的问题
  2. 一个生产的shell脚本
  3. build libusb for Android
  4. 微信企业号开发之如何建立连接
  5. 前端学习(914):offerset和style区别
  6. eclipse 快捷键及插件
  7. python 模块
  8. github上传时出现error: src refspec master does not match any解决办法
  9. POJ - 2485(最小生成树.prime)
  10. 深入Node.js的模块机制
  11. deepin驱动精灵_Deepin 15.4.1 X64官方正式版(64位)
  12. 计算机网络发现已关闭啥意思,电脑显示网络发现已关闭,是什么意思?怎样解决问题?...
  13. 想知道表格文字识别怎么弄?分享2个表格识别的方法
  14. Adaptive Object Detection Using Adjacency and Zoom Prediction
  15. 有特点的3D网络拓扑图
  16. 无法打开内核设备“\\.\VMCIDev\VMX”: 操作成功完成。是否在安装 VMware Workstation 后重新引导? 模块“DevicePowerOn”启动失败。 未能启动虚拟机。
  17. 计算机应用基础心得体会300字,网络远程学习的心得体会
  18. python 求向量模长(一范二范)
  19. 兔将十年大作《赤狐书生》特效解析:青蛙精篇
  20. MATLAB—离散一元、二元、多元函数求导求梯度(二维、三维、多维空间)(diff和gradient)

热门文章

  1. Access 密码破解原理- -
  2. 高端访谈实录:访思科英国CEO菲尔·史密斯
  3. p2p银行充值功能模块 支付宝调用
  4. Mybase使用教程-不古出品
  5. android中加载Gif图片
  6. 通用 OCR API 接口
  7. D3 天眼查 股权穿透 股权结构
  8. 图像处理之Hobject与Mat互转
  9. MTK 虚拟 sensor bring up (pick up) sensor1.0
  10. 音乐及游戏爱好者的福利,小鹏P7上新网易云及阴阳师,赶快看看吧