web漏洞-远端WWW服务支持TRACE请求
漏洞描述
远端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请求相关推荐
- “远端www服务支持TRACE请求“验证及修复jetty,非框架,内嵌版本
远端www服务支持TRACE请求 最近有个项目被扫出来这个漏洞,使用了jetty来做后台访问,在网上查了很多资料也没有找到如何去过滤这个请求 自定义拦截器 自己实现了一个拦截TRACE请求然后返回40 ...
- 远端WWW服务支持TRACE请求
TOMCAT 在tomcat的web.xml配置文件中,对不安全的方法进行拦截,禁用TRACE,HEAD,PUT,DELETE,OPTIONS请求方式: <security-constraint ...
- 远端WWW服务支持TRACE请求漏洞修复(linux)
系统版本 CentOS Linux release 7.4.1708 (Core) 内核版本 Linux ngiosSvr 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 2 ...
- 扫描器可发现远程服务器,服务器扫描发现漏洞-可通过HTTP获取远端WWW服务信息...
可通过HTTP获取远端WWW服务信息[Microsoft-IIS/7.5] 漏洞描述 本插件检测远端HTTP Server信息.这可能使得攻击者了解远程系统类型以便进行下一步的攻击. 解决方案 NSF ...
- web基础漏洞之CSRF(跨站请求伪造漏洞)
cookie session token 我觉得在开始学习CSRF之前应该先学会区分这三种东西:cookie session token cookie: Cookie,有时也用其复数形式 Cookie ...
- 面向Java应用的快速Web服务支持工具 - Netrifex
面向Java应用的快速Web服务支持工具 - Netrifex Proxisoft今天宣布Netrifex 1.0版. Netrifex可以立即把Web Services添加到现有的Java SE和J ...
- 跨站点请求伪造_十大常见web漏洞——跨站点请求伪造(CSRF)
CSRF介绍 什么是CSRF呢?我们直接看例子. https://mp.toutiao.com/profile_v3/graphic/preview?do=delete&pgc_id=6829 ...
- 基于 cz88 纯真IP数据库开发的 IP 解析服务 - 支持 http 协议请求或 rpc 协议请求,也支持第三方包的方式引入直接使用
cz88 基于 cz88 纯真IP数据库开发的 IP 解析服务 - 支持 http 协议请求或 rpc 协议请求,也支持第三方包的方式引入直接使用 Go 语言编写 进程内缓存结果,重复的 ip 查询响 ...
- SpringCloud微服务前后端分离开发中出现的弱智问题之(不支持当前请求方法)
SpringCloud微服务前后端分离开发中出现的弱智问题之(不支持当前请求方法) 问题背景 问题解决 为什么说这是一个弱智问题,因为这多是编写代码不仔细造成的. 问题背景 当当后台API发布的接口与 ...
最新文章
- mysql linux 中文乱码_解决MySQL中文乱码的问题
- 一个生产的shell脚本
- build libusb for Android
- 微信企业号开发之如何建立连接
- 前端学习(914):offerset和style区别
- eclipse 快捷键及插件
- python 模块
- github上传时出现error: src refspec master does not match any解决办法
- POJ - 2485(最小生成树.prime)
- 深入Node.js的模块机制
- deepin驱动精灵_Deepin 15.4.1 X64官方正式版(64位)
- 计算机网络发现已关闭啥意思,电脑显示网络发现已关闭,是什么意思?怎样解决问题?...
- 想知道表格文字识别怎么弄?分享2个表格识别的方法
- Adaptive Object Detection Using Adjacency and Zoom Prediction
- 有特点的3D网络拓扑图
- 无法打开内核设备“\\.\VMCIDev\VMX”: 操作成功完成。是否在安装 VMware Workstation 后重新引导? 模块“DevicePowerOn”启动失败。 未能启动虚拟机。
- 计算机应用基础心得体会300字,网络远程学习的心得体会
- python 求向量模长(一范二范)
- 兔将十年大作《赤狐书生》特效解析:青蛙精篇
- MATLAB—离散一元、二元、多元函数求导求梯度(二维、三维、多维空间)(diff和gradient)