「技术视界」Web网站还原技术研究
导读
现在计算机大多都是以服务器和客户端的形式为用户提供服务,而在这种服务模式中,网站服务(B/S)以其绝对的优势被大多数企业和个人所采用。在对网站服务进行取证时,我们不仅需要获取到网站的数据与代码,更需要通过数据和代码对网站服务进行还原,以帮助我们快速了解网站服务的业务流程和内容,发现核心内容,快速准确获取证据。本文详细概述网站还原相关的基础知识,并通过案例展示网站还原的全过程,希望对你有参考价值!
一、网站结构
网站的基本结构和流程
任何网站的变化都离不开操作系统,服务器容器,数据库和其他数据文件。
网站设计模式和架构
01.MVC模型
网站的常用设计模式有MVC(Model+View+Controller)。Model是模型,表示存储数据对象。View是视图,表示数据可视化,也就是网页部分。Controller是控制器,用户模型和视图上,控制数据流向模型,并在数据变化时更新视图。
常见的MVC模型Web框架有:PHP的ThinkPHP,Yii,Laravel;Java的Spring,struts,Hibernate;python的Flask和Django等。
MVC网站模型
绝大多数Web应用框架都是以MVC模型进行开发的,熟悉基于MVC开发的Web框架,有利于我们了解网站流程进行网站重建。
02.网站的演变过程
随着网站用户和网站数据的不断增加,原有单独的服务器往往存在性能慢、可用性低、不安全等问题。于是网站从单一的服务器逐渐演变为站库、文件分离模式以及到后面形成的集群服务。
常见的网站模式
Web网站组合方式
在Web开发的过程中开发者通常有固定的组合,因此在进行网站还原时,我们可以基于这种组合推断网站组成的方式,帮助我们了解网站的基本流程,同时可以快速找到各种应用配置文件、数据。当然Web网站的基本组合方式不是一成不变的。主要包含以下几种:
- LAMP/WAMP/LNMPlinux+apache+mysql+phpwindows+apache+mysql+phplinux+Nginx+mysql+php
- WISAwindows+IIS+sqlserver+asp
- JTMjsp+Tomcat+mysql
二、Web服务器
IIS
Internet信息服务(IIS全称为Internet Information Server)是Microsoft创建的可扩展Web服务器软件。发行于1995年5月,是Windows环境下默认的Web服务。
01.管理方式
在windows中,可以通过【启用或关闭windows功能】启用IIS服务。
在计算机管理的【服务和应用程序】中管理IIS服务。
Apache
Apache HTTP服务器项目主要致力于为现代操作系统(包括UNIX和Windows)开发和维护开源的HTTP服务器,提供一个安全、高效且可扩展的服务器,该服务器提供与当前HTTP标准同步的HTTP服务。
Apache HTTP Server(httpd)于1995年推出,自1996年4月以来一直是互联网上最受欢迎的Web服务器之一。
01.目录结构
bin目录包含apache可执行文件和管理工具:
cgi-bin: CGI(公共网关接口[Common Gateway Interface])定义了网站服务器与外部内容协商程序之间交互的方法,是在网站上实现动态页面的最简单而常用的方法
conf目录下的httpd.conf为apache的主配置文件,在网站还原中需要关注以下配置内容:
ServerName:站点名称(网站域名)
ServerRoot:apache站点目录即apache所在目录
Listen:监听端口
DocumentRoot:网站代码存储位置,默认是htdocs目录
Directory:网站目录的访问控制
02.安装方式
windows: 在bin目录下使用命令行执行
httpd -k install (-n name name为Apache服务名称)安装apache服务
httpd -k start 启用apache服务
httpd -k stop 关闭apache服务
httpd -k uninstall (-n name name为Apache服务名称)删除apache服务
03.Linux下以centos为例
sudo yum install httpd 安装apache
sudo systemctl enable httpd 设置自启动
sudo systemctl start httpd 启用apache
Tomcat
Apache Tomcat(简称Tomcat)是Java Servlet,JavaServer Pages,Java Expression Language和WebSocket技术的开源实现。轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是大多数个人或企业的首选,初始发行于1999年。
01.目录结构
02.配置内容
在Tomcat配置文件conf/server.xml中需要关注以下配置内容:
<Service></Service>标签中<Connector/>带有protocol =“HTTP/1.1”的部分。port监听端口默认8080;
<Host></Host>标签中的站点名称默认为localhost,网站所在的位置目录为webapps;
bin目录startup.bat在windows环境启动Tomcat,startup.sh在Linux环境启用Tomcat。
Nginx
Nginx 是一种网络服务器,可以被用作反向代理、负载均衡器、邮件代理和HTTP缓存。该软件由Igor Sysoev创建,并于2004年首次公开发布, Nginx是免费的开源软件。
01.目录结构
02.配置内容
conf/nginx.conf需要关注配置文件server中的内容
listen 监听的端口默认80
server_name 域名
location中root指的是网站代码所在的目录,index表示支持的html页面格式
直接运行nginx.exe就可以启动nginx
03.Linux下以centos为例
sudo yum install epel-release 添加Nginx存储库
sudo yum install nginx 安装nginx
sudo systemctl start nginx 启用nginx
sudo systemctl enable nginx 设置开机自启动
三、数据库
MySQL
MySQL是开源关系型关系数据库管理系统(RDBMS),发行于1995年5月,是最受欢迎的数据库之一,许多公司与个人使用MySQL。MySQL有两个主要版本MySQL5和MySQL8版本,两个版本互相之间不兼容,MySQL5向下兼容。
01.目录结构
02.配置内容
在MySQL官方网站下载的压缩包默认是没有配置文件,需要手动添加my.ini并添加配置内容。
port 监听端口
basedir MySQL程序目录
datadir MySQL数据存放目录
default-character-set 字符编码
bind-address 设置可以访问数据库的IP
在mysql/bin 目录下执行:
mysqld -install安装MySQL
net start mysql 启用MySQL
mysqladmin –uroot –p password 修改MySQL密码
net stop mysql 停止MySQL
mysqld -remove 删除MySQL
03.Linux下以centos7为例
wget
https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
sudo yum localinstall mysql57-community-release-el7-11.noarch.rpm
sudo yum repolist enabled | grep "mysql.*-community.*"
sudo yum install mysql-community-server
sudo yum-config-manager --enable mysql57-community
/etc/my.cnf 配置文件(按照前面配置文件内容)
sudo systemctl start mysqld 启用MySQL
mysql -u root -p 登录MySQL
在MySQL中执行
set password for 'root'@'localhost'=password('newpasswod'),修改密码
sudo yum remove mysql mysql-server 删除MySQL
SQL server
SQL server全称Microsoft SQL Server,是微软开发的关系数据库管理系统。SQL server 2017支持Linux。SQL server 1.0于1989年发行用于OS/2操作系统的16位服务器的第一版本。
SQL server通过图形化可以直接进行安装,网上有很多教程这里不再详述。
Oracle
Oracle数据库通常称为oracle RDBMS简称Oracle,是多模型数据库管理系统,第一个商业化Oracle v2 发行于1979年。Oracle8.0.3开始支持Linux。
01.常见的各种Oracle版本
Oracle 8、oracle 8i:i表示internet,1CD(1CD=650M)
Oracle 9i:oracle8i的稳定版,3CD
Oracle 10g:oracle基于网格计算,1CD
Oracle 11g:oracle 10g稳定版,2G
Oracle 12C:C表示云计算
Oracle在Windows下同样支持图形化安装,有专用的Oracle Linux发行版
四、网站数据
在网站还原中,我们可以从原始数据里查找到使用的操作系统,开发语言,服务器类型,数据库类型,服务器中配置文件位置,网站源代码或其他与网站相关的文件。
常见服务器源代码在Linux中默认目录
Apache:/var/www/html
Nginx:/usr/share/nginx/html
Tomcat:/usr/loca/tomcat/webapps
windows中的Web服务器一般都在C盘内
数据库默认目录和数据文件类型
mysql:/var/lib/mysql/datadir/;.frm 表结构文件,.ibd数据文件,.myi索引文件
SQL server:C:\Program Files\Microsoft SQL Server\;.mdf主数据文件,.ndf次数据文件,.ldf日志文件
Oracle:.dbf文件,.dmp文件
.sql文件是数据库脚本文件,是用于数据库中的标准数据查询语言。在实际的网站还原通常会遇到该类型的数据文件。
在Windows系统中,通过搜索文件后缀名就可以查询数据文件。在Linux中,可以通过find和locate命令查询。
find / -name *.xxx(xxx是文件后缀名)
updatedb 更新locate数据库,locate *.xxx(xxx是文件后缀名)
五、Web网站还原流程
常用的网站还原流程,在给定数据中找到Web服务器和数据库类型,通过Web服务器和数据的配置文件找到网站代码、相关插件和数据库文件所在位置。
将网站数据放在本地Web服务器中,修改数据库连接信息并将数据库数据导入本地数据库,在本地Web服务器中查看网站信息,通过报错来一步步去添加插件和依赖或通过阅读源代码来添加或修改网站源码,直到还原成功。在Tomcat服务器中的网站代码,一般是比较完整打包好的服务器代码,只需要修改数据库连接信息即可。
网站还原的常见流程
网站还原流程
实操案例:PHP网站还原
网站源代码如下:
在数据库目录中发现1603huzhu(2).sql 文件记录了php版本信息;
在include目录下发现了config_global.php记录了数据库连接信息;
在include目录中conn.php查看到使用mysql_query 来设置数据库的编码信息;
较老版本的PHP网站通常是PHP+Apache+MySQL的组合,而我们拿到的是网站源码,此时需要通过推断MySQL和Apache版本。
根据数据库文件的时间来判断数据库为MySQL5版本,MySQL5是向下兼容的,因此我们可以下载较新的MySQL5版本,然而我们并不能推断Apache的版本信息,我们可以通过搜索引擎来帮我们了解与PHP版本对应的Apache的常用版本。
网站还原:搭建PHP+Apache+MySQL环境
01.安装MySQL服务
创建数据库
导入数据库文件。通常使用命令导入数据报错的几率比较小,使用工具可能存在报错,因此建议使用命令导入数据库。
在开始搭建Apache和PHP服务时,通常需要注意它们的平台(x86或x64)版本是否一致,在这里我们下载httpd-2.2.34-win32.zip,php-5.2.17-Win32-VC6-x86.zip,解压之后修改配置文件进行安装。
02.Apache配置文件修改
配置Apache应用所在目录;
配置Apache监听端口为80;
配置网站目录;
配置修改为网站目录
配置scriptalias修改为Apache /cgi-bin/目录;
在Apache\bin执行下面命令安装Apache;
启动Apache服务;
在浏览器中输入localhost看到下面内容表示安装成功。
03.安装PHP
进入PHP目录将php.ini-prc复制一份并重命名为php.ini,php.ini为PHP的配置文件;
修改php.ini中的extension_dir 为ext的绝对路径,相对路径可能不会成功导入ext文件夹内PHP的扩展文件;
去除extension前面的分号以启用PHP扩展;
PHP5.2版本需要修改doc_root为网站的根目录;
配置Apache以启用PHP;
让Apache支持php,并在加入index.php使apache识别以php结尾的文件;
重新启动apache,如果不成功表示Apache配置出错;
在Apache网站根目录添加一个查看PHP信息的PHP文件来查看PHP配置是否生效;
在浏览器中访问localhost/index.php查看PHP信息;
查看PHP的扩展开启状况,这里开启了mysql、mysqli等扩展。
网站还原:用户登录
配置环境成功后我们将网站代码复制到Apache网站根目录下;
在浏览器中访问localhost/huzhu/查看到网站登录页面;
到这里网站已经基本还原成功,但这并不表示网站功能已经还原成功,接着在数据库中我们知道了登录的用户名和密码;
发现用户密码被MD5加密,利用MD5解密工具得到登录密码;
使用用户名和密码,成功完成登录;
到此,从环境搭建入门到网站还原成功已经全部实现。
在网站还原的过程中一定会存在很多错误:服务无法启动、配置报错、网站查询报错等,我们需要了解错误内容,分析原因和定位错误并修改错误,利用好搜索引擎来帮助我们成功还原网站。我们也可以使用集成环境来加快对网站的还原过程,但通过手动配置还原更能让我们熟悉网站的基本组成和原理,对遇到不常见的网站结构能够快速识别和判断。
如对文中的操作、描述有任何疑问,或者有相关案件需要协助,欢迎拨打热线电话028-85211099或直接在微信公众号后台给我们留言。