不安全的http方法

本章节所需工具burp和curl

curl下载地址:https://curl.haxx.se/download.html

漏洞简介


什么是http方法?

根据HTTP标准,HTTP请求可以使用多种方法,其功能描述如下所示。

HTTP1.0定义了三种请求方法: GET、POST、HEAD

HTTP1.1新增了五种请求方法:OPTIONS、PUT、DELETE、TRACE 、CONNECT

什么是不安全的http方法?

在所有的HTTP方法中,安全界认为PUT、DELETE、TRACE是不安全的,另外WebDAV中的几个方法,RFC 5789中的PATCH方法也被认为是不安全的。(TRACE容易引发XST攻击,PATCH修改资源的部分内容,PUT/DELETE没有认证机制等原因,不仅仅因为它们会产生结果)

不安全的http方法有什么危害?

1、OPTIONS方法,将会造成服务器信息暴露,如中间件版本、支持的HTTP方法等。

2、PUT方法,由于PUT方法自身不带验证机制,利用PUT方法即可快捷简单地入侵服务器,上传Webshell或其他恶意文件,从而获取敏感数据或服务器权限。

3、DELETE方法,利用DELETE方法可以删除服务器上特定的资源文件,造成恶意攻击。

漏洞利用


环境搭建

1、测试环境为:WIN10 64位、Tomcat 8.5.15、curl 7.65、burp 1.7.30

2、在Tomcat 8默认配置中,web.xml文件的org.apache.catalina.servlets.DefaultServlet的

readonly参数默认是true,即不允许DELETE和PUT操作,所以通过PUT或DELETE方法访问,就会报403错误。为配合测试,把readonly参数设为false。

漏洞验证

打开burp抓包,ctrl+R发送到重放模块,修改http方法为OPTIONS,再返回包中发现支持的方法,如下图

漏洞利用

安装curl:https://blog.csdn.net/dear_alice_moon/article/details/79509466

使用方法:https://www.cnblogs.com/hbzyin/p/7224338.html

打开如下图

对目标url进行测试,如下图

PUT上传文件

payload:curl -X PUT http://127.0.0.1:8800/test/1.html -d "1111"

DELETE删除文件

payload:curl -X DELETE http://127.0.0.1:8800/test/1.html

如果不是jsp的站点,我们可以直接上传webshell,如果是JSP站点,

在默认配置下,涉及jsp、jspx后缀名的请求由org.apache.jasper.servlet.JspServlet处理**,除此之外的请求才由org.apache.catalina.servlets.DefaultServlet处理。

刚才将DefaultServlet的readonly设置为false,并不能对jsp和jspx生效。因此,当PUT上传jsp和jspx文件时,Tomcat用JspServlet来处理请求,而JspServlet中没有PUT上传的逻辑,所以会403报错。

绕过限制

tomcat任意文件上传漏洞:影响版本是tomcat7.0.0-7.0.81版本。我这里没装先不试了

利用Tomcat 7的任意文件上传漏洞(CVE-2017-12615)来实现目的,该漏洞**通过构造特殊后缀名,绕过tomcat检测,让它用DefaultServlet的逻辑处理请求,从而上传jsp文件**。具体来说,主要有三种方法,比如shell.jsp%20 、shell.jsp::$DATA 、shell.jsp/

如何修复


如何修复此漏洞?

在配置文件中添加如下代码

        <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>
  • <security-constraint>用于限制对资源的访问;

  • <auth-constraint>用于限制那些角色可以访问资源,这里设置为空就是禁止所有角色用户访问;

  • <url-pattern>指定需要验证的资源

  • <http-method>指定那些方法需要验证

  • 7
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HTTP方法是客户端与服务器之间进行通信的一种方式,包括GET、POST、PUT、DELETE等多种方法。其中,GET方法用于从服务器获取资源,而POST方法则用于向服务器发送表单数据等信息。但是,有些HTTP方法具有安全风险,如果服务器没有正确地限制这些方法的使用,就可能导致不必要的风险和漏洞。 启动了不安全HTTP方法漏洞是指,服务器在处理客户端请求时启用了不安全HTTP方法(如PUT、DELETE等),却没有对请求进行正确的验证和授权。这就给攻击者提供了机会,利用这些方法访问、修改或删除服务器上的数据,从而造成安全风险和漏洞。 具体来说,启用不安全HTTP方法可能导致以下危害: 1. 数据泄露:攻击者可以使用PUT或其他HTTP方法将恶意代码或程序上传到服务器,从而获取服务器上的敏感信息。 2. 文件覆盖:攻击者可以使用PUT或其他HTTP方法将某些文件覆盖掉,这些文件可能是关键的系统文件,会导致系统崩溃或不可用。 3. 恶意文件上传:攻击者可能利用PUT和其他HTTP方法上传恶意文件(如病毒、木马等)到服务器上,从而进行远程操作和控制。 因此,为了防止不安全HTTP方法漏洞,服务器必须正确地限制这些方法的使用,同时对请求进行正确的验证和授权。此外,管理员还需要注意定期更新服务器软件以及安装最新的安全补丁,以避免已知漏洞造成的安全风险。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值