当前位置: 首页 > article >正文

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

这个东西去年的安全扫描都没有,今天就扫出来了,非常奇怪的一个东西。好吧,找资料找原因。结果可能应为搜索名词的原因,这个问题在群友的帮助下解决了。

在我理解中servlet只有post和get方法,然后结果怎么出来这么多奇奇怪怪的方法呢。这些方法干啥的呢?

首先找到的是一个禁用http下不安全的方法的博客,具体谁的博客我也没关注。先按照他的方法修改,修改方法也挺简单,改下tomcat的web.xml就好。

  1. <security-constraint>  
  2.     <web-resource-collection>  
  3.         <http-method>HEAD</http-method>  
  4.         <http-method>PUT</http-method>  
  5.         <http-method>DELETE</http-method>  
  6.         <http-method>OPTIONS</http-method>  
  7.         <http-method>TRACE</http-method>  
  8.         <url-pattern>/*</url-pattern>  
  9.     </web-resource-collection>  
  10.     <auth-constraint>  
  11.         <role-name></role-name>  
  12.     </auth-constraint>  
  13. </security-constraint>  
<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>

为啥要加这个呢!找了下web.xml的说明

WebDAV (Web-based Distributed Authoring and Versioning)是基于 HTTP 1.1 的一个通信协议。它为 HTTP 1.1 添加了一些扩展(就是在 GET、POST、HEAD 等几个 HTTP 标准方法以外添加了一些新的方法),使得应用程序可以直接将文件写到 Web Server 上,并且在写文件时候可以对文件加锁,写完后对文件解锁,还可以支持对文件所做的版本控制。这个协议的出现极大地增加了 Web 作为一种创作媒体对于我们的价值。基于 WebDAV  可以实现一个功能强大的内容管理系统或者配置管理系统。 

好吧,这样就理解了,既然是一个通讯协议增加了这些方法,那么按博主的方法改掉就好了。

可惜事与愿违,使用AppScan扫描还是存在这个问题。那么就纳闷了,为啥会出现这样的情况呢?

于是找到了

AppScan问题“HTTP动词篡改导致的认证旁路”的解决方法

这篇博客,这个里面提供的思路不错,看得出来他也配置了web.xml。这样看起来要升级tomcat的节奏?

如果要升级tomcat我讲面临和那个博主一样的问题,公司层面不好解决,而且公司也不只是用tomcat。其他的应该也存在问题。

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

好吧,那么就剩下一个办法,那就是自己写拦截器。拦截住除开get和post的方法。为啥不在web.xml配置这个?因为我试过了配置了之后我自己都登陆不上。

谁配置成功了可以告诉我,我是拿现在这个6.0的tomcat毫无办法。以后考虑升级到9.0。

写拦截器去了,祝福我能成功。

ok,今天加了拦截器,成功干掉了这个问题。

  1. <span style="white-space:pre">    </span> String method = req.getMethod();  
  2.         if(!"GET".equals(method)&&!"POST".equals(method)&&!"HEAD".equals(method))  
  3.         {  
  4.             log.error("The request with Method["+method+"] was forbidden by server!");  
  5.             response.setContentType("text/html;charset=GBK");  
  6.             response.setCharacterEncoding("GBK");  
  7.             resp.setStatus(403);  
  8.         response.getWriter().print("<font size=6 color=red>对不起,您的请求非法,系统拒绝响应!</font>");  
  9.             return;  
  10.         }  
<span style="white-space:pre">	</span> String method = req.getMethod();
        if(!"GET".equals(method)&&!"POST".equals(method)&&!"HEAD".equals(method))
        {
        	log.error("The request with Method["+method+"] was forbidden by server!");
        	response.setContentType("text/html;charset=GBK");
        	response.setCharacterEncoding("GBK");
        	resp.setStatus(403);
		response.getWriter().print("<font size=6 color=red>对不起,您的请求非法,系统拒绝响应!</font>");
        	return;
        }

在burpsuite上面验证,也成功的反应出了正确的消息头。

这里请记住

  1. resp.setStatus(403);  
resp.setStatus(403);

不然是无法通过AppScan的扫描的


http://www.kler.cn/a/422234.html

相关文章:

  • C语言练习作业1204
  • 【QNX+Android虚拟化方案】132 - QNX 系统内存、CPU负载监控
  • 【docker】Overlay网络
  • 【AI系统】昇腾异构计算架构 CANN
  • 深度学习框架PyTorch中的Tensor详解
  • numpy快速入门
  • 力扣35. 搜索插入位置
  • Web API基本认知
  • 系统--线程互斥
  • CTF-PWN: WEB_and_PWN [第一届“吾杯”网络安全技能大赛 Calculator] 赛后学习(不会)
  • 瑞芯微方案主板Linux修改系统串口波特率教程,触觉智能RK3562开发板演示
  • yarn install遇到问题处理
  • 【html网页页面007】html+css制作旅游主题内蒙古网页制作含注册表单(4页面附效果及源码)
  • Python入门(7)--高级函数特性详解
  • GPT vs Claude到底如何选?
  • 跑一下pyapp
  • 基于springboot在线租房和招聘平台源码和论文
  • GNU/Linux - make 60s介绍
  • vue引入并调用electron插件在网页报错Dynamic require of “electron“ is not supported
  • H3C OSPF实验
  • 大疆T100大载重吊运植保无人机技术详解
  • 怎么升级node版本
  • html+css网页设计 旅游 马林旅行社5个页面 兼容响应式
  • PyQt 中的无限循环后台任务
  • 统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
  • Linux中的常用基本指令(下)