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

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

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

 

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

 

 

[html] view plaincopy print?
  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,今天加了拦截器,成功干掉了这个问题。
[java] view plaincopy print?
  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上面验证,也成功的反应出了正确的消息头。
这里请记住
[java] view plaincopy print?
  1. resp.setStatus(403);  
resp.setStatus(403);

 

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

转载于:https://www.cnblogs.com/firstdream/p/8393316.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/428221.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python爬取知乎问题_python爬取知乎首页问题

我的代码如下&#xff1a;importurllib.requestimporthttp.cookiejarurl_a"https://www.zhihu.com/"url_a"https://www.zhihu.com/explore"url_b"https://www.zhihu.com/signup?next%2F"head... 我的代码如下&#xff1a; import urllib.reques…

微信公众号管理

微信公众号图文编辑 在新建图文时&#xff0c;如果有想插入的视频&#xff0c;可以采取获取视频链接再导入的方法&#xff0c;这样会更高效美观。 摘要和多个图文信息的重叠 新建图文信息&#xff0c;在设置封面旁边有图文摘要&#xff0c;图文摘要会在发送出去的界面旁边有显…

页面模板

找了半天的公众号模板&#xff0c;有点坑&#xff0c;微信公众号更新太快了&#xff0c;几个月不看都找不到使用功能了。 页面模板位置 页面模板在现在的话题专辑&#xff0c;如图: 在页面排版中可以实现我一直想要的菜单整理化功能 可以将文章整理后&#xff0c;发布在菜单…

查找工具locate和find

在工作中我们总是会去查找一些我们需要的内容&#xff0c;然而往往这些东西总是会被大量的数据隐藏。这个时候我们就需要一些查找工具来帮我们处理这些数据帮我们快速的找到我们需要的数据&#xff0c;在我们运维人员的工作过程中我们更须要他来帮我们快速的解决问题。那么今天…

python 输入正方形_Python打印正方形

示例1:#!/usr/bin/python # -*- coding: UTF-8 -*- # 根据输入打印 rows int(raw_input(please input number:)) # 打印正方形 for i in range(0, rows): for k in range(0, rows): print " * ", k 1 i 1 print "\n" print the end; 代码截图1&#xff…

SQL语句输出

select ,print均可以做输出 但如果想用print同时输出字符串和数字时&#xff0c;就需要遇到转换函数convert: declare allstudents int e.g.print’毕业人数为’convert(char,allstudents) 在执行时可能会遇到结果中显示了你的输出信息&#xff0c;而在消息中却没有&#xff0…

.NET面试题解析(04)-类型、方法与继承

转自:http://www.cnblogs.com/anding/p/5248973.html 常见面试题目: 1. 所有类型都继承System.Object吗&#xff1f; 2. 解释virtual、sealed、override和abstract的区别 3. 接口和类有什么异同&#xff1f; 4. 抽象类和接口有什么区别&#xff1f;使用时有什么需要注意的吗&a…

初学python的format之美

初学python的format之美 *区别于C语言的输出语句的是python的输出用的是"print"而不是“printf”。 1.简单的字符串和变量一起输出 python中的替代使用的是“{}” nameinput("请输入一个人的名字") countryinput("请输入一个国家的名字") prin…

python 判断图片是否损坏_检查图片是否损坏、图片后缀是否与实际图片类型对应 - Python...

图片工具 检查图片是否损坏 日常工作中&#xff0c;时常会需要用到图片&#xff0c;有时候图片在下载、解压过程中会损坏&#xff0c;而如果一张一张点击来检查就太不Cool了&#xff0c;因此我想大家都需要一个检查脚本&#xff1b; 测试图片&#xff0c;0.jpg是正常的&#xf…

20.链式队列

运行截图: 完整代码: 1 #include <stdio.h>2 #include <stdlib.h>3 4 #define datatype int5 6 typedef struct queue7 {8 datatype data;9 struct queue *pNext; 10 }Queue,*PQueue; 11 12 //入队 从尾部入,从头部出 13 PQueue enq(PQueue phead, dataty…

1到n阶乘算法的改进

1到n阶乘算法的改进 之前用到过好几次了&#xff0c;但总是很长时间不用就会忘了&#xff0c;所以这次直接把它扔进来了。 之前总是喜欢用双层循环&#xff0c;其实一个单层循环足以&#xff0c;下面将用Python和C两种语言进行展示 C&#xff1a; #include<iostream> …

lua 调用文件中的函数调用_深入Lua:调用相关的指令

前言这一节我们来深入解析与调用相关的指令&#xff0c;这些指令是&#xff1a;OP_CALL 调用OP_TAILCALL 尾调用OP_VARARG 可变参数OP_RETURN 返回解析这些指令的过程中&#xff0c;最重要的是时刻跟踪栈的变化情况。简单调用OP_CALL 的语法是&#xff1a;R(A), ... ,R(AC-2) :…

算法基础——列表查找

whats the 算法 算法&#xff08;Algorithm&#xff09;是指解题方案的准确而完整的描述&#xff0c;是一系列解决问题的清晰指令&#xff0c;算法代表着用系统的方法描述解决问题的策略机制。也就是说&#xff0c;能够对一定规范的输入&#xff0c;在有限时间内获得所要求的输…

Python画板画图之美

Python画板画图之美 *turtle.done() #可让画板窗口停止*1.绘制同切圆 pensize为画笔宽度 circle(n),n为半径大小&#xff0c;两者单位均为像素 import turtle turtle.pensize(2) #画笔宽度&#xff0c;单位为像素 turtle.circle(10) #圆半径&…

python request库_【Python爬虫】Request库入门

什么是爬虫&#xff1f; 网络爬虫&#xff08;又被称为网页蜘蛛&#xff0c;网络机器人&#xff0c;在FOAF社区中间&#xff0c;更经常的称为网页追逐者&#xff09;&#xff0c;是一种按照一定的规则&#xff0c;自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还…

Maven项目下update maven后Eclipse报错:java.lang.ClassNotFoundException: ContextLoaderL

严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListenerat org.apache.catalina.loader.WebappClassLoader.loadClass(Web…

python 隐藏命令行窗口_python如何只执行cmd中的动作,但消除或隐藏cmd窗口 - 小众知识...

【问题】 这里提到的&#xff0c;打包python中&#xff0c;由于python中调用windows的cmd去执行一些动作&#xff0c;所以打包后的python&#xff0c;结果还是会遇到&#xff0c;调用cmd窗口&#xff08;执行了对应的命令后&#xff09;一闪而过。 想要消除此cmd一闪而过的问题…

world文档粘贴图片进去看不到

在大学做实验报告的时候经常要插入一些截图&#xff0c;往往会遇到直接复制粘贴图片会看不到的情况&#xff0c;会很烦&#xff0c;我自己也找了好多方法&#xff0c;下面是我最喜欢的简便方法的一种。 解决方法如下: 可以点击鼠标右键选择段落&#xff0c;将行距修改为1.5倍即…

Ajax 调用webservice 解决跨域请求和发布到服务器后本地调用成功外网失败的问题...

webservice 代码 1 /// <summary>2 /// MESService 的摘要说明3 /// </summary>4 [WebService(Namespace "http://tempuri.org/")]5 [WebServiceBinding(ConformsTo WsiProfiles.BasicProfile1_1)]6 //[System.ComponentModel…

c盘users的用户名怎么改_怎么修改iPhone备份文件夹路径 iPhone C盘路径修改教程【详解】...

iPhone备份文件夹路径怎么修改_iPhone C盘备份路径修改教程 我们都知道iPhone默认的备份是在C盘&#xff0c;不过现在各种视频、照片体积那么大&#xff0c;小小的C盘只怕是负荷不了了&#xff0c;那么有什么办法去修改备份路径呢&#xff0c;下面小编就为大家介绍一下。需要注…