搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
在线问答5
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
Hystrix相关问题源码分析_熔断hystric后恢复不了
2
从零构建ELK日志分析平台:Logstash7.9将日志解析到ES&用Kibana日志分析_logstash without a matching listener
3
Python酷库之旅-第三方库Pandas(055)
4
计算机中的定点二进制 浮点数二进制
5
【AI大模型应用开发】【补充知识】文本向量化与向量相似度(含Python代码)_文本的向量化流程和相似度对比
6
【鸿蒙 HarmonyOS NEXT】@ohos.promptAction (弹窗)_鸿蒙 promptaction
7
探索文本质量检测新境界:TextFlint
8
人工智能时代孩子该学点什么?_13146991102
9
three.js入门学习
10
软件开发人员如何有效提问_软件研发问题提问
当前位置:
article
> 正文
java禁止不需要的HTTP 方 法
作者:在线问答5 | 2024-08-18 18:54:21
赞
踩
java 如果服务器不需要支持webdav请禁用webdav
项目安全扫描,报告:
启用了不安全的HTTP 方法
安全风险:
可能会在Web 服务器上上载、修改或删除Web 页面、脚本和文件。
可能原因:
Web 服务器或应用程序服务器是以不安全的方式配置的。
修订建议:
如果服务器不需要支持WebDAV,请务必禁用它,或禁止不必要的HTTP 方法。
WebDAV (Web-based Distributed Authoring and Versioning)是基于 HTTP 1.1 的一个通信协议。它为 HTTP 1.1 添加了一些扩展(就是在 GET、POST、HEAD 等几个 HTTP 标准方法以外添加了一些新的方法),使得应用程序可以直接将文件写到 Web Server 上,并且在写文件时候可以对文件加锁,写完后对文件解锁,还可以支持对文件所做的版本控制。这个协议的出现极大地增加了 Web 作为一种创作媒体对于我们的价值。基于 WebDAV 可以实现一个功能强大的内容管理系统或者配置管理系统。
方法简介:
除标准的GET和POST方法外,HTTP请求还使用其他各种方法。许多这类方法主要用于完成不常见与特殊的任务。如果低权限用户可以访问这些方法,他们就能够以此向应用程序实施有效攻击。以下是一些值得注意的方法:
PUT 向指定的目录上载文件
DELETE 删除指定的资源
COPY 将指定的资源复制到Destination消息头指定的位置
MOVE 将指定的资源移动到Destination消息头指定的位置
SEARCH 在一个目录路径中搜索资源
PROPFIND 获取与指定资源有关的信息,如作者、大小与内容类型
TRACE 在响应中返回服务器收到的原始请求
其中几个方法属于HTTP协议的WebDAV(Web-based Distributed Authoring and Versioning)扩展。
渗透测试步骤:
使用OPTIONS方法列出服务器使用的HTTP方法。注意,不同目录中激活的方法可能各不相同。
许多时候,被告知一些方法有效,但实际上它们并不能使用。有时,即使OPTIONS请求返回的响应中没有列出某个方法,但该方法仍然可用。
手动测试每一个方法,确认其是否可用。
使用curl测试:
curl -v -X OPTIONS http://www.example.com/test/
查看响应的 Allow: GET, HEAD, POST, PUT, DELETE, OPTIONS
curl -v -T test.html http://www.example.com/test/test.html
看是否能上载来判断攻击是否生效。
找一个存在的页面,如test2.html
curl -X DELETE http://www.example.com/test/test2.html
如果删除成功,则攻击有效。
解决方案:
如tomcat,配置web.xml
<security-constraint>
<web-resource-collection>
<web-resource-name>fortune</web-resource-name>
<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即可完成。
以上的代码添加到某一个应用中,也可以添加到tomcat的web.xml中,区别是添加到某一个应用只对某一个应用有效,如果添加到tomcat的web.xml中,则对tomcat下所有的应用有效。
配置web.xml来限制对某些servlet的请求
有时我们只希望通过认证的用户才能请求某些servlet的话,就可以在web.xml中来进行相应的配置,来达到此目的。
这就要用到<security-constraint></security-constraint>元素。
对于tomcat,中web.xml使用security-constraint元素需要在位于<Tomcat-installation-directory>/conf/tomcat-users.xml的XML文件中创建用户名和密码。比如下面的这个tomcat-users.xml文件:
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,manager"/>
<user username="admin" password="admin" roles="admin"/>
</tomcat-users>
此XML片段包括一个tomcat-users根元素,它包含一个或多个role和user元素。
然后在Web应用程序的web.xml中创建security-constraint、login-config和security-role元素。
<security-constraint>
<web-resource-collection>
<web-resource-name>HelloServlet</web-resource-name>
<url-pattern>/HelloServlet</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<description>This applies only to the "tomcat" security role</description>
<role-name>admin</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
<security-role>
<role-name>admin</role-name>
</security-role>
其中security-constraint元素包含一个或多个web-resource-collection元素,它是描述Web应用程序中的哪些web资源受到指定安全限制的保护。http-method元素指定安全限制覆盖的HTTP方法。上面的例子中,当我们对/HelloServlet的GET或POST请求时将触发配置的安全机制。
auth-constraint元素用于描述允许访问Web组件的安全角色。此例中安全角色的例子有tomcat、manager、admin。而只有当作为admin角色的用户才可以访问HelloServlet。
Web应用程序通过login-config元素来认证用户,并确认该用户是否为正确的角色。
longin-config包含的transport-guarantee子元素用来指定认证方法,BASIC是一种常见的Web认证方式,浏览器给用户提示一个对话框,要求输入用户名和密码,随后Tomcat将给出的用户名和密码与tomcat-users.xml中的用户名和密码进行比较,然后使用前面的security-constraint配置来确定用户是否可访问受保护的servlet。
(除BASIC外,还可以是FORM、CLIENT-CERT、DIGEST等)
其实这种认证方法实际上有两个步骤:
1、检查提供的用户名和密码是否正确。
2、判断用户是否映射到特定的安全角色。例如,用户可能提供了正确的用户名和密码,但没有映射到特定的安全角色,也将被禁止访问特定的Web资源。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/在线问答5/article/detail/998715
推荐阅读
article
基于
java
的ssm框架
在线
购书
商城
系统
_
购物车
书籍
java
...
本课题是根据用户的需要以及网络的优势建立的一个
在线
购书
商城
系统
,来满足用户网络查看、购买所需图书的需求。本
在线
购书
商城
系...
赞
踩
article
python
、
java
、
Go哪个前景好?_
go
语言
和
java
哪个更有前途...
01 Python难度:★欢迎度:★★★★☆创始于:1991年学完之后可以干什么:web开发
、
应用开发
、
大数据
、
数据挖掘...
赞
踩
article
Java
ExecutorService
:
你真的了解
它
吗?...
Java
ExecutorService
是
Java
并发编程中一个强大的工具,
它
提供了一种管理线程生命周期和执行多个异步任...
赞
踩
article
java
数据
权限
中间件
_
位运算+
数据
库两种方式实现
中间件
权限
操作...
1
数据
库实现
权限
操作既是管理又是超级管理员的需要五表关联1.1 四表联动1.2 表设计models.py#
权限
系统四...
赞
踩
article
Java
基础——
Scanner
类_
java
scanner
...
本文介绍了
Scanner
类相关的知识。_
java
scanner
java
scanner
...
赞
踩
article
Docker 部署
Jenkins
Jenkins
下载插件失败(
java
.io.
IOException
...
Docker
Jenkins
插件 下载 失败 版本_
jenkins
(2.361.4)
or
higher
requi...
赞
踩
article
Eclipse
启动
过程 _
eclipse
4.6 (
neon
)
java
ee 安装了怎么
启动
使用...
一般安装JDK的时候,会同时在系统目录下也安装一个JRE环境。开始我把安装在系统目录下的JRE环境卸载了,在环境变量中...
赞
踩
article
Linux
JAVA
JDK
JRE
环境变量
安装与配置...
背景: 阅读新闻 [日期:2017-12-10] 来源:renwole.com 作者:任我乐 [字体:大 ...
赞
踩
article
2024年
华为
OD机试真题-
贪吃
的
猴子
-
Java
-OD统一考试(C卷)_
华为
od
贪吃
的
猴子
...
猴子
在果园面临一排香蕉,每次可以从头或尾取N次香蕉。给定每串香蕉数量和N,求最大获取香蕉数。例如,输入7, [1 2 2...
赞
踩
article
华为
OD机试【
贪吃
的
猴子
】(
java
)(200分)_只
贪吃
的
猴子
,
来到一个果园
,
发现许多串
香蕉
排成一...
只
贪吃
的
猴子
,来到一个果园,发现许多串
香蕉
排成一行,
每
串
香蕉
上有
若干根
香蕉
。
每
串
香蕉
的
根数由数组numbers给出
。
猴子
...
赞
踩
article
【2023华为OD-C卷-第三题-
贪吃
的
猴子
】
100%
通过率
(
Java
Script&
Java
&Pyt...
这是一篇关于
贪吃
的
猴子
问题
的
博客,使用双指针策略解决。文章提供了
Java
Script、
Java
、
Python
和
C++
四种...
赞
踩
article
Linux
阻止
恶意请求:如何
阻止
以下访问: “GET /
shell
?
cd
+/tmp;rm+
arm
+a...
如何
阻止
以下访问:
cd
+/tmp;为了
阻止
类似的恶意访问请求,您可以使用多种方法来增强您的
Linux
服务器的安全性。_n...
赞
踩
article
No JVM
could
be
found
on
your
system
. 在您的系统上找不到JVM...
如果您没有安装Java,或者安装的是64位而不是32位,您需要从Oracle官网或 Adoptium (https://...
赞
踩
article
JAVA
微信
APPV3
支付
(保姆级)_
java
微信
支付
...
可根据需求定制 这里以APP
支付
和申请退款为例。_
java
微信
支付
java
微信
支付
20...
赞
踩
article
Java
|
Leetcode
Java
题
解之第332
题
重新安排
行程...
Java
|
Leetcode
Java
题
解之第332
题
重新安排
行程
Java
|
Leetcode
Java
题
解之第33...
赞
踩
article
java 程序设计基础(五)_
public
class
demo
{
public
static
vo...
本文介绍了Java中的对象和类的概念,包括基本数据类型与类的区别,如何通过类创建对象及实例化过程。类作为对象的蓝图,对象...
赞
踩
article
java
程序设计
基础
(七)_
java
程序设计
基础
第七版
...
本文探讨了Java中的多态性,强调了它依赖于继承和方法重写。同时,介绍了final修饰符的用法,包括禁止继承、方法重写和...
赞
踩
article
Kotlin
VS
Java
:谁更适合
Android
开发?_
kotlin
和
java
哪个好...
在
Kotlin
出现之前,绝大部份
Android
开发者都是使用的
Java
语言,
Java
有着许多明显的优点,如...
赞
踩
article
Java
合并
两个
相同的
List
集合多种方法解析_
java
合并
两个
list
...
在
Java
编程中,有时我们需要将
两个
相同类型的集合
合并
成一个。尤其是在处理列表(
List
)时,将
两个
具有相同元素类型的L...
赞
踩
article
SpringBoot(
JAVA
)整合
微信
公众
号
消息
推送
_
springboot
微信
公众
号
推送
消息
...
在使用
JAVA
(
springboot
)开发
微信
公众
号时,有时需要向
微信
服务器上传一些临时素材,比如图片、语音、视频等。本...
赞
踩
相关标签
java
开发语言
spring boot
图书商城系统
javascript
后端
人工智能
机器学习
深度学习
java 数据权限中间件
Java
Scanner
输入输出
docker
jenkins
eclipse
jdk
path
linux
服务器
运维
华为od
职场和发展
算法
数据结构