解决网 - 电脑技术问题解决基地

词条信息

admin
admin
超级管理员
词条创建者 发短消息   

相关词条

热门词条

更多>>
笔记本屏幕导致视力下降?
话说《宠物小精灵》有这么一集(电脑战士3D龙),估计大部分人却[详细]
京东会员系统是怎么运营的?
一、会员系统的本质企业经营的目的是利润,而利润源自产品的价值,[详细]
子弹短信靠什么挑战微信?
自8月20日发布以来,短短几天时间,子弹短信就冲到了App S[详细]
边充电边玩手机,消耗的电是手机电池还是充电器?
现在的不管是年轻人还是中年人,都喜欢边充电边玩手机。虽然我们知[详细]
3个“最伤手机”的充电方式
不管是现在的移动互联网时代,还是以前的电力时代,离不开的就是电[详细]
解决网 >>所属分类 >> 网站建设    网站安全   

对thinkphp通杀漏洞利用与修复建议

标签: thinkphp 漏洞

顶[0] 发表评论(0) 编辑词条

  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行开始,在order处理分析的时候发现分析参数里可以插入非法的字符,在key赋值的时候并没有做严格的安全限制与过滤,导致攻击者可以使用SQL注入语句进行构造查询数据库里的内容,包括可以查选数据库里的管理员账号密码, 写入数据库等等的操作。

  thinkphp 3.2.3漏洞代码如下:

  /**

  * order分析

  * @access protected

  * @param mixed $order

  * @return string

  */

  protected function parseOrder($order) {

  if(is_array($order)) {

  $array = array();

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

  if(is_numeric($key)) {

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

  }else{

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

  }

  }

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

  }

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

  }

  ThinkPHP 5.1.22漏洞代码存在于library文件夹下的think文件里的db/query.php

  代码里的第1514行,代码如下:

  /**

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

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

  * @access public

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

  * @param string $order 排序

  * @return $this

  */

  public function order($field, $order = null)

  {

  if (empty($field)) {

  return $this;

  } elseif ($field instanceof Expression) {

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

  return $this;

  }

  if (is_string($field)) {

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

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

  }

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

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

  } else {

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

  }

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

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

  if (is_numeric($key)) {

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

  } else {

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

  unset($field[$key]);

  }

  }

  从以上thinkphp 3.2.3 、thinkphp 5.0的代码里可以分析出来,当order在分析关联函数的时候会赋值于key值中,可以掺入sql注入语句执行攻击网站,并可以拼接方式绕过sql安全过滤,导致可以执行sql语句,查询数据库,操作数据库。

  thinkphp漏洞利用详情:

  thinkphp漏洞修复建议:

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

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

  如果网站被攻击了,请尽快做好网站的安全备份,查找网站存在木马后门,对其代码里被篡改的代码进行修复,并做好网站安全加固,对一些缓存文件夹进行安全权限设置,如果对网站漏洞修复不是太懂的话可以找专业的网站安全公司去处理,国内SINE安全公司,绿盟安全,启明星辰都是比较专业的。如果网站使用的是单独服务器比如linux系统、windows系统,可以部署网站防火墙,来防止sql注入攻击。网站默认的管理员后台地址可以修改为比较繁琐的地址。

 

 

本文地址:解决网 http://www.lwy8.com/doc-view-5325.html

TAGS:SOLVES , 电脑技术 , 电脑知识 , 网站建设, 电脑技术, 网络营销 , 网站托管 , 硬件技术 , 网络技术 , 软件技术, 维修网点


按字母顺序浏览:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

→我们致力于为广大网民解决所遇到的各种电脑技术问题
 如果您认为本词条还有待完善,请 编辑词条

上一篇什么样的网站百度排名好?
下一篇WordPress4.9漏洞与修复

0
1. 本站部分内容来自互联网,如有任何版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
2. 本站内容仅供参考,如果您需要解决具体问题,建议您咨询相关领域专业人士。
3. 如果您没有找到需要的电脑技术问题词条,您可以到百科问答提问或创建词条,等待高手解答。

关于本词条的提问

查看全部/我要提问>>