网络安全-使用HTTP动词篡改的认证旁路

分析AppScan扫描报告的时候,发现报告里提示“HTTP动词篡改导致的认证旁路”,于是在网上搜索资料,查到一个不错的博客:http://www.jackieathome.net/archives/363.html] 很详细的说过了生成原因,这里讲述的是针对tomcat7的,因为高版本的tomcat已经意识到了,并修复了。
网上有一种方案是配置tomcat的web.xml,禁用http下不安全的方法:

<security-constraint>
    <web-resource-collection>
        <http-method>HEAD</http-method>
        <http-method>PUT</http-method>
        <http-method>DELETE</http-method>
        <http-method>OPTIONS</http-method>
        <http-method>TRACE</http-method>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name></role-name>
    </auth-constraint>
</security-constraint>

加上以后测试仍然有这个漏洞,没有效果,郁闷。。。。

AppScan问题“HTTP动词篡改导致的认证旁路”的解决方法
这篇博客,这个里面提供的思路不错,看得出来他也配置了web.xml。这样看起来要升级tomcat的节奏?
如果要升级tomcat我讲面临和那个博主一样的问题,公司层面不好解决,而且公司也不只是用tomcat。其他的应该也存在问题。

从上面可以明显看出来这个漏洞和WebDAV 这个东西其实关系并不大,主要问题在于篡改,WebDAV 只是提供了一些方法,这些方法虽然会导致一些修改或者什么的问题。但是如果是篡改了一个不存在的方法,其实结果也是一样。好吧,其实上面那个博客最大的好处不是认识到了问题的根源,而是找到一个测试神器burpsuite。再也不用苦逼的猜了。

好吧,那么就剩下一个办法,那就是自己写过滤器(拦截器也可以)。拦截住除开get和post的方法。为啥不在web.xml配置这个?因为我试过了配置了之后我自己都登陆不上。
谁配置成功了可以告诉我,我是拿现在这个6.0的tomcat毫无办法。以后考虑升级到9.0。
写拦截器去了,祝福我能成功。

package com.zakc.darm.web;

import org.apache.commons.lang3.StringUtils;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HttpFilter implements Filter {
	
	 FilterConfig filterConfig = null;
	private  static  final  long serialVersionUID = 1L;

	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		this.filterConfig = filterConfig;
	}

	@Override
	public void destroy() {
		this.filterConfig = null;
	}

	@Override
	public void doFilter(ServletRequest req, ServletResponse res,
			FilterChain chain) throws IOException, ServletException {

		HttpServletRequest request = (HttpServletRequest) req;
		HttpServletResponse response = (HttpServletResponse) res;
		
		String method = request.getMethod();
		if(!"GET".equals(method) && !"POST".equals(method) && !"HEAD".equals(method)) {
			response.setContentType("text/html;charset=GBK");
			response.setCharacterEncoding("GBK");
			response.setStatus(403);
			response.getWriter().print("<font size=6 color=red>对不起,您的是请求非法,系统拒绝响应!</font>");
			return;
		}else {
		//项目正常跳转路径
			chain.doFilter(request, response);
		
		
		}
	}

}

测试这个安全问题解决了,在这里贴上代码。项目web.xml配置过滤器

<filter>
        <filter-name>HttpCsrfFilter </filter-name>
        <filter-class>com.zakc.darm.web.HttpFilter </filter-class>
    </filter>
    <filter-mapping>
        <filter-name>HttpCsrfFilter </filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值