美文网首页
不安全的HTTP方法(未完)

不安全的HTTP方法(未完)

作者: ThemisHoo | 来源:发表于2019-06-14 09:59 被阅读0次

    前些天进行渗透测试,出现不安全的HTTP方法,做下小结。

    一,先了解下常用的HTTP请求方法

    方法 描述
    GET GET是最常用的方法,它的作用是获取服务器中的某个资源
    POST POST方法是用来向服务器传递数据的. POST请求通常会用来提交HTML的表单. 表单中填好的数据会被传输给服务器,然后由服务器对这些数据进行处理
    PUT 与GET从服务器读取资源相反,PUT方法会向服务器写入资源. 有些发布系统允许用户创建Web页面,并用PUT直接向其传输到Web服务器中
    DELETE DELETE方法所做的事情就是请服务器删除请求URL所指定的资源
    OPTIONS OPTIONS方法请求Web服务器告知其支持的各种功能. 可以询问服务器通常支持哪些方法,或者对某些特殊资源支持哪些方法
    HEAD HEAD方法与GET方法的行为很类似,但服务器在响应中只返回首部. 不会返回实体的主体部分.

    还有TRACE,CONNECT等,我不太了解,也没用过。

    二、查看不安全的HTTP方法

    Web服务器配置为允许使用危险的HTTP方法,可能允许未授权的用户对Web服务器进行敏感操作。如OPTIONS,会造成服务器信息暴露,如ALLOW等

    使用命令查看是否支持OPTIONS请求方法

    curl -i -X OPTIONS https://test.***.com/proxy/register
    

    上面就没有禁用options方法,请求返回结果为200,可以看到一些服务器信息

    三、如何禁止使用不安全的HTTP方法

    前两天随便百度了些文章,看到有文章说在请求头设置允许使用的方法即可res.setHeader("Access-Control-Allow-Methods", "GET,POST"),又说curl命令打印出的信息,Allow是GET、HEAD就是正确的(无知的我)

    结果提交到测试的时候,人家告诉我返回200就是不对的,应该是403之类,如下图

    又尝试在封装请求方法的地方去判断请求方法,但并不生效。我没搞懂真正的HTTP请求,我猜测不管用的原因是,我判断的地方已经走过了node请求那一步,header信息已经发送成功了,晕晕乎乎的搞不明白。最后选择在nginx改配置,一劳永逸。。。

    if($request_method !== 'GET' && $request_method !== 'POST'){
        return 403
    }
    

    这样也不是个好办法,等有空(也许没空)把node端如何限制请求方式补上。

    相关文章

      网友评论

          本文标题:不安全的HTTP方法(未完)

          本文链接:https://www.haomeiwen.com/subject/lhoyfctx.html