原文地址:https://nosec.org/home/detail/2163.html 2019年1月11日,thinkphp官网发布了安全更新,修复了一个远程代码执行漏洞。主要影响的版本为5.0.0~5.0.23版本。 此次爆出漏洞的ThinkPHP 5.x版本是官方于2015年发布的新一代框架,其中5.0版本于2016年的9月份布。在不久之前,ThinkPHP 5.x版本就曝出远程代码执行漏洞。短短两三个月后,ThinkPHP 5.0 就又曝出了新的远程代码执行漏洞,这说明其框架在安全方面有较大缺陷,预计在日后会遭受更严峻的考验。 ThinkPHP诞生于2006年,是一个国产开源的PHP开发框架,其借鉴了Struts框架的Action对象,同时也使用面向对象的开发结构和MVC模式。ThinkPHP可在Windows和Linux等操作系统运行,支持MySql,Sqlite和PostgreSQL等多种数据库以及PDO扩展,是一款跨平台,跨版本以及简单易用的PHP框架。 目前FOFA系统最新数据(一年内数据)显示全球范围内共有184604个ThinkPHP网站对外开放服务。中国大陆地区使用数量最多,共有134531台,美国第二,共有25106台,中国香港特别行政区第三,共有16978台,日本第四,共有1396台。 全球范围内ThinkPHP网站分布情况(仅为分布情况,非漏洞影响情况) 全球范围内ThinkPHP网站分布情况(仅为分布情况,非漏洞影响情况) 中国大陆地区浙江省使用用数量最多,共有78058台;北京市第二,共有25191台,广东省第三,共有6180台,上海市第四,共有3584台,四川省第五,共有2983台。 中国大陆范围内ThinkPHP网站分布情况(仅为分布情况,非漏洞影响情况) 危害等级严重漏洞原理本次以5.0.20版本为例。 本次漏洞触发点在Request.php文件里的method方法中,该方法的功能主要是判断请求类型。 跟进method方法,这里判断是否存在'var_method',如果存在则执行$this->{$this->method}($_POST); 在config.php中,可以看到 'var_method' 是表单请求伪变量,其默认值为 '_method'。 这里可以POST _method=__construct用构造函数来进行变量覆盖,实现命令执行。 在构造函数中,会判断其传入参数的key是否是该类属性,如果是,则将对应的value赋值给该属性,可以进行变量覆盖。 再看全局过滤函数filtervalue,根据上一步的变量覆盖,POST filter[]=system,将$filter赋值为array('system'),同时POST 123456=whoami,触发过滤函数,调用call_user_func方法,执行whoami命令。 复现结果: 漏洞影响目前漏洞影响版本号包括: 5.x <= 5.0.23以下基于ThinkPHP 5 二次开发的内容管理系统,很可能受到该漏洞影响,建议厂商及时更新。
- AdminLTE后台管理系统
- layui后台管理系统
- thinkcmf
- H-ui.admin后台管理系统
- tpshop
- FsatAdmin
- eyoucms
- LarryCMS后台管理系统
- tpadmin后台管理系统
- snake后台管理系统
- ThinkSNS
- DolphinPHP后台管理系统
- WeMall商城系统
- CLTPHP
- 齐博CMS
- DSMALL
- YFCMF
- HisiPHP后台管理系统
- Tplay后台管理系统
- lyadmin后台管理系统
- haoid后台管理系统
复制代码
|