在前几个月,Thinkphp连续爆发了多个严重漏洞。由于框架应用的广泛性,漏洞影响非常大。为了之后更好地防御和应对此框架漏洞,天融信阿尔法实验室对Thinkphp框架进行了详细地分析,并在此分享给大家共同学习。
本篇文章将从框架的流程讲起,让大家对Thinkphp有个大概的认识,接着讲述一些关于漏洞的相关知识,帮助大家在分析漏洞时能更好地理解漏洞原理,最后结合一个比较好的RCE漏洞(超链接)用一种反推的方式去进行分析,让大家将漏洞和框架知识相融合。体现一个从学习框架到熟悉漏洞原理的过程。
一、框架介绍
ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。
二、环境搭建 2.1 Thinkphp环境搭建
安装环境:Mac Os MAMP集成软件
PHP版本:5.6.10
Thinkphp版本:5.1.20
thinkphp安装包获取(Composer方式):
首先需要安装composer。
curl -sS https://getcomposer.org/installer | php
下载后,检查Composer是否能正常工作,只需要通过 php 来执行 PHAR:
若返回信息如上图,则证明成功。
然后将composer.phar 移动到bin目录下并改名为composer:
mv composer.phar /usr/local/bin/composer
Composer安装好之后,打开命令行,切换到你的web根目录下面并执行下面的命令:
composer create-project topthink/think=5.1.20 tp5.1.20 --prefer-dist
若需要其他版本,可通过修改版本号下载。
验证是否可以正常运行,在浏览器中输入地址:
http://localhost/tp5.1.20/public/
如果出现上图所示,那么恭喜你安装成功。
2.2 IDE环境搭建及xdebug配置
PHP IDE工具有很多,我推荐PhpStorm,因为它支持所有PHP语言功能, 提供最优秀的代码补全、重构、实时错误预防、快速导航功能。
PhpStorm下载地址:https://www.jetbrains.com/phpstorm/
Xdebug
Xdebug是一个开放源代码的PHP程序调试器,可以用来跟踪,调试和分析PHP程序的运行状况。在调试分析代码时,xdebug十分好用。
下面我们说一下xdebug怎么配置(MAMP+PHPstrom)
1. 下载安装xdebug扩展(MAMP自带 )。
2. 打开php.ini文件,添加xdebug相关配置
[xdebug]
xdebug.remote_enable = 1
xdebug.remote_handler = dbgp
xdebug.remote_host = 127.0.0.1
xdebug.remote_port = 9000 #端口号可以修改,避免冲突
xdebug.idekey = PHPSTROM
然后重启服务器。
3. 客户端phpstorm配置
3.1 点击左上角phpstorm,选择preferences