网站安全检测内容(网站安全检测thinkphp漏洞产生网站漏洞的详情与poc利用)

优采云 发布时间: 2021-10-10 09:39

  网站安全检测内容(网站安全检测thinkphp漏洞产生网站漏洞的详情与poc利用)

  在中国,很多站长和平台都使用thinkphp来使用这个开源系统构建网站。为什么它如此受大家欢迎?一、开源,方便高效,生成静态html,二帧PHP架构开发方便。有很多第三方插件和第三方开发公司。模板可以定制。在thinkphp的基础上可以开发很多大型的虚拟货币平台,还有会员平台、商城系统,thinkPHP的官方系统升级比较完整,及时更新修复了一些bug。

  目前最新的官方版本是ThinkPHP5.0.20,之前的ThinkPHP3.2,ThinkPHP3.1、ThinkPHP3. 0 出现过网站漏洞,包括一些高危远程代码执行漏洞、thinkphp sql注入漏洞、后端管理员XSS跨站漏洞、任意文件上传漏洞等。目前我们的SINE安全是2018年9月5日,在日常thinkphp网站安全检查中,发现客户使用的thinkphp系统存在网站sql注入漏洞,非常有害。一开始以为客户用的是低版本:thinkphp 3.2.3.这种类型的网站 漏洞是存在的。但是在实际的安全测试中发现,不仅是这个版本,还有当前最新版本5.0.20,关于网站漏洞的详细信息以及使用poc,我们会一步步分析。

  网站thinkphp漏洞的安全检测原理

  产生网站漏洞的文件存在于library文件夹下的think文件中,以及其中收录的db文件夹

  从driver.class.php代码第677行开始,发现在订单处理和分析过程中,分析参数中可以插入非法插入。

  字符,key分配时没有严格的安全限制和过滤,导致攻击者可以使用SQL注入语句进入

  行结构查询数据库的内容,包括查看和选择数据库中管理员账号密码、写入数据库等操作。

  thinkphp 3.2.3 漏洞代码如下:

  /**

  *订单分析

  * @access 保护

  * @param 混合 $order

  * @return 字符串

  */

  受保护的函数 parseOrder($order) {

  if(is_array($order)) {

  $array = array();

  foreach ($order as $key=>$val){

  if(is_numeric($key)) {

  $array[] = $this->parseKey($val);

  }其他{

  $array[] = $this->parseKey($key).''.$val;

  }

  }

  $order = implode(',',$array);

  }

  返回 !empty($order)? 'ORDER BY'.$order:'';

  }

  ThinkPHP 5.1.库文件夹下think文件中db/query.php存在22个漏洞代码

  代码中第1514行,代码如下:

  /**

  * 指定排序顺序('id','desc') 或 order

  (['id'=>'desc','create_time'=>'desc'])

  * @access 公开

  * @param string|array $field 排序字段

  * @param string $order 顺序

  * @return $this

  */

  公共函数order($field, $order = null)

  {

  if (empty($field)) {

  返回 $this;

  } elseif ($field instanceof Expression) {

  $this->options['order'][] = $field;

  返回 $this;

  }

  if (is_string($field)) {

  if (!empty($this->options['via'])) {

  $field = $this->options['via'].'.'. $字段;

  }

  if (strpos($field,',')) {

  $field = array_map('trim',explode(',', $field));

  } 其他{

  $field = 空($order)? $field: [$field => $order];

  }

  } elseif (!empty($this->options['via'])) {

  foreach ($field as $key => $val) {

  if (is_numeric($key)) {

  $field[$key] = $this->options['via'].'.'. $val;

  } 其他{

  $field[$this->options['via'].'.'. $key] = $val;

  unset($field[$key]);

  }

  }

  从上面thinkphp3.2.3和thinkphp5.0的代码可以分析出来。当针对相关函数分析订单时,它将被分配给键值并且可以合并。 SQL注入语句执行攻击网站,可以在拼接模式下绕过SQL安全过滤,导致SQL语句执行、数据库查询、数据库操作。

  Thinkphp 漏洞利用详情:

  

  

  Thinkphp漏洞修复建议:

  如果是thinkphp版本较低的系统3.*,请尽快升级到thinkphp的最高版本。

  如果是thinkphp5.*系统的高版本,请尽快升级到thinkphp的最高版本。

  如果网站被攻击,请尽快做好网站的安全备份,寻找网站中是否存在木马后门,修复代码中被篡改的代码,做好网站安全加固,设置一些缓存文件夹的安全权限。如果你对网站漏洞修复不是很了解,可以找专业的网站安全公司来处理,国内的SINE安全公司,绿盟科技安全,启明星辰更专业。如果网站使用linux系统或windows系统等单独的服务器,可以部署网站防火墙来防止SQL注入攻击。 网站默认管理员后台地址可以修改为更麻烦的地址。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线