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请求的主要内容,如果未能解决你的问题,请参考以下文章