web漏洞-远端WWW服务支持TRACE请求

Posted lzylbp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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配置类来实现也可以。

漏洞扫描设备检测出服务存在漏洞:可通过HTTPS获取远端WWW服务版信息,如何解决?

方法有两种比如:
第一种:IIS中关闭目录浏览功能:在IIS的网站属性中,勾去“目录浏览”选项,重启IIS;
第二种:Apache中关闭目录浏览功能:
打开Apache配置文件httpd.conf。查找 “Options Indexes FollowSymLinks”,修改为“ Options -Indexes”(减号表示取消),保存退出,重启Apache。
参考技术A

漏洞扫描设备检测出服务存在漏洞:

可通过HTTPS获取远端WWW服务版信息,解决办法,比如:

第一种:

IIS中关闭目录浏览功能:在IIS的网站属性中,勾去“目录浏览”选项,重启IIS;

第二种:

Apache中关闭目录浏览功能:

打开Apache配置文件httpd.conf。查找 “Options Indexes FollowSymLinks”,修改为“ Options -Indexes”(减号表示取消),保存退出,重启Apache。

参考技术B

漏洞扫描设备检测出服务存在如下漏洞:可通过HTTPS获取远端WWW服务版信息,如何解决?高手请指教! 漏洞:可通过HTTP获取远端WWW服务版信息,这个漏洞可以通过增加apache的web服务器的配置文件httpd.conf如下两行: ServerSignature off; ServerTokens P...

参考技术C

答:

漏洞扫描设备检测出服务存在如下漏洞:可通过HTTPS获取远端WWW服务版信息,如何解决?高手请指教! 漏洞:可通过HTTP获取远端WWW服务版信息,这个漏洞可以通过增加apache的web服务器的配置文件httpd.conf如下两行: ServerSignature off; ServerTokens P...

1. OpenSSH 相关漏洞  
解决方案 :


升级OpenSSH为最新版本,目前为5.9,首先到官网(http://www.openssh.com/portable.html#http)下载:openssh-5.9p1.tar.gz 

把OpenSSH 上传到服务器,首先检查升级前版本(以下所有操作均在root下完成): 

shell> ssh -V # 此命令会显示OpenSSL、OpenSSH的详细版本号 

首先安装OpenSSH: 

shell> tar xvf openssh-5.9p1.tar.gz 

shell> cd openssh-5.9p1 

shell> sed -i -e ‘s/_5.9//’ version.h 

查询信赖包是否安装: 

shell> rpm -qa | grep zlib #如果能看到zlib、zlib-devel,请继续,否则安装后再继续。 

shell> ./configure –sysconfdir=/etc/ssh 

shell> make && make install 

开始配置: 

shell> /bin/cp /usr/local/sbin/sshd /etc/init.d/sshd 

shell> mkdir /root/ssh_bak  #创建备份目录 

shell> mv /etc/ssh/* /root/ssh_bak/  #移动到备份目录 

shell> /bin/cp /usr/local/etc/* /etc/ssh/ 

shell> sed -e ‘s@/usr/bin/ssh-keygen.*@#@’ /etc/init.d/sshd 

shell> /etc/init.d/sshd restart 

shell> ssh -V 检查是否是 OpenSSHp1 开头,如果是,则OpenSSH升级成功。 

2.远端WEB服务器上存在/robots.txt文件 
解决方案: 


可直接删除(可参考:http://zh.wikipedia.org/wiki/Robots.txt) 

3.ICMP timestamp请求响应漏洞 解决方案: 

shell> echo “1″ > /proc/sys/net/ipv4/icmp_echo_ignore_all 

shell> echo “echo “1″ > /proc/sys/net/ipv4/icmp_echo_ignore_all” >> /etc/rc.local 

Windows Server 2008 参考: http://hi.baidu.com/%BA%D3%C4%CF%CD%F8%C2%B7/blog/item/91076a62831cdb4aebf8f807.html 

Windows Server 2003参考: http://zhidao.baidu.com/question/41992099 

4. Apache Tomcat 相关漏洞  解决方案: 
根据安全厂商给的解决方案链接:http://www.ocert.org/advisories/ocert-2011-003.html  从此页面可得知,有问题的Tomcat版本如下: 

<= 5.5.34, <= 6.0.34, <= 7.0.22,而无安全漏洞的 Tomcat版本如下: 5.5.35, >= 6.0.35, >= 7.0.23 

访问:http://tomcat.apache.org/index.html 下载对应的Tomcat版本,例如经分在使用 Tomcat 5.5.34,下载对应的Tomcat 5.5.35; 

如在使用Tomcat 6.0.34,下载对应的 Tomcat 6.0.35,依此类推。 

4.1  Apache Tomcat sendfile请求安全限制绕过和拒绝服务漏洞:此漏洞也是通过上面的版本升级方式解决。具体请参考官方解释: 

http://tomcat.apache.org/security-5.html#Fixed_in_Apache_Tomcat_5.5.35  和  http://secunia.com/advisories/45232/ 

5.SNMP服务存在可读口令 解决方案: 

可按照漏洞扫描结果中的过程操作,如问困难,可向系统组同事请教。 

6. rpc相关漏洞 解决方案: 

(和项目组确认没有使用NFS后再操作) 

shell> /etc/init.d/portmap stop && chkconfig portmap off 

shell> /etc/init.d/rpcidmapd stop  &&  chkconfig rpcidmapd off 

shell> /etc/init.d/nfslock stop && chkconfig nfslock off 

7.利用SMTP/EXPN命令可猜测目标主机上的用户名 解决方案(待确认): 

8.Oracle数据库服务器CREATE ANY DIRECTORY权限提升漏洞  暂时没有解决方案。 

9. SNMP服务可以通过SNMPV1访问   解决方案(待确认) 

10. Apache HTTP Server相关漏洞  解决方案: 

通过下载使用Apache HTTP Server 2.2.22或以上可解决,详情参考:http://mail-archives.apache.org/mod_mbox/httpd-announce/201201.mbox/browser 

此页面显示了2.2.22或以上这个版本修复了哪些安全漏洞。官方下载地址:http://www.apache.org/dyn/closer.cgi 

10.1 Apache Apache::Status和Apache2::Status模块跨站脚本漏洞 

http://mail-archives.apache.org/mod_mbox/perl-advocacy/200904.mbox/%3Cad28918e0904011458h273a71d4x408f1ed286c9dfbc@mail.gmail.com%3E 

10.2  Apache服务器不完整HTTP请求拒绝服务漏洞[精确扫描]: 

更改httpd.conf中 TimeOut 的值为30秒 

11.远端WWW服务支持TRACE请求 解决方案 请参考第10点。 

12.Oracle tnslsnr没有设置口令  解决方案: 

扫描报告已经明确写出详细步骤,或DBA自己完成。 

13. 猜测出远程FTP服务存在可登录的用户名口令  解决方案: 

确认账号的密码复杂性,例如检查是否存在123456 类似这样的密码,如有简单密码,确认后再修改。 

14.目标主机showmount -e信息泄露 解决方案: 

确认是否有NFS服务在运行,如在运行确认是否关闭,如因有业务影响请在整改报告中明确写出原因(但绝不能外网访问NFS)。 

15.检测到远端rlogin服务正在运行中  解决方案: 

如果是AIX系统,请在整改报告中明确写出原因(但绝不能外网登录)。 

16.远端运行着IDENT服务  解决方案: 

漏洞扫描报告中已经有详细的操作步骤。 

17.检测到远端rsh服务正在运行中   解决方案: 

如果是AIX系统,请在整改报告中明确写出原因(但绝不能外网登录)。 

18.检测到远端rexec服务正在运行中  解决方案: 

漏洞扫描报告中已经有详细的操作步骤。 

19.存在一个可用的远程代理服务器  解决方案待确认。 

20.远程web主机存在目录遍历漏洞   解决方案待确认。 

21. 远程主机允许匿名FTP登录  解决方案: 

修改配置文件,不许出现匿名登录,由于FTP的类型较多,具体的操作步骤可咨询系统组同事。 

22.FTP服务器版本信息可被获取  无需整改(因要修改源码重新编译)。 

23.远端SSH Server允许使用低版本SSH协议  解决方案: 

参考漏洞扫描报告中的操作步骤,或参考第1点直接升级OpenSSH版本(强烈建议)。 

24.检测到远端XDMCP服务正在运行中  解决方案: 

关闭XDMCP服务 

25. PHP相关漏洞  解决方案: 

根据http://www.venustech.com.cn/NewsInfo/124/6459.Html 可得知,受影响版本是: 

PHP 5.2 <= 5.2.13 

PHP 5.3 <= 5.3.2 

目前最好的办法是升级PHP版本。官方最新稳定是:PHP 5.3.10。 而5.2.X 最高版本是:PHP 5.2.17

以上是关于web漏洞-远端WWW服务支持TRACE请求的主要内容,如果未能解决你的问题,请参考以下文章

web开发常见的漏洞都有哪些?

常见36种WEB渗透测试漏洞描述及解决方法-不安全HTTP方法

如何禁用ActiveMQ服务器的trace方法

HTTP Trace跨站攻击漏洞修复

Web安全测试漏洞场景

web安全CSRF&SSRF&内网探针&漏洞利用