网站安全检测 漏洞检测 对thinkphp通杀漏洞利用与修复建议-阿里云开发者社区

开发者社区> 网站安全> 正文

网站安全检测 漏洞检测 对thinkphp通杀漏洞利用与修复建议

简介:
+关注继续查看

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漏洞利用详情:

fde3afdde35d4f44977ef98412d6cc1e.png

8bd353885e2441acbf8e60c0d6e85792.png

thinkphp漏洞修复建议:

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

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

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【期末复习】计算机网络 谢希仁版(七)网络安全
目录 网络安全 1. 计算机网络的安全威胁 2. 两类密码体制, 代表性算法 2.1 对称密钥密码体制 2.2 非对称密钥密码体制 3. 数字签名、报文完整性鉴别,实体鉴别 3.1 数字签名特点 3.1 报文完整性鉴别 3.2 报文鉴别的方法 3.2.1 MD5 3.2.2 报文鉴定码 3.3 实体鉴别 4. 对称密钥的分发 5. 公钥的签发与认证 6. 访问控制 7. 因特网相关的安全协议 IPSEC、SSL IPsec SSL 8. 防火墙
4 0
【Go语言实战】(2) Gin+Vue 电子商城
目录 🎈1. 需求分析 1.1 数据获取 1.2 ⽤户操作 1.3 其他功能 1.4 拓展功能 1.5 开发环境 🎉2. 后端逻辑代码 2.1 Python - 爬虫 2.2 Golang - Gin 2.2.1 数据库部分 2.2.1 服务部分 ✨3. 前端核心代码 3.1 AXIOS前后端交互 🎊4. 部分页面展示 4.1 前台页面 4.2 后台管理 🎆5. 结语 🎇最后
5 0
当联邦学习保护数据隐私,如何保证其自身的安全性?
联邦学习是一种多方联合计算技术,最早由谷歌于 2016 年提出,其核心思想是在保证多方数据不出域的前提下完成模型的训练与推理、多方之间仅交换必需的中间结果。在本文中,星云 Clustar 首席联邦学习架构师 & 港科大博士柴迪将对不同类型的联邦学习技术进行安全性评估,深入探讨联邦学习是否会造成隐私数据泄漏。
6 0
【期末复习】计算机网络 谢希仁版(六)应用层
目录 应用层 1. 网络应用程序的体系结构: 1.1 C/S 1.2 P2P 2. 域名结构 3. 域名解析过程 4. 万维网 4.1 URL 4.2 HTTP 4.3 静态页面 4.4 动态页面 4.5 活动页面 4.6 搜索引擎 5. 电子邮件系统主要协议,内容传送编码 5.1 SMTP 6. 各种网络应用相关协议及其端口号 7. socket 编程接口
4 0
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感
4 0
【小白视角】大数据基础实践(七) Spark的基本操作
目录 1. Spark概述 1.1 背景 1.2 特点 1.3 使用趋势 2. Spark生态系统 2.1 Spark与Hadoop的对比。 2.2 Job 2.3 容错率 2.4 通用性 2.5 实际应用 2.6 Spark生态系统组件的应用场景 2.7 Spark组件 2.7.1 Spark Core 2.7.2 Spark SQL 2.7.3 Spark Streaming 2.7.4 MLlib 2.7.5 Graphx 2.7.6 Cluster Managers 3. Spark运行架构 3.1 基本概念 3.2 架构设计 3.3 Spark 运行基本流程 3.4 Spark 运行
8 0
云服务器ECS使用体验
初次体验云服务器,为的是部署一个自己开发的机器人软件,前几天刚通过阿里云的学生认证,申领了这款云服务器ECS,使用起来很方便,网速也挺快的,这款服务器是2核2G的服务器,为了能快速上手,选择了Windows service ,自己所熟悉的微软系统,总的来说,体验感很棒!
12 0
【大数据基础实践】(六)数据仓库Hive的基本操作
目录 1. 数据仓库概念 2. Hive简介 2.1 简介 2.2 特性 2.3 生态系统 3. Hive系统架构 4. HQL转成MapReduce作业的原理 4.1 join的实现原理 4.2 group by的实现原理 5. 实验练习 5.1 环境配置 5.1.1 HIVE 5.1.2 MYSQL 5.1.3 配置MySql为hive元数据存储数据库 5.2 Shell进行实验内容 5.2.1 新建一个数据库; 5.2.2 新建表 5.2.3 添加分区 5.2.4 导入grade_zqc 5.2.5 统计男、女生人数 5.2.6 统计每个学生所有科目的总分以及平均分
6 0
ECS使用心得体验
强烈的编程爱好让我在编程的道路上越走越远,也让我学到了非常多的知识,同时也发现,学得越多,自己不懂的就越多,只有不断的学习,才能让自己跟上时代发展的步伐。由于在学习过程中使用到了云服务器,然后通过学长学姐的推荐,我了解到了“飞天加速计划•高校学生在家实践”活动,也因此第一次使用了ECS,由此产生了一些使用心得。
4 0
关于对ESC的体验结果
我是一名大二的学生,因着对云服务器有着浓厚的,之前使用过,听说阿里云这里的云服务器还是不错的,就想先申请免费使用两个月试一试。
5 0
+关注
网站安全
Sinesafe专注于网站安全,服务器安全,解决各类网络安全问题,对代码审计以及漏洞修补安全加固有专业的十年实战经验.官方站点www.sinesafe.com
131
文章
184
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载