CISP-PTE 靶场环境复现:基于Docker快速搭建5类漏洞实战平台
CISP-PTE 靶场环境复现基于Docker快速搭建5类漏洞实战平台在网络安全领域渗透测试能力的提升离不开高质量的实战环境。传统搭建漏洞靶场往往面临环境配置复杂、资源占用高、难以复现等问题。本文将介绍如何利用Docker技术快速构建一个包含SQL注入、文件上传、文件包含、命令执行、日志分析等5类经典漏洞的CISP-PTE模拟靶场环境。1. 环境准备与基础架构设计1.1 系统要求与依赖安装在开始之前请确保您的系统满足以下最低要求操作系统Ubuntu 20.04/CentOS 7推荐使用Linux环境Docker版本20.10.0Docker Compose版本1.29.0硬件配置4GB内存20GB磁盘空间安装必要的依赖组件# 更新系统包 sudo apt-get update sudo apt-get upgrade -y # 安装Docker curl -fsSL https://get.docker.com | sh sudo systemctl enable --now docker # 安装Docker Compose sudo curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose sudo chmod x /usr/local/bin/docker-compose1.2 靶场架构设计我们的靶场采用模块化设计每个漏洞场景独立运行在隔离的容器中靶场架构图文字描述 1. 前端负载均衡Nginx反向代理 2. SQL注入靶机MySQLPHP应用 3. 文件上传靶机PHP自定义过滤机制 4. 文件包含靶机PHP多版本环境 5. 命令执行靶机Python Flask应用 6. 日志分析靶机Apache自定义日志生成器2. Docker Compose配置详解2.1 基础服务配置创建docker-compose.yml文件定义共享网络和数据库服务version: 3.8 services: # 共享MySQL服务 db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: insecure_password MYSQL_DATABASE: vulndb volumes: - ./mysql-init:/docker-entrypoint-initdb.d networks: - vuln-net # 管理界面 adminer: image: adminer ports: - 8080:8080 networks: - vuln-net networks: vuln-net: driver: bridge2.2 SQL注入靶机配置添加SQL注入靶机服务配置sqli-target: build: ./sqli ports: - 8001:80 environment: DB_HOST: db DB_USER: root DB_PASS: insecure_password depends_on: - db networks: - vuln-net对应的sqli/Dockerfile内容FROM php:7.4-apache COPY src/ /var/www/html/ RUN docker-php-ext-install mysqli a2enmod rewrite3. 漏洞场景实现细节3.1 SQL注入场景构建在sqli/src目录下创建漏洞页面login.php?php $conn new mysqli($_ENV[DB_HOST], $_ENV[DB_USER], $_ENV[DB_PASS], vulndb); if(isset($_POST[username])){ $query SELECT * FROM users WHERE username.$_POST[username]. AND password.$_POST[password].; $result $conn-query($query); if($result-num_rows 0){ echo Login successful! Flag: FLAG_SQLI_1; } else { echo Invalid credentials; } } ?初始化SQL脚本mysql-init/01-init.sqlCREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50), password VARCHAR(50), is_admin BOOLEAN ); INSERT INTO users VALUES (1, admin, 7b24afc8bc80e548d66c4e7ff72171c5, 1), (2, guest, 084e0343a0486ff05530df6c705c8bb4, 0);3.2 文件上传漏洞实现创建文件上传靶机服务upload-target: build: ./upload ports: - 8002:80 networks: - vuln-net对应的upload/DockerfileFROM php:7.4-apache COPY src/ /var/www/html/ RUN chown -R www-data:www-data /var/www/html/uploads文件上传处理逻辑upload.php?php $upload_dir uploads/; if(isset($_FILES[file])){ $file_name basename($_FILES[file][name]); $target $upload_dir.$file_name; // 脆弱的过滤逻辑 $blacklist array(.php, .phtml, .php3, .php4); foreach($blacklist as $ext){ if(strpos(strtolower($file_name), $ext) ! false){ die(危险文件类型!); } } if(move_uploaded_file($_FILES[file][tmp_name], $target)){ echo 文件上传成功! 路径: .$target; } else { echo 文件上传失败; } } ?4. 高级漏洞场景配置4.1 命令执行漏洞创建命令执行靶机服务rce-target: build: ./rce ports: - 8003:5000 networks: - vuln-net对应的Flask应用app.pyfrom flask import Flask, request import subprocess app Flask(__name__) app.route(/ping) def ping(): host request.args.get(host, 127.0.0.1) cmd fping -c 1 {host} try: output subprocess.check_output(cmd, shellTrue) return output.decode() except: return Ping failed4.2 日志分析挑战配置Apache日志分析靶机log-analysis: image: httpd:2.4 ports: - 8004:80 volumes: - ./logs:/usr/local/apache2/logs - ./log-gen:/log-gen command: sh -c ( /log-gen/gen-logs.sh httpd-foreground ) networks: - vuln-net日志生成脚本log-gen/gen-logs.sh#!/bin/bash while true; do # 生成正常访问日志 curl -s http://localhost/ /dev/null curl -s http://localhost/admin.php /dev/null # 随机生成攻击尝试 if [ $((RANDOM%10)) -eq 0 ]; then curl -s http://localhost/?cmdls /dev/null curl -s http://localhost/admin.php?useradmin OR 11-- /dev/null fi sleep 5 done5. 环境部署与使用指南5.1 一键启动与停止启动所有服务docker-compose up -d --build停止并清理环境docker-compose down --volumes5.2 访问各靶场服务启动后可以通过以下URL访问不同漏洞场景漏洞类型访问地址默认端口SQL注入http://localhost:80018001文件上传http://localhost:80028002命令执行http://localhost:80038003日志分析http://localhost:80048004数据库管理http://localhost:808080805.3 教学使用建议分阶段教学初级阶段关闭容器间的网络隔离便于理解漏洞原理高级阶段启用严格网络策略模拟真实隔离环境自定义难度调整修改Dockerfile中的安全配置调整应用代码中的过滤规则flag设置技巧# 在容器中设置flag echo FLAG_$(date %s) /var/www/html/flag.txt chmod 600 /var/www/html/flag.txt6. 安全加固与扩展6.1 靶场安全注意事项虽然这是用于教学的漏洞环境但仍需注意网络隔离networks: vuln-net: internal: true资源限制deploy: resources: limits: cpus: 0.5 memory: 512M6.2 扩展更多漏洞场景可以通过添加服务来扩展更多漏洞类型xss-target: build: ./xss ports: - 8005:80 networks: - vuln-net对应的XSS漏洞页面示例!-- xss/index.html -- script // 脆弱的DOM XSS示例 const params new URLSearchParams(window.location.search); document.write(Hello, params.get(name)); /script7. 故障排查与维护7.1 常见问题解决问题1容器启动失败解决方案# 查看日志 docker-compose logs service_name # 重新构建单个服务 docker-compose up -d --no-deps --build service_name问题2端口冲突解决方案# 查看占用端口的进程 sudo lsof -i :8001 # 修改docker-compose.yml中的端口映射 ports: - 新的端口:容器端口7.2 定期维护建议更新基础镜像docker-compose pull备份重要数据docker run --rm --volumes-from container_name -v $(pwd):/backup busybox tar cvf /backup/backup.tar /path/in/container监控资源使用docker stats

相关新闻

ct-oval 生成 OVAL XML:深入理解漏洞评估文件格式

ct-oval 生成 OVAL XML:深入理解漏洞评估文件格式

ct-oval 生成 OVAL XML:深入理解漏洞评估文件格式 【免费下载链接】ct-oval This tool is used to parse data from json file/restful api/grpc, and save into DB (sqlite/postgres/mysql). Then generate xml file according to DB, with filter options. The ou…

2026/7/13 11:37:03阅读更多 →
Adobe GenP 3.0:5分钟掌握Adobe全家桶激活的终极指南

Adobe GenP 3.0:5分钟掌握Adobe全家桶激活的终极指南

Adobe GenP 3.0:5分钟掌握Adobe全家桶激活的终极指南 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP Adobe GenP 3.0是一款专为Adobe Creative Cloud软件…

2026/7/13 11:37:03阅读更多 →
ct-oval 核心功能解析:parsejson、parsedir、parseurl 命令详解

ct-oval 核心功能解析:parsejson、parsedir、parseurl 命令详解

ct-oval 核心功能解析:parsejson、parsedir、parseurl 命令详解 【免费下载链接】ct-oval This tool is used to parse data from json file/restful api/grpc, and save into DB (sqlite/postgres/mysql). Then generate xml file according to DB, with filter op…

2026/7/13 11:37:03阅读更多 →
2026 年哪个降 AI 率软件最值得用?实测这款排第一

2026 年哪个降 AI 率软件最值得用?实测这款排第一

2026 年哪个降 AI 率软件最值得用?实测这款排第一 你现在大概率是这样:论文写完往检测系统一扔,AIGC 率飘红一大片,你打开搜索框敲下"哪个降 AI 率软件好",跳出几十个名字,每个都说自己第一。你…

2026/7/13 12:42:10阅读更多 →
pin-for-openEuler构建系统解析:CMake配置与自动化构建教程

pin-for-openEuler构建系统解析:CMake配置与自动化构建教程

pin-for-openEuler构建系统解析:CMake配置与自动化构建教程 【免费下载链接】pin-for-openEuler plugin framework for compiler released as a binary package for openEuler and other OSes. 项目地址: https://gitcode.com/openeuler/pin-for-openEuler 前…

2026/7/13 12:42:10阅读更多 →
腾讯地图逆地址解析 API 对比:坐标转地址的 3 种策略与精度分析

腾讯地图逆地址解析 API 对比:坐标转地址的 3 种策略与精度分析

腾讯地图逆地址解析 API 深度解析:3 种策略与精度优化指南1. 逆地址解析的核心价值与应用场景在现代位置服务应用中,将经纬度坐标转换为人类可读的地址信息是一个基础而关键的需求。腾讯地图逆地址解析 API 正是为解决这一问题而生,它能够将一…

2026/7/13 12:42:10阅读更多 →
OpenClaw:开源AI助手的模块化设计与多模态实践

OpenClaw:开源AI助手的模块化设计与多模态实践

1. OpenClaw现象级爆发的背后:一个AI助手的进化之路当我在GitHub上看到OpenClaw在短短几周内狂揽12万星标时,第一反应是难以置信。作为一个长期关注AI领域的开发者,我深知这个数字意味着什么——这可能是继ChatGPT之后,开源AI领域…

2026/7/13 12:42:10阅读更多 →
VSCode C++ 调试断点失效:3种常见配置错误与 launch.json 关键参数解析

VSCode C++ 调试断点失效:3种常见配置错误与 launch.json 关键参数解析

VSCode C 调试断点失效:3种常见配置错误与 launch.json 关键参数解析调试是开发过程中不可或缺的一环,而断点失效则是C开发者在使用VSCode时经常遇到的棘手问题。当你满怀期待地按下F5,却发现精心设置的断点变成了空心圆点,程序直…

2026/7/13 12:42:10阅读更多 →
关系数据库设计实战:从3个核心概念到1个完整ER图案例

关系数据库设计实战:从3个核心概念到1个完整ER图案例

关系数据库设计实战:从核心概念到完整ER图实现在数字化时代,数据已成为组织的核心资产,而如何高效地组织和存储这些数据则成为每个技术从业者必须掌握的技能。关系数据库作为最成熟、应用最广泛的数据管理方式,其设计质量直接影响…

2026/7/13 12:37:09阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/13 4:47:19阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/13 0:50:34阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/13 4:52:09阅读更多 →
卡梅德生物技术快报|蛋白质分离纯化:肠激酶可溶性原核表达 + 两步层析全参数|标准化蛋白质分离纯化 SOP

卡梅德生物技术快报|蛋白质分离纯化:肠激酶可溶性原核表达 + 两步层析全参数|标准化蛋白质分离纯化 SOP

研究痛点提出(提出问题)重组肠激酶是融合标签切除核心工具酶,当前原核表达体系存在三大标准化难题,直接阻碍可复现的蛋白质分离纯化流程搭建:Trx、GST、单 SUMO 标签融合产物绝大多数为包涵体,沉淀占比超 9…

2026/7/13 0:04:58阅读更多 →
语音转文字工具AsrTools:让音频整理变得简单高效

语音转文字工具AsrTools:让音频整理变得简单高效

语音转文字工具AsrTools:让音频整理变得简单高效 【免费下载链接】AsrTools ✨ AsrTools: Smart Voice-to-Text Tool | Efficient Batch Processing | User-Friendly Interface | No GPU Required | Supports SRT/TXT Output | Turn your audio into accurate text …

2026/7/13 0:04:58阅读更多 →
Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改

Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改

Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改 【免费下载链接】palworld-save-tools Tools for converting Palworld .sav files to JSON and back 项目地址: https://gitcode.com/gh_mirrors/pa/palworld-save-tools 你是否曾经想要调整Palwor…

2026/7/13 0:04:58阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/13 4:21:17阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/13 4:08:53阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/12 21:43:43阅读更多 →