【网络取证篇】取证实战之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日 |
| 最后编辑:2024年 11月 30日 |
END往期精彩回顾
▲ 【网络取证篇】宝塔面板server和panel的目录功能说明
[
▲ 【镜像仿真篇】WindowsServer服务器镜像仿真
关注我,了解更多取证知识,别忘了点赞+在看哦!!!
本文转自 https://mp.weixin.qq.com/s/uVcd5tV3Yt-nasX7qn5cOQ,如有侵权,请联系删除。