目录
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
|