实验背景:
前段时间,XX 市 XX 局网安部门就涉网犯罪网站后台绕过问题向我进行技术咨询。针对调证回来的服务器镜像,主要有两项任务:其一,进行网站重构;其二,获取网站后台地址以及绕过账号和密码。
本文从取证的角度详细阐述了获取 PHP 网站后台地址的方法以及多种绕过后台密码的方式。
实验环境
实验网站用前文的微交所fastadmin框架的源码
主机名 | IP | 软件 |
Cenots7 | 内网 | BT |
win10 | 内网 | 谷歌浏览器 |
实验要求
1. 理解代码中的登录逻辑,进而对其进行修改。
2. 采用相同的加密方式对明文密码进行加密,将加密后的哈希值替换数据库中的原有哈希值。随后,使用自己设置的明文密码进行加密操作即可。
对服务器进行仿真
备份站点以及数据库,打上Hash,有仿真厂商软件无脑连接就行了。
宝塔正向搭建网站:可将 “XXXX.zip” 网站源码以压缩包形式通过宝塔面板上传至 “/www/wwwroot” 并解压,然后编辑站点基本信息、添加数据库、编辑数据库配置文件、绑定 hosts 域名(内网可以diy域名),最后进行访问。
添加数据库信息需注意:数据库名应与网站源码数据库配置文件的数据库名一致;只能用非 “root” 普通用户,MySQL 安装有默认 “root” 用户具超级权限,网站数据库配置文件显示非 “root” 用户,此时用户和密码可自定义。
配置数据库链接
配置完成
查看配置文件
在一般的PHP网站开发过程中,代码主要写在 “application” 文件夹中,通常会分为前台和后台两个部分。其中,前台一般放置在 “index” 模块中,而后台则一般放在 “admin” 模块中,注意本文是二开cms。
定位前台和后台
后台存在验证码相关特征,这对于寻找源码可能会有一定的帮助,不过在本文的内容中没有发挥作用。
在查看过程中发现,admin.php 文件通常会因较高版本 PHP 的安全考量而被隐藏。如今较新的网站在 PHP 版本较高的情况下,为提升安全性,往往会将后台页面文件 admin.php 重命名为不规则的文件名,以此达到隐藏后台文件的效果。
查看 SQL 相关语句,以寻找与源码相关的语句内容。
查看加盐方式
找了半天以为是后台,去验证的时候发现这玩意是前台登录!
一、修改源码登录逻辑
通过php修改登录逻辑,前台任意用户可以登录
case 'login':
// 直接设置登录成功,不进行账号密码验证
$result['status'] = 1;
$result['msg'] = '登录成功';
$result['url'] = url('index/index');
break;
}
经过长时间的查找,最终找到了管理员登录页面。主要依靠使用 IDA 编辑器对整个源码内容进行关键词 “salt” 的搜索。
public function login($username, $password, $keeptime = 0)
{
// 直接设置登录成功状态,跳过原有验证
$admin = new Admin();
$admin->id = 1; // 假设一个默认的管理员 ID
$admin->username = 'anyuser';
$admin->token = Random::uuid();
Session::set("admin", $admin->toArray());
$this->keeplogin($keeptime);
return true;
}
修改后台逻辑,随便用户名、密码输入即可登录。
查看用户名与源码一致
二、替换加盐
看看后台管理员的表
对后台用户进行 cmd 解密,运气好直接出来。
如果解密失败,用以下方法
密码(password):3d66ce6a208d89bf833dd8e7ccf46fa2
密码盐(salt):02a3eb
这里我已经更改过了,再进一下后台。
此方法只适合PHP FastAdmin框架,理论上同框架的密码可以通用!
原文始发于微信公众号(网络安全与取证研究):技战法:重构PHP涉网犯罪后台登录绕过
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论