Skip to content

PbootCMS内核文件Kernel.php解读(含商业授权码验证机制) #35

Description

@liyujiang-gzu

PbootCMS内核文件Kernel.php加密了,为了评估安全性(比如是否留有后门),特逆向代码了解了内部运作机制,里面都是常规逻辑,大家可以放心使用。

请求进入
    ↓
[1] 模板缓存检查 (qrdkhdcsq...)
    ↓ 未命中缓存
[2] URL信息提取 (cqupdusbt...)
    ↓ 获取PATH_INFO
[3] 域名绑定处理 (hjqwqxtke...)
    ↓ 添加模块前缀
[4] URL路由转换 (hjqprhuq...)
    ↓ 伪静态路由匹配
[5] MVC参数解析 (cquxccqmm...)
    ↓ 解析 m/c/f
[6] 常量定义 (jqcxllpdu...)
    ↓ 定义 M/C/F/P/URL
[7] 环境初始化 (qrdkhrvv4...)
    ↓ 加载配置文件
[8] 授权验证 (qxcqtmqdf...)
    ↓ 检查 LICENSE
[9] 控制器执行 (qrdkhrtuj...)
    ↓ 实例化并调用方法

功能: PbootCMS商业授权码验证机制

授权验证流程:

获取服务器IP
    ↓
计算授权特征码
    ├─ 用户特征码 (SHA1(username) → MD5 → 截取)
    ├─ 主机特征码 (SHA1(server_ip) → MD5 → 截取)
    └─ 域名特征码 (SHA1(domain) → MD5 → 截取)
    ↓
匹配授权码列表
    ↓
设置LICENSE常量 (0-3)
    ↓
验证失败则拦截访问

LICENSE状态码:

含义 说明
0 未授权 无有效授权码
1 域名授权 域名匹配成功
2 IP授权 服务器IP匹配成功
3 用户授权 用户名匹配成功
    define('LICENSE', $license);
    
    // 本地环境豁免
    if (!LICENSE && (filter_var(get_http_host(), FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) 
        || get_http_host() == 'localhost')) { // 这里有一点问题,虽然是本地环境,但是没有豁免端口
        return;
    }
    
    // 非后台且未授权则拦截
    if (!$license && (defined('URL_BIND') && URL_BIND != 'admin')) {
        if (file_exists(ROOT_PATH . '/sn.html')) {
            require ROOT_PATH . '/sn.html';
            exit();
        } else {
            error('未匹配到本域名有效授权码...');
        }
    }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions