【网络取证篇】取证实战之PHP服务器镜像网站重构及绕密分析
【网络取证篇】取证实战之PHP服务器镜像网站重构及绕密分析
在裸聊敲诈、虚假理财诈骗案件类型中,犯罪分子为了能实现更低成本、更快部署应用的目的,其服务器架构多为常见的初始化网站架构,也称为站库同体服务器!也就是说网站应用程序,数据库及用户账号信息、交易记录,文件(如相关的Apk、视频图片)等资源都部署在同一台服务器中,因此,我们在现场勘验或者获取调证后的涉案网站和数据库都同一个服务器镜像内。
在取证分析时我们通常对服务器镜像进行仿真后,查看历史命令等启动相应服务,进入宝塔面板或修改本地hosts文件等实现网站还原,使用改密或者修改后台登录逻辑等进入后台,用Navical或PHPMyadmin等登录涉案数据库查看相关数据。
然而由于各个案件情况不一致,嫌疑人对网站修改配置各式各样、web中间件或数据库环境受到损坏、一些调证回来的镜像文件本地仿真环境限制等因素导致网站还原失败,从而迟滞了我们案件的进程。
本文通过对某虚假理财类案的调证服务器镜像进行仿真,初始网站还原失败,通过一步步的查找分析配置环境,最后成功重构PHP网站—【凌风、蘇小沐】
1、进入宝塔面板
宝塔面板6.0之后,命令bt集成了很多我们需要的命令,方便我们对宝塔面板相关信息进行修改。
宝塔面板命令行序号 | 注释 |
---|---|
1 | 重启面板服务 |
2 | 停止面板服务 |
3 | 启动面板服务 |
4 | 重载面板服务 |
5 | 修改面板密码 |
6 | 修改面板用户名 |
7 | 强制修改MySQL密码 |
8 | 改面板端口 |
9 | 清除面板缓存 |
10 | 清除登录限制 |
11 | 取消入口限制 |
12 | 取消域名绑定限制 |
13 | 取消IP访问限制 |
14 | 查看面板默认信息 |
15 | 清理系统垃圾 |
16 | 修复面板(检查错误并更新面板文件到最新版) |
17 | 设置日志切割是否压缩 |
18 | 设置是否自动备份面板 |
22 | 显示面板错误日志 |
23 | 关闭BasicAuth认证 |
24 | 关闭谷歌认证 |
25 | 设置是否保存文件历史副本 |
此次涉案服务器中宝塔面板版本低于6.0。输入bt命令后并没有显示相关宝塔的信息。
我们使用老版本宝塔面板登录命令:bt default 得到进入宝塔面板的网址、用户名和初始密码,验证后发现密码错误。
2、使用修改面板密码命令修改密码
使用修改面板密码命令修改密码,例如:改成123456 : cd /www/server/panel && python tools.py panel 123456 ,成功登录宝塔面板。
(一)找回网站源码
1、查找网站源码默认存储位置
登录宝塔面板后,我们发现为空,而且宝塔面板操作日志中仅仅有一条清空日志,回收站中也没有源码。
2、查找宝塔的主数据库配置信息
【宝塔的主数据库路径:/www/server/panel/data/default.db】
宝塔的主数据库,网站信息面板配置什么的都在这里面,随即查看下宝塔面板路径:/www/server/panel/data/default.db中的数据库文件,使用navicat打开发现宝塔面板操作日志,发现有将源码压缩并转移到backup文件夹下的操作记录日志。
然后查找backup路径,在此果然发现了网站源码备份,遂将其还原至默认路径下。
(二)还原网站前台
在启动中间件和MySQL数据库后网站依旧进不去,报错提示无法连接到 MySQL 数据库。
由于前面有更改过许多默认路径及配置,这里猜测比较可能的原因是网站数据库配置文件未配置好。在启动中间件和MySQL数据库后网站依旧进不去,报错提示无法连接到 MySQL 数据库。
由于前面有更改过许多默认路径及配置,这里猜测比较可能的原因是网站数据库配置文件未配置好。
1、定位网站数据库配置文件
在网站源码中发现PHP读取配置文件为:db_settings.PHP。
当然,这里也可以用一种通用的方法快速定位网站数据库配置文件,因为网站数据库中不可避免的会存储数据库的数据库名、用户名、密码等,将网站源码下载到电脑本地后,可以使用FileLocatorPro等文本内容搜索工具搜索包含数据库名"database"或用户名"user"、密码"password"等关键词快速定位到网站数据库配置文件。
2、配置IP
在宝塔面板中修改数据库密码为123456,根据宝塔面板中的数据库名、用户名、密码等配置网站数据库配置文件,保证两者相同。修改网站数据库配置文件中host改为仿真起来ifconfig得到的IP。
这时网站数据库配置文件已经配好了,但是登录网站依旧报错。
3、修改访问权限
剩下的就是访问权限的问题了,在宝塔面板中发现数据库权限为"指定IP"访问,尝试将数据库权限升级为所有人均能访问。
再次登录网站,成功显示登陆页面,还原涉案网站前台。
(三)获取前端管理员账户
1、数据库检索
此时,继续查找有用信息,在数据库中搜索发现用户列表里有管理员信息,猜测其前台登录不仅仅有受害人,也可能有前端管理员权限用户信息。
在网站源码中发现PHP不仅读取配置文件db_settings.PHP。还读取了functions.inc.PHP、main.inc.PHP两个文件。
2、修改登录代码逻辑
遍历之后发现functions.inc.PHP为控制前台用户登录的文件,其中发现登录网站的密码加密盐值不是固定的!!!
【盐值规律:盐值是从0123456789abcdef中随机抽取10个!!!所以我们不能通过随机注册用户后生成的密码密文来替换我们想要登录的某用户!!!】
【破解方法:虽然盐值随机,但是我们可以通过修改代码逻辑进入其它用户,将选中的==(等于)改为!=(不等于),就可以用随便非正确的密码登录任意用户账号!!!】
【破解方法:虽然盐值随机,但是我们可以通过修改代码逻辑进入其它用户,将选中的==(等于)改为!=(不等于),就可以用随便非正确的密码登录任意用户账号!!!】
【破解方法:虽然盐值随机,但是我们可以通过修改代码逻辑进入其它用户,将选中的==(等于)改为!=(不等于),就可以用随便非正确的密码登录任意用户账号!!!】
修改后,使用前端管理员用户名登录显示如下。
3、登入后台管理员界面
在/www/wwwlogs/路径下找到网站登录日志,找到后台登录网址。
在数据库中找到后台登录账号和密码密文。
此密码密文为32位,推测是MD5加密,在线解密得明文密码。
随即用管理员账号成功登陆后台。
(四) 【后台绕密拓展思考】
如果密码不是MD5加密,或者说MD5解密不出来,我们也可以修改源码逻辑进入,首先用虚假的账号和密码登录后台,查看报错内容。
然后在宝塔面板中网站源码页面点击文件查找,输入报错内容,点击包含子目录,点击查找,就能查找出包含此报错内容的文件。
随后点击编辑,进入编辑文档界面。
将选中的!(不等于)改成(等于),后台任意密码即可登录。
(五)【本案启示】
一是熟悉工具各种参数配置文件信息等。比如宝塔面板,我们通常用命令bt就能查看修改宝塔相关信息,但殊不知在宝塔6.0以下版本并没有集成到bt中,需要用复杂的命令行进行解析。
二是在网站源码丢失时,可以通过宝塔面板日志或在服务器中敲击"history"命令查看输入过的历史命令,来了解嫌疑人历史相关操作,从而有可能找回源码。
三是网站前台也有可能会有部分特权用户,也就是前端管理员用户,进入其管理页面后可以获取相关权限,了解更多信息。其管理的小队成员列表更能帮助我们迅速理清人物架构。
四是网站后台的寻找和破密、绕密,方式多种多样,有些时候网站的密码加密盐值不是固定的,密码随机生成,并不能用普通的替换绕密,等等。
以上这些只是个人的一些粗浅看法,在网络高速发展的今天,我们并不能期望对手比我们弱,比我们什么都不懂,这是不现实的!我更期望的是大家积极探讨,集思广益,了解更多的知识,融会贯通,来更好的应用到相关案件服务中。
总结
书写片面,纯粹做个记录,有错漏之处欢迎指正。
公众号回复关键词【网络取证】自动获取资源合集。公众号已接入AI取证小助手,可在公众号内发送问题自动获取简易解答。
【声明:欢迎转发收藏,个人创作不易,喜欢记得点点赞!!!转载引用请注明出处,著作所有权归 [蘇小沐] 所有】
【注:共享资源收集于官网或互联网公开材料,仅供学习研究,如有侵权请联系删除,谢谢!】
记录 |
开始编辑:2024年 11月 28日 |
|
END往期精彩回顾
▲ 【网络取证篇】宝塔面板server和panel的目录功能说明
[
▲ 【镜像仿真篇】WindowsServer服务器镜像仿真
](https://mp.weixin.qq.com/s?__biz=MzI2MTUwNjI4Mw==&mid=2247486098&idx=1&sn=34c4f8668ef0a5a5ad2fb72e648bca2b&scene=21#wechat_redirect)
关注我,了解更多取证知识,别忘了点赞+在看哦!!!
本文转自 https://mp.weixin.qq.com/s/uVcd5tV3Yt-nasX7qn5cOQ,如有侵权,请联系删除。
相关文章:

【网络取证篇】取证实战之PHP服务器镜像网站重构及绕密分析
【网络取证篇】取证实战之PHP服务器镜像网站重构及绕密分析 在裸聊敲诈、虚假理财诈骗案件类型中,犯罪分子为了能实现更低成本、更快部署应用的目的,其服务器架构多为常见的初始化网站架构,也称为站库同体服务器!也就是说网站应用…...
[python]使用 Pandas 处理 Excel 数据:分割与展开列操作
在数据处理的过程中,时常需要对 Excel 表格中的数据进行清洗与转换,下面介绍使用 Python 中的 Pandas 库对 Excel 文件中的数据进行操作,具体包括分割列、展开数据、清除空格以及格式转换等操作。 目标: 读取一个没有表头的 Exc…...
单片机的选择因素
在选择单片机型号时,需要根据具体的应用需求来选择合适的单片机。单片机(Microcontroller Unit, MCU)是一种将计算机的主要部分集成在一个芯片上的微型计算机,它通常包括处理器、存储器、输入/输出接口等。随着技术的发展…...
软件测试兼容性测试丨分布式测试与多设备管理
本文将从分布式测试的概念、重要性以及实施方法入手,紧接着探讨多设备管理的必要性和管理策略,最后分析其对软件测试行业的前景与影响。 分布式测试简介 什么是分布式测试? 分布式测试是指将测试任务分散到不同的计算机或者设备上进行&…...

Linux驱动开发(13):输入子系统–按键输入实验
计算机的输入设备繁多,有按键、鼠标、键盘、触摸屏、游戏手柄等等,Linux内核为了能够将所有的输入设备进行统一的管理, 设计了输入子系统。为上层应用提供了统一的抽象层,各个输入设备的驱动程序只需上报产生的输入事件即可。 下…...

微服务篇-微服务保护:使用 Sentinel 来实现请求限流、线程隔离、服务熔断和 Fallback 备用方案的使用
🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 微服务保护 1.1 请求限流方案 1.2 线程隔离方案 1.3 服务熔断方案 2.0 Sentinel 2.1 Sentinel 安装 2.2 微服务整合 3.0 Sentinel-请求限流 4.0 Sentinel-线程隔离…...

vscode 排除文件夹搜索
排除的文件夹 node_modules/,dist/...
设计模式学习之——装饰者模式
装饰者模式(Decorator Pattern)是一种结构型设计模式,它允许你动态地向一个现有的对象添加新的行为,同时又不改变其结构。 一、定义与特点 定义:装饰者模式动态地将责任附加到对象上。若要扩展功能,装饰者…...
【Vulkan入门】10-CreatePipeline
目录 先叨叨Git信息关键代码TestPipeline::Initialize() 编译运行 先叨叨 到上篇为止已经创建了FrameBuffer和RenderPass。建立Pipeline的先决条件已经具备。本篇就来创建Pipeline。 Git信息 repository: https://gitee.com/J8_series/easy-car-uitag: 10-CreatePipelineurl…...

C++11 (一)
一、 C11的发展历史 C11是C 的第二个主要版本,并且是从 C98 起的最重要更新。 它引入了大量更改,标准化了既有实践,并改进了对C程序员可用的抽象。在它最终由IS0在2011年8月12日采纳前,人们曾使用名称“C0x”,因为它曾…...

系统性能优化
一、概述 性能优化的目标:是提高系统或应用程序的响应时间、吞吐量、cpu、内存、磁盘IO、网络、流量、JVM、Tomcat、DB等方面的性能指标。 性能优化需要有一些技巧:对于整个产品或项目而言,比如可以从前端优化、后端优化、架构优化、高并发…...

IMX6ULL开发板挂载 Ubuntu 的 NFS 目录,并以交叉编译得到的hello程序进行测试
首先参考博文 https://blog.csdn.net/wenhao_ir/article/details/144404637 使得IMX6ULL开发板、PC机上的USB网卡、VMware中的Ubuntu能互相Ping 通 然后开始将Ubuntu 的 NFS 目录挂载到Ubuntu中。 为什么挂载? 答:其实是把 Ubuntu中的某个目录通过NFS网…...
Xcode模拟器运行报错:The request was denied by service delegate
Xcode模拟器运行报错:The request was denied by service delegate 造成的原因: (1)新的苹果M系列芯片的Mac电脑 (2)此电脑首次安装启动Xcode的应用程序 (3)此电脑未安装Rosetta 2 解决方法: …...

ubuntu18.04配置实时内核
ubuntu系统:18.04 当前内核:5.4.0-84-generic 待安装实时内核: 5.6.19-rt11 1、查看当前版本 uname -r 2、下载内核与补丁 一种方式从官网自己下载 官方内核下载地址官方补丁下载地址阿里镜像内核下载地址(速度快࿰…...

Unity中Mesh重叠顶点合并参考及其应用
在Unity中,如果将一个模型文件(比如从max里面导出一个fbx文件)导入到编辑器中之后,Unity会把所有在原来在面列表中公用的顶点复制一份,保证每个三角形使用的顶点都是单独的,不与其它三角形共用顶点…...

倚光科技助力自由曲面设计与加工
近年来,自由曲面因其在光学、汽车、航空航天等领域的广泛应用,受到设计师和工程师的高度关注。自由曲面作为一种具有更高自由度的非球面透镜,能够在光学系统中实现更加精确的光线控制,优化像差校正,并且在满足功能需求…...

PWM调节DCDC参数计算原理
1、动态电压频率调整DVFS SOC芯片的核电压、GPU电压、NPU电压、GPU电压等,都会根据性能和实际应用场景来进行电压和频率的调整。 即动态电压频率调整DVFS(Dynamic Voltage and Frequency scaling),优化性能和功耗。 比如某SOC在…...

[Pro Git#3] 远程仓库 | ssh key | .gitignore配置
目录 1. 分布式版本控制系统的概念 2. 实际使用中的“中央服务器” 3. 远程仓库的理解 4. 新建远程仓库 5. 克隆远程仓库 6. 设置SSH Key 实验 一、多用户协作与公钥管理 二、克隆后的本地与远程分支对应 三、向远程仓库推送 四、拉取远程仓库更新 五、配置Git忽略…...

Freertos任务切换
一、操作系统进行任务切换的时机: 采用信号量实现任务的互斥: 二、FreeRTOS 任务切换场合 PendSV 中断的时候提到了上下文(任务)切换被触发的场合: ● 可以执行一个系统调用 ● 系统滴答定时器(SysTick)中断。 1、执行系统调用 执行系统…...
go开发中interface和方法接收器的使用
Go 语言中的接口和方法接收器学习 Go 中的 interface 就像是一个神奇的魔法杖,能让你轻松地将不同的类型拉到同一个阵营里。与其他语言的接口不同,Go 的接口无需显式声明“我实现了你”,只要你满足了接口规定的方法,Go 就会自动认…...
Nginx+Tomcat负载均衡与动静分离架构
目录 简介 一、Tomcat基础部署与配置 1.1 Tomcat应用场景与特性 1.2 环境准备与安装 1.3 Tomcat主配置文件详解 1.4 部署Java Web站点 二、NginxTomcat负载均衡群集搭建 2.1 架构设计与原理 2.2 环境准备 2.3 Tomcat2配置(与Tomcat1对称) 2.4…...

Vue部署到Nginx上及问题解决
一、Vue打包 dist文件即打包文件 二、下载Nginx,将dist内容全部复制到Nginx的html下 三、修改Nginx的nginx.conf配置文件,添加try_files $uri $uri/ /index.html; try_files $uri $uri/ /index.html; 是 Nginx 配置中的一个重要指令,用于处理…...
如何计算1920*1080分辨率的YUV或RGB图像数据占用大小?
好多开发者在对接大牛直播SDK的时候,经常问到的问题是,1920*1080分辨率的YUV或RGB图像数据,到底多少字节?在音视频图像开发中,19201080(即 Full HD)是一种极其常见的分辨率。但很多开发者在处理…...

分类场景数据集大全「包含数据标注+训练脚本」 (持续原地更新)
一、作者介绍:六年算法开发经验、AI 算法经理、阿里云专家博主。擅长:检测、分割、理解、大模型 等算法训练与推理部署任务。 二、数据集介绍: 质量高:高质量图片、高质量标注数据,吐血标注、整理,可以作为…...

Facebook接入说明
Facebook 原生 Messenger 聊天消息接入到一洽对话中 1、创建 Facebook 主页 进入 https://www.facebook.com/pages/create 页面根据提示创建主页(如果已经有待用主页,可跳过) 2、授权对话权限 1、向您的一洽负责人获取 Facebook 授权链接 2、…...

3 个优质的终端 GitHub 开源工具
1、Oh My Zsh Oh My Zsh 是一个帮助你管理和美化 zsh 终端的开源工具。它让你的终端更炫酷、更高效。安装后,你可以快速使用各种插件和主题,比如常见的 git 命令简化、支持多种编程语言工具等,每次打开终端都会有惊喜。无论你是开发者还是普…...
BeanFactory 和 FactoryBean 有何区别与联系?
导语: Spring 是后端面试中的“常青树”,而 BeanFactory 与 FactoryBean 的关系更是高频卡人点。很多候选人混淆两者概念,答非所问,轻则失分,重则直接被“pass”。本文将从面试官视角,深入剖析这一经典问题…...
从C到C++语法过度1
从C到C语法过度1 文章目录 从C到C语法过度11. 字符串string2. 引用3. 类型转换3.1 新式转换 const_cast3.2 新式转换 static_cast 4. 关键字auto 1. 字符串string C语言从本质上来说,是没有字符串这种类型的,在C语言中如果要表达字符串,只能…...

OneNet + openssl + MTLL
1.OneNet 使用的教程 1.在网络上搜索onenet,注册并且登录账号。 2.产品服务-----物联网服务平台立即体验 3.在底下找到立即体验进去 4.产品开发------创建产品 5.关键是选择MQTT,其他的内容自己填写 6.这里产品以及开发完成,接下来就是添加设…...

Cursor Rules 使用
前言 最近在使用 Cursor 进行编程辅助时,发现 AI 生成的代码风格和当前的代码风格大相径庭。而且有时它会输出很奇怪的代码,总是不符合预期。 遂引出本篇,介绍一下 Rules ,它就可以做一些规范约束之类的事情。 什么是 Cursor R…...