竹笋

首页 » 问答 » 环境 » 漏洞预警ThinkPHP32版本
TUhjnbcbe - 2021/4/11 23:38:00
北京哪里治白癜风 http://pf.39.net/bdfyy/bjzkbdfyy/

年8月23日,ThinkPHP团队对thinkphp3框架进行了一处安全更新,经过分析,此次更新修正了一处SQL注入漏洞,该问题是由于select(),find(),delete()方法会传入数组类型数据,最终导致多处SQL注入。

千里百科

ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于年初,原名FCS,年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式。ThinkPHP可以支持windows/Unix/Linux等服务器环境,正式版需要PHP5.0以上版本支持,支持MySql、PgSQL、Sqlite多种数据库以及PDO扩展,ThinkPHP框架本身没有什么特别模块要求,具体的应用系统运行环境要求视开发所涉及的模块决定。

漏洞描述

从github上ThinkPHP的更新来看,ThinkPHP本次更新主要更新了ThinkPHP/Library/Think/

Model.class.php文件,其中将delete,find,select三个函数内option的调用进行大量修改,修改内容如下图所示:

ThinkPHP其中,三个函数所修改的共性在与:外部所传的options参数修改为this-option参数,同时不再用$options=$this-_parseOptions($options)来解析options参数。所以此次漏洞的触发点存在于parseOptions($options)中。外部所传入的“options”可绕过过滤进入参数解析阶段。攻击者可以通过绕过编码,构造poc进行SQL注入攻击。

漏洞复现

上面描述的可能过于专业化,我们准备了一个漏洞复现让各位小伙伴们直观的了解一下。

我们据此搭建了一套ThinkPHPv3.2.3的运行环境。搭建好框架之后,我们需要写一个实例来实现:

首先建立好复现所需要的数据库场景:

数据库表名test,其中有3个字段id、username、pass。

2.启动服务器后,打开ThinkPHP欢迎页面,如下所示:

数据库环境设计好之后需要建立对应模块的数据表的查询语言。

3.然后通过构造的PoC来进行访问:

1
查看完整版本: 漏洞预警ThinkPHP32版本