当前位置: 首页 > 新闻中心 > 技术分享 > 【美亚技术分享】第六十四期:Laravel PHP框架网站重建技术分析

【美亚技术分享】第六十四期:Laravel PHP框架网站重建技术分析

【美亚技术分享】第六十四期:Laravel PHP框架网站重建技术分析



编者按

随着网络技术的发展,违法网站的案件也越来越多,在对这些网站的取证过程中,执法人员经常需要对提取到的网站数据进行重建还原,以方便后续的取证分析工作。


今天刚好是#1024#程序员节,在此美亚柏科技术专家也为大家准备了礼物:精神食粮-以Larvel PHP框架的网站为例,为大家分享下网站重建的方法,祝所有的程序猿、攻城狮们节日快乐,让我们一起来打开这个礼物吧。


一、Laravel框架介绍

Laravel框架是世界上最流行的PHP开发框架,没有之一。现在Laravel框架已成为大型互联网公司及PHP攻城狮们的首选框架。Laravel 框架主要目录如下:


1、App目录:

包含了应用的核心代码;默认情况下,该目录位于命名空间 App 下,你可以通过Artisan命令app:name来修改该命名空间。App目录下包含多个子目录,如Console、Http、Providers等。Console目录包含了所有的Artisan命令,Http目录包含了控制器、中间件和请求等。注意:App目录中的很多类都可以通过Artisan命令生成,要查看所有有效的命令,可以在终端中运行php artisan list make命令。


2、config目录:

包含了应用所有的配置文件;


3、public目录:

这个文件夹是唯一外界可以看到的,是必须指向你web服务器的目录。它含有laravel框架核心的引导文件index.php,这个目录也可用来存放任何可以公开的静态资源,如css,Javascript,images等。


4、storage目录:

该目录存储Laravel各种服务的临时文件,如session, cache, compiled, views, templates。这个目录在web服务器上必须是可以写入的。


5、vendor目录:

包含Composer依赖


6、.env 文件

.env文件位于项目根目录下,作为全局环境配置文件。用以存储一些依赖环境的变量,比如数据库配置等。


1540431578660073.png

二、网站复原示例操作

2.1 准备


2.1.1 数据源

(1)Laravel框架的网站程序 

(2)Mysql 5.7版本的数据库数据


2.1.2寻找适用的网站程序的PHP版本

进入网站程序文件夹,通过命令行执行:php artisan --version


1540431773520951.png

根据官方文档要求Laravel5.2需要php版本5.5.9以上才能正常访问,所以我们选择php5.6的支持库


2.1.3 数据库环境

了解Laravel框架后得知,一般发布的站点配置存储在.env文件中,使用文本编辑工具查发确认该站点使用的是Mysql数据库及Redis缓存服务,如图:


1540431848896931.png

 本地需要部署好对应版本的Mysql服务及任意版本Redis服务。


2.2 复原


2.2.1 启动Web应用

使用命令行php artisan up 启动应用


1540431874894166.png


2.2.2 导入数据库数据

停止已经部署好的数据库服务,将获取到的数据库数据覆盖服务默认的数据库数据,并重新启动数据库服务。


2.2.3 启动缓存服务


1540431900904924.png


2.2.4数据库连接配置

根据.env的配置检查是否满足本地服务配置,并修改相应的信息。


2.2.5启动Web实例服务

利用php artisan serve可以启动php中自带的web服务,而不需要借助Apache等web服务,但仅在php5.5以上版本支持。


1540431935676106.png

这样只要在浏览器中输入localhost:8000即可访问。


1540431956480998.png


2.3后台密码解析


2.3.1 PHP密码散列算法函数说明

到PHP官网查询加密,可找到密码散列算法函数一栏,查找到适用于 (PHP 5.5.0~ PHP 7) 的password_hash-创建密码的散列(hash),说明如下 string password_hash ( string $password , int $algo [, array $options ] )

password_hash() 使用足够强度的单向散列算法创建密码的散列(hash)。 password_hash() 兼容 crypt()。 所以, crypt() 创建的密码散列也可用于 password_hash()。 当前支持的算法:

  • PASSWORD_DEFAULT - 使用 bcrypt 算法 (PHP 5.5.0 默认)。 注意,该常量会随着 PHP 加入更新更高强度的算法而改变。 所以,使用此常量生成结果的长度将在未来有变化。 因此,数据库里储存结果的列可超过60个字符(最好是255个字符)。

  • PASSWORD_BCRYPT - 使用 CRYPT_BLOWFISH 算法创建散列。 这会产生兼容使用 "$2y$" 的 crypt()。 结果将会是 60 个字符的字符串, 或者在失败时返回 FALSE。

  • PASSWORD_ARGON2I - 使用 Argon2 散列算法创建散列。


2.3.2数据库密码字段分析

根据以上php官网加密方式显示,php5.5版本加密方式password_hash处理通过分析数据库中管理员密码字段数据


1540431977698329.png

可以看到密码串前缀都有"$2y$",根据上面的PHP密码散列算法函数说明,推测该密码使用加密算法是CRYPT_BLOWFISH


2.3.3 制作加密串

以"123456"为原始密码制作相同加密密码代码pwd.php

<?php

         $hash= password_hash('123456',PASSWORD_BCRYPT,['cost' => 10]);

         echo$hash;

?>

命令行执行php pwd.php

得到结果


1540432005950788.png


2.3.4 替换密码串

将加密串替换数据库密码;

用123456登陆,成功。


1540432023383840.png

以上,网站重建完成,执法人员可以在重建的网站上进行调查分析。

除了Laravel PHP之外,还有不少其他框架,美亚柏科为了方便广大取证人员,特地对公司取证产品-云勘大师进行了升级,新版本已增加网站重建功能,可以协助取证人员快速完成多种网站架构的重建工作,有效提高网站重建的效率。



1540432186729490.png


美亚柏科"云勘大师"2018献礼!

云勘大师现已开放免费试用3个月(试用期:2018年9月29日-2018年12月31日),如果您感兴趣,可通过以下方式获取试用版软件:

1、联系美亚柏科当地销售人员 

2、客服热线:400-888-6688(语言选择后按1技术支持后选择2介质取证)

3、企业QQ:4008886688


软件版本持续更新中,敬请期待!

若您在产品使用或者试用过程中,有发现问题或者使用建议,欢迎您与我们联系反馈,美亚柏科研发团队将及时解决并完善产品。每一次升级完善,旨在为您带来更好的产品,美亚柏科感谢您一直以来的关注与支持。