精华内容
下载资源
问答
  • 由于ThinkPHP5框架对控制器名没有进行足够的安全检测,导致在没有开启强制路由的情况下,黑客构造特定的请求,可直接GetWebShell。 漏洞评级 严重 影响版本 ThinkPHP 5.0系列 < 5.0.23 ThinkPHP 5.1系列 ...

    漏洞描述

    由于ThinkPHP5框架对控制器名没有进行足够的安全检测,导致在没有开启强制路由的情况下,黑客构造特定的请求,可直接GetWebShell。

    漏洞评级

    严重

    影响版本

    ThinkPHP 5.0系列 < 5.0.23
    ThinkPHP 5.1系列 < 5.1.31

    安全版本

    ThinkPHP 5.0系列 5.0.23
    ThinkPHP 5.1系列 5.1.31

    ThinkPHP5.*版本发布安全更新

    本次版本更新主要涉及一个安全更新,由于框架对控制器名没有进行足够的检测会导致在没有开启强制路由的情况下可能的getshell漏洞,受影响的版本包括5.05.1版本,推荐尽快更新到最新版本。

    如果各种原因暂时无法更新到最新版本(早期版本升级到最新版本可能存在兼容性问题,请首先参考官方手册的升级指导章节)

    手动修正

    5.1版本

    thinkphp/library/think/route/dispatch/Url.php  类的parseUrl方法,解析控制器后加上   添加

     if ($controller && !preg_match('/^[A-Za-z](\w|\.)*$/', $controller)) {
         throw new HttpException(404, 'controller not exists:' . $controller);
     }

     

    5.0版本

    thinkphp/library/think/App.php  类的module方法的获取控制器的代码后面加上

    if (!preg_match('/^[A-Za-z](\w|\.)*$/', $controller)) {
        throw new HttpException(404, 'controller not exists:' . $controller);

    }

     

    框架升级

     

    进入到代码根目录 执行  composer  update

    注意:不推荐用这种方法直接升级,容易引起不兼容情况,如果必须特别想这样子升级修复的话 ,建议提前备份好代码。

     

    目前thinkphp的 5.0(5.0.23) 以及 5.1(5.1.31) 的最新版本,已经修复此漏洞,建议大家项目都用目前最新版本。

     

    工作在上海,大家多多交流,qq交流群(1126665885)

    展开全文
  • 漏洞描述由于ThinkPHP5框架对控制器名没有进行足够的安全检测,导致在没有开启强制路由的情况下,黑客构造特定的请求,可直接GetWebShell。漏洞评级严重影响版本ThinkPHP 5.0系列 < 5.0.23ThinkPHP 5.1系列 < ...

    漏洞描述

    由于ThinkPHP5框架对控制器名没有进行足够的安全检测,导致在没有开启强制路由的情况下,黑客构造特定的请求,可直接GetWebShell。

    漏洞评级

    严重

    影响版本

    ThinkPHP 5.0系列 < 5.0.23ThinkPHP 5.1系列 < 5.1.31

    安全版本

    ThinkPHP 5.0系列 5.0.23ThinkPHP 5.1系列 5.1.31

    ThinkPHP5.*版本发布安全更新

    如果各种原因暂时无法更新到最新版本(早期版本升级到最新版本可能存在兼容性问题,请首先参考官方手册的升级指导章节)

    漏洞注入方式(是否有漏洞测试)

    1.写入文件

    /index.php?s=/index/hinkapp/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=***.php&vars[1][]=***

    2.查看版本信息

    /index.php?s=index/hinkapp/invokefunction&function=phpinfo&vars[0]=1index.php?s=index/thinkapp/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami

    解决办法

    手动修正

    5.1版本

    thinkphp/library/think/route/dispatch/Url.php 类的parseUrl方法,解析控制器后加上 添加

     if ($controller && !preg_match('/^[A-Za-z](w|.)*$/', $controller)) {     throw new HttpException(404, 'controller not exists:' . $controller); }

    5.0版本

    thinkphp/library/think/App.php 类的module方法的获取控制器的代码后面加上

    if (!preg_match('/^[A-Za-z](w|.)*$/', $controller)) {    throw new HttpException(404, 'controller not exists:' . $controller);}

    由于我之前项目使用5.0所以只有5.0的修改截图

    修改前:

    9eaced8017f74c07b6ee0b4e2db5abc3

    修改后:

    c1748095931046139412e1bc922a545a

    框架升级方法

    进入到代码根目录 执行

    composer update

    注意:不推荐用这种方法直接升级,容易引起不兼容情况,如果必须特别想这样子升级修复的话 ,建议提前备份好代码。

    目前thinkphp的 5.0(5.0.23) 以及 5.1(5.1.31) 的最新版本,已经修复此漏洞(很多人项目已经发布并未进行修改,强烈建议尽快修复此漏洞),建议大家项目都用目前最新版本。

    展开全文
  • 如果服务器配置不当,这些请求方法可能被用于一些不法用途。比如:跨站跟踪(XST)是一种高危漏洞,这种跨站脚本能利用HTTP TRACE请求。 GET和POST是开发者获取服务器信息的最常用请求,没有之一。  可以列...

    一、什么是HTTP请求   

      超文本传输协议(HTTP)提供了多种请求方法来与web服务器沟通。当然,大多数方法的初衷是帮助开发者在开发或调试过程中部署和测试HTTP应用。如果服务器配置不当,这些请求方法可能被用于一些不法用途。比如:跨站跟踪(XST)是一种高危漏洞,这种跨站脚本能利用HTTP TRACE请求。
      GET和POST是开发者获取服务器信息的最常用请求,没有之一。

      可以列举出常用HTTP请求:HEAD、GET、POST、PUT、DELETE、TRACE、OPTIONS、CONNECT

      理论上,由于这些请求允许攻击者修改web服务器上存储的文件、或者删除服务器上web页面、甚至上传web shell并获取用户的身份信息,它们都有可能制造出严重的安全漏洞。

      另外出于安全考虑,服务器root权限必须禁用如下请求:

      PUT:允许上传新文件至web服务器。攻击者可以上传恶意文件(比如可以执行调用cmd.exe命令的ASP/PHP文件)或者将受害者服务器用于存储自己的文件。

      DELETE:允许删除web服务器上的文件。攻击者可以简单粗暴的丑化受害者网站或实施DDoS攻击。

      CONNECT:允许客户端将服务器配置为代理。

      TRACE:可以在客户端上回显任何发送到服务器上的字符串。这个请求本来是用于帮助开发者调试的。但这个看似人畜无害的请求,却被Jeremiah Grossman发现可以被利用以实施XST攻击。

      即使一些Web服务经常会用到PUT或DELETE请求,但当我们真的遇到如上请求时,务必谨慎一些,确认这些请求是由可信用户在安全的环境中发出的。很多网络环境使用基于请求的认证及访问控制策略(VBAAC)。但是否会被绕过呢?我们来看下面这个例子:

    JAVA EE web XML file
    <web-resource-<< span="">a href="http://resources.infosecinstitute.com/collection/">collection>
    /auth/*
    GET
    POST
     
    root

      这样的设定是告诉HTTP Servlet的Container,仅允许用户角色为root的使用者,通过GET和POST的请求,获取路径为/auth/*下的资源。乍一看,代码限定了用户访问权限,好像没什么问题。但是,我们却可以通过篡改HTTP请求来绕过限制!为何?因为他并没有限制其他的HTTP请求应该被服务器拒绝!

      我们可以用HEAD或者其他非GET/POST请求,诸如PUT, TRACK, TRACE, DELETE等,或者还可以尝试发送任意字符串(如ASDF),无比轻松的绕过这条规则,达到获取/auth/*路径下文件的目的。

      总结一下可能会发生绕过的情形:

      允许非等幂的GET请求或者允许任意HTTP方法

      仅通过列出HTTP请求来控制安全

      不禁用没有列出的HTTP请求

      以上是发生绕过的几种最常见情形。各种排列组合或细节差异随实际的服务器配置而千变万化。但万变不离其宗,看似复杂的实际案例背后的原理却是相同的。

    二、如何利用HTTP Verb Tampering绕过VBAAC

      1、HEAD请求

      如上所述,HEAD请求与GET类似,只不过服务器在响应时不会返回消息体。设想你的应用中有一段URL,若仅通过“拒绝GET和POST获取/auth路径下文件”这条规则保护,仍然是极不安全的。

      http://httpsecure.org/auth/root.jsp?cmd=adduser

      如果你强制浏览器访问该URL,安全机制会被触发,检查请求资源和请求者是否符合授权规则。第一个当然就是检查并阻断浏览器发送的GET和POST请求了。这时,只要你使用浏览器代理,比如Suite Burp,将拦截下来的GET请求替换成HEAD。由于HEAD未被列入安全约束规则中而畅行无阻,因此adduser命令将被成功调用,而你的浏览器也将得到一个空消息体作为HEAD请求的响应。

      2、任意HTTP请求

      包括PHP, JAVA EE在内的大多数平台都默认允许使用任意的HTTP请求。而这些请求可以取代GET绕过规则。更可怕的是,使用任意HTTP请求可以让你看到内部页面,甚至是网页源码,而这些是HEAD办不到的。某些服务器厂商允许HEAD请求,如下服务器厂商默认允许HEAD请求:

      APACHE 2.2.8

      JBOSS 4.2.2

      WEBSPERE 6.1

      TOMCAT 6.0

      IIS 6.0

      WEBLOGIC 8.2

      表面上,允许使用HEAD方法并不是一个漏洞,因为RFC也有这种要求。让我们来看看一些最流行的应用安全机制是否会给我们绕过VBAAC(verb-based authentication and access control )以可乘之机。如下是一些可能会受到篡改请求影响的服务器:

    服务器类型  是否允许HTTP请求?  是否可绕过?  HEAD请求是否可用?

    JAVA EE    YES          YES      YES

    .htaccess    YES        YES(默认配置)  YES

    ASP.NET    YES        YES(默认配置)  YES

    三、如何防范HTTP Verb Tampering

    3.1 JAVA 安全约束

       如何防范HTTP Verb Tampering JAVA EE容器,让我们来看看如下安全约束策略:

    Example Security Constraint Policy
    Protected Area
    /auth/security/*
    POST
    PUT
    DELETE
    GET
    ...

      以上代码中,工程师列举并限制了POST, PUT, DELETE, GET等方法。因此,只有当浏览器使用这些在表中列举出的请求去获取/auth/security/*路径下文件时才会触发安全约束策略。

      因此,把其他未列出的方法也一并禁用才是完善这条规则的最优解。遗憾的是,以上策略目前却并非如此严谨。比如,由于HEAD并没有被列举出来,利用HEAD请求不难绕过此策略。确保JAVA EE安全性的正确打开方式是从安全约束策略中去除所有,并使安全约束策略针对所有的HTTP请求方法。但如果您仍想限制某些特定方法,建议您参考如下方法,分2步创建安全约束策略。

    site
    /*
    GET
    ...
    
    site
    /*
    ...

      如上,第1条策略将拒绝GET请求,而第2条策略则拒绝所有请求方法。

    3.2、ASP.NET授权

      我们知道ASP.NET授权的安全机制是可能被绕过的,举几个例子来说明吧。

    <allow verbs="POST" users="joe"/>
    <allow verbs="GET" users="*"/>
    <deny verbs="POST" users="*"/>

      在上面这段代码中:

      允许用户joe发送POST请求

      允许所有用户发送GET请求

      拒绝所有用户发送POST请求

      由于第2条允许所有用户发送GET请求,都无需用HEAD绕过了,简直毫无安全性可言。不要觉得你的智商被侮辱了,我们继续往下看。以下代码做了部分限制,但仍然会被HEAD绕过。

    <allow verbs="POST" users="root"/>
    <allow verbs="GET" users="joe"/>
    <deny verbs="GET,POST" users="*"/>

      原因是逐条匹配以下规则后,发现HEAD请求不在限制范围内。

      允许用户root发送GET请求

      允许用户joe发送POST请求

      拒绝所有用户发送POST, GET请求

      由于.NET会悄悄地在所有规则的最后插入一条规则允许所有用户发送所有请求。因此,HEAD请求会被放行。为避免这种情况,我们应该在最后一条规则后加上“拒绝所有用户发送所有请求”。于是,有了如下代码:

    <allow verbs="POST" users="root"/>
    <allow verbs="GET" users="joe"/>
    <deny verbs="*" users="*"/>

      这样才能完全确保只有那些在规则白名单中的特定用户才被允许发送特定HTTP请求。

      总结:

      在业务许可的情况下,加上”deny all”。

      配置你的web服务器和应用服务器完全禁用HEAD请求。

    3.3 Asp.Net MVC

      须在 Controller 的 Action 添加授权。

    展开全文
  • 由于ThinkPHP5.0框架对Request类的method处理存在缺陷,导致黑客构造特定的请求,可直接GetWebShell。 漏洞评级 严重 影响版本 ThinkPHP 5.0系列 < 5.0.24 安全版本 ThinkPHP 5.0系列 5.0.24 ThinkPHP 5.1系列 ...

    在这里插入图片描述
    漏洞描述
    由于ThinkPHP5.0框架对Request类的method处理存在缺陷,导致黑客构造特定的请求,可直接GetWebShell。

    漏洞评级
    严重

    影响版本
    ThinkPHP 5.0系列 < 5.0.24

    安全版本
    ThinkPHP 5.0系列 5.0.24
    ThinkPHP 5.1系列 5.1.31

    安全建议
    升级ThinkPHP至安全版本
    修复方法.打开
    thinkphplibrarythinkRequest.php
    搜索

    public function method($method = false)
    {
    	if (true === $method) {
    	  // 获取原始请求类型
    	  return $this->server('REQUEST_METHOD') ?: 'GET';
    	} elseif (!$this->method) {
    	  if (isset($_POST[Config::get('var_method')])) {
    	      $this->method = strtoupper($_POST[Config::get('var_method')]);
    	      $this->{$this->method}($_POST);
    	  } elseif (isset($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE'])) {
    	      $this->method = strtoupper($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE']);
    	  } else {
    	      $this->method = $this->server('REQUEST_METHOD') ?: 'GET';
    	  }
    	}
    	return $this->method;
    }
    

    改成

    public function method($method = false)
    {
      if (true === $method) {
          // 获取原始请求类型
          return $this->server('REQUEST_METHOD') ?: 'GET';
      } elseif (!$this->method) {
          if (isset($_POST[Config::get('var_method')])) {
              $method = strtoupper($_POST[Config::get('var_method')]);
              if (in_array($method, ['GET', 'POST', 'DELETE', 'PUT', 'PATCH'])) {
                  $this->method = $method;
                  $this->{$this->method}($_POST);
              } else {
                  $this->method = 'POST';
              }
              unset($_POST[Config::get('var_method')]);
          } elseif (isset($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE'])) {
              $this->method = strtoupper($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE']);
          } else {
              $this->method = $this->server('REQUEST_METHOD') ?: 'GET';
          }
      }
      return $this->method;
     }
    

    保存,覆盖 测试无误 漏洞修复完成

    在这里插入图片描述
    漏洞描述
    由于ThinkPHP5框架对控制器名没有进行足够的安全检测,导致在没有开启强制路由的情况下,攻击者构造特定的恶意请求,可以直接获取服务器权限。

    漏洞评级
    严重

    影响版本
    ThinkPHP 5.0系列 < 5.0.22

    安全建议
    升级ThinkPHP至安全版本
    修复方法:

    在think\App类的module方法的获取控制器的代码后面加上

    if (!preg_match('/^[A-Za-z](\w|\.)*$/', $controller)) {
        throw new HttpException(404, 'controller not exists:' . $controller);
    }
    

    保存,覆盖 测试无误 漏洞修复完成

    展开全文
  • 由于ThinkPHP5.0框架对Request类的method处理存在缺陷,导致黑客构造特定的请求,可直接GetWebShell。 漏洞评级 严重 影响版本 ThinkPHP 5.0系列 &amp;lt; 5.0.24 安全版本 ThinkPHP 5.0系列 5.0.24 ...
  • 漏洞描述由于ThinkPHP5.0框架对Request类的method处理存在缺陷,导致黑客构造特定的请求,可直接GetWebShell。 漏洞评级严重 影响版本ThinkPHP 5.0系列 < 5.0.24 安全版本ThinkPHP 5.0系列 5.0.24ThinkPHP 5.1...
  • 直接升级的话或有不兼容性,所以记录一下,遇到5.0.24以下版本可以采取修复方法!……ᕦ(・ㅂ・)ᕤ 漏洞描述 由于ThinkPHP5.0框架对Request类的method处理存在缺陷,导致黑客构造特定的请求,可直接GetWebShell。 ...
  • 漏洞名称:ThinkPHP5 远程代码执行高危漏洞(CNNVD-201812-617) 漏洞造成的影响 由于ThinkPHP5框架对Request类的method处理存在缺陷,导致黑客构造特定的请求,可直接GetWebShell入侵服务器。 ThinkCMF框架用...
  • 由于ThinkPHP5.0框架对Request类的method处理存在缺陷,导致黑客构造特定的请求,可直接GetWebShell。 漏洞评级 严重 影响版本 ThinkPHP 5.0系列 < 5.0.24 安全版本 ThinkPHP 5.0系列 5.0.24 ThinkPHP 5.1系列 ...
  • 漏洞描述由于ThinkPHP5.0框架对Request类的method处理存在缺陷,导致黑客构造特定的请求,可直接GetWebShell。 漏洞评级 严重 影响版本 ThinkPHP 5.0系列 < 5.0.24 安全版本 ThinkPHP 5.0系列 5.0.24 ThinkPHP...
  • 综 述 ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,是为了简化企业级... 漏洞分析Thinkphp的核心类Requests的method方法实现了表单请求类型伪装,默认为$_POST['_method']变量,但是并未对$_POST['_...
  • 1、昨天360站长之家开通官网直达,安全报高突然报[高危]跨站脚本攻击漏洞,必须修复才可进行官网直达。2、神马是XSS,额我也不懂,百度如下:用户在浏览网站、使用即时通讯软件、甚至在阅读电子邮件时,通常会点击...
  • 0x01 漏洞背景 2020年06月23日, 360CERT监测发现 Apache Dubbo 官方 发布了 Apache Dubbo 远程代码执行的...Apache Dubbo Provider 存在反序列化漏洞,攻击者可以通过RPC请求发送无法识别的服务名称或方法名称以及一些
  • 2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞,其中就有Tomcat远程代码执行漏洞,当存在漏洞的Tomcat运行在Windwos主机上,且启用了HTTP PUT请求方法,攻击者就可以通过构造的攻击请求向服务器上传...
  • 漏洞介绍 2017年9月19日,Apache Tomcat官方确认并...当 Tomcat 运行在 Windows 主机上,且启用了 HTTP PUT 请求方法(例如,将 readonly 初始化参数由默认值设置为 false),攻击者将有可能可通过精心构造的攻击请求
  • 2017年9月19日,Apache Tomcat 官方确认并修复了高危漏洞(CVE-2017-12615),当 Tomcat 运行在 Windows 操作系统时,且启用了 HTTP PUT 请求方法(例如,将 readonly 初始化参数由默认值设置为 fals...
  • 声明 好好学习,天天向上 漏洞描述 2017年9月19日,Apache Tomcat官方确认并...当 Tomcat 运行在 Windows 主机上,且启用了 HTTP PUT 请求方法(例如,将 readonly 初始化参数由默认值设置为 false),攻击者将有可能
  • 自签https证书

    2020-01-17 11:21:52
    老系统进行安全扫描,检查出各种高危漏洞,被客户关闭了外网,其中一项便有**‘已解密的登录请求,AppScans识别了不是通过SSL发送的登录请求’** 由于IP未映射到客户域名,暂时用不上客户提供的ca证书,打算自签一个...
  • 漏洞背景 2020年06月23日, 360CERT监测发现 Apache Dubbo 官方 发布了 Apache Dubbo 远程代码执行...Apache Dubbo Provider 存在 反序列化漏洞,攻击者可以通过RPC请求发送无法识别的服务名称或方法名称以及一些恶意参
  • 2019年1月11日,阿里云云盾应急响应中心监测到ThinkPHP官方发布安全更新,披露了一个高危安全漏洞,***者构造特定的恶意请求,可以直接获取服务器权限,受影响的版本包括5.0.0~5.0.23版本 修复方法1.打开...
  • 病毒高危行为: 请求一系列加密的未知IP的443端口,连接可能与其他恶意软件通讯;尝试HTTP但是全都失败了 使用了大量的微软提供的加密函数,已知是AES对称加密 过程中怀疑使用了代码混淆 存在多处绕检测,反调试...
  • 邮件内容中请求链接可预测 漏洞描述 邮件中的重置密码等链接可预测,导致链接可以直接被猜解访问。 测试方法: . 先按照正常流程重置密码,接收重置密码邮件,分析重置链接的构造。 通常情况下链接中会使用token...

空空如也

空空如也

1 2
收藏数 32
精华内容 12
关键字:

高危请求方法