DedeCMS V5.7 SP2文件上传漏洞实战:从环境搭建到漏洞利用全流程

DedeCMS V5.7 SP2文件上传漏洞实战:从环境搭建到漏洞利用全流程

最近在整理一些经典CMS漏洞的复现笔记,DedeCMS V5.7 SP2的文件上传漏洞算是其中比较有代表性的一个。这个漏洞编号CVE-2018-20129,虽然已经过去几年,但其中的绕过思路和代码审计方法至今仍有学习价值。今天我就把自己搭建环境、复现漏洞、分析原理的完整过程整理出来,希望能给刚入门安全研究的朋友提供一个清晰的参考路径。

整个流程我会从零开始,包括如何搭建合适的PHP环境、安装特定版本的DedeCMS、配置必要的会员功能,再到一步步触发漏洞、分析代码逻辑,最后还会聊聊这个漏洞的修复方案。如果你之前没接触过DedeCMS或者PHP代码审计,跟着走一遍应该能有不少收获。

1. 环境搭建:构建精准的复现靶场

复现历史漏洞最头疼的就是环境问题,版本不对、配置不对都可能让漏洞无法触发。对于CVE-2018-20129这个漏洞,官方明确影响的是DedeCMS V5.7 SP2正式版(发布日期2018-01-09),PHP版本建议使用5.6.x系列。

1.1 准备基础运行环境

我习惯用Docker来搭建这种一次性的测试环境,既干净又方便。如果你更喜欢用PHPStudy、XAMPP这类集成环境也可以,但要注意PHP版本一定要匹配。

先创建一个简单的Dockerfile:

FROM php:5.6-apache
RUN apt-get update && apt-get install -y \
    libpng-dev \
    libjpeg-dev \
    libfreetype6-dev \
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install gd mysqli pdo pdo_mysql
RUN a2enmod rewrite

用这个镜像启动容器:

docker build -t dedecms-env .
docker run -d -p 8080:80 -v $(pwd)/www:/var/www/html --name dedecms-test dedecms-env

这里把本地的www目录挂载到容器的web根目录,方便我们上传代码。

1.2 获取并部署DedeCMS源码

DedeCMS V5.7 SP2的官方下载链接现在可能不太好找,但一些开源漏洞库或者镜像站还能找到存档。我用的就是这个特定版本:

DedeCMS-V5.7-SP2-UTF8-Full.tar.gz

解压后把uploads目录下的所有文件复制到web根目录:

tar -zxvf DedeCMS-V5.7-SP2-UTF8-Full.tar.gz
cp -r DedeCMS-V5.7-SP2-UTF8-Full/uploads/* ./www/

这时候访问http://localhost:8080/install/index.php应该能看到安装向导了。

1.3 完成CMS安装与基础配置

安装过程有几个关键点需要注意:

  1. 数据库配置:我直接在容器里启动了一个MySQL,也可以用宿主机的,记得创建对应的数据库。
  2. 表前缀:保持默认的dede_就行,改了这个后面有些地方可能要调整。
  3. 管理员账号:设置一个容易记的,比如admin/admin,反正只是测试环境。

安装完成后,先登录后台(默认是http://localhost:8080/dede),检查一下基本功能是否正常。

注意:有些教程会建议关闭一些安全设置,比如关闭图片水印、关闭上传文件类型检测等。但为了还原真实的漏洞场景,我建议保持默认配置,这样更能体现漏洞的“原汁原味”。

2. 漏洞前置条件:开启会员与权限配置

这个漏洞的利用有个前提——需要开启会员系统的文章发布功能。默认情况下,DedeCMS的会员功能是关闭的,需要管理员手动开启。

2.1 后台会员功能配置

登录后台后,找到【系统】→【系统基本参数】→【会员设置】,这里有几个关键选项需要调整:

配置项 推荐设置 说明
是否开启会员功能 必须开启,否则前台没有会员中心
是否开启会员权限 允许会员发布内容
新会员注册需要审核 简化测试流程
会员投稿需要审核 同上,避免审核环节干扰

保存后,还需要在【核心】→【频道模型】中,确保“普通文章”这个频道允许会员投稿。找到“普通文章”的修改界面,在“会员投稿权限”那里勾选允许。

2.2 测试会员账号的创建与登录

配置好后,退出后

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值