news 2026/7/13 11:36:54

CISP-PTE 靶场环境复现:基于Docker快速搭建5类漏洞实战平台

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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.0+
  • Docker 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-compose

1.2 靶场架构设计

我们的靶场采用模块化设计,每个漏洞场景独立运行在隔离的容器中:

靶场架构图(文字描述): 1. 前端负载均衡:Nginx反向代理 2. SQL注入靶机:MySQL+PHP应用 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: bridge

2.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 rewrite

3. 漏洞场景实现细节

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.sql

CREATE 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/Dockerfile

FROM 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.py

from flask import Flask, request import subprocess app = Flask(__name__) @app.route('/ping') def ping(): host = request.args.get('host', '127.0.0.1') cmd = f"ping -c 1 {host}" try: output = subprocess.check_output(cmd, shell=True) return output.decode() except: return "Ping failed"

4.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/?cmd=ls" > /dev/null curl -s "http://localhost/admin.php?user=admin' OR 1=1--" > /dev/null fi sleep 5 done

5. 环境部署与使用指南

5.1 一键启动与停止

启动所有服务:

docker-compose up -d --build

停止并清理环境:

docker-compose down --volumes

5.2 访问各靶场

服务启动后,可以通过以下URL访问不同漏洞场景:

漏洞类型访问地址默认端口
SQL注入http://localhost:80018001
文件上传http://localhost:80028002
命令执行http://localhost:80038003
日志分析http://localhost:80048004
数据库管理http://localhost:80808080

5.3 教学使用建议

  1. 分阶段教学

    • 初级阶段:关闭容器间的网络隔离,便于理解漏洞原理
    • 高级阶段:启用严格网络策略,模拟真实隔离环境
  2. 自定义难度调整

    • 修改Dockerfile中的安全配置
    • 调整应用代码中的过滤规则
  3. flag设置技巧

    # 在容器中设置flag echo "FLAG_$(date +%s)" > /var/www/html/flag.txt chmod 600 /var/www/html/flag.txt

6. 安全加固与扩展

6.1 靶场安全注意事项

虽然这是用于教学的漏洞环境,但仍需注意:

  1. 网络隔离

    networks: vuln-net: internal: true
  2. 资源限制

    deploy: resources: limits: cpus: '0.5' memory: 512M

6.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')); </script>

7. 故障排查与维护

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 定期维护建议

  1. 更新基础镜像

    docker-compose pull
  2. 备份重要数据

    docker run --rm --volumes-from <container_name> -v $(pwd):/backup busybox tar cvf /backup/backup.tar /path/in/container
  3. 监控资源使用

    docker stats
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/13 11:35:41

从数据切分到精排优化:构建高精度RAG智能导购系统的全链路实践

1. 为什么香水电商需要高精度RAG导购系统 想象一下这样的场景&#xff1a;一位顾客在香水电商平台输入"适合夏天的清新玫瑰香"。传统关键词搜索可能返回所有含"玫瑰"关键词的商品&#xff0c;而普通推荐系统则依赖历史购买数据——但这都无法解决核心痛点&…

作者头像 李华
网站建设 2026/7/13 11:35:12

图像缩放实战:从原理到OpenCV,剖析最近邻、双线性与双三次插值

1. 图像缩放与插值算法基础 第一次接触图像缩放时&#xff0c;我天真地以为就是把图片拉大或缩小那么简单。直到亲眼看到放大后的照片出现锯齿和马赛克&#xff0c;才意识到这背后大有学问。图像缩放本质上是一个 重采样 过程&#xff0c;当我们需要将原始图像的像素网格映射…

作者头像 李华
网站建设 2026/7/13 11:35:06

企业AI转型实战指南:从准备到落地的关键策略

1. 企业AI转型的现状与挑战 过去三年间&#xff0c;超过78%的中国企业启动了AI转型计划&#xff0c;但其中仅有23%达到了预期效果。这个数据背后反映出一个残酷现实&#xff1a;大多数企业在AI转型路上都踩过坑。作为经历过7次企业AI项目落地的技术负责人&#xff0c;我见过太多…

作者头像 李华
网站建设 2026/7/13 11:30:06

终极指南:如何使用Awoo Installer高效安装Switch游戏

终极指南&#xff1a;如何使用Awoo Installer高效安装Switch游戏 【免费下载链接】Awoo-Installer A No-Bullshit NSP, NSZ, XCI, and XCZ Installer for Nintendo Switch 项目地址: https://gitcode.com/gh_mirrors/aw/Awoo-Installer 还在为Switch游戏安装的繁琐流程而…

作者头像 李华
网站建设 2026/7/13 11:29:43

【实战指南】五大主流视频打架行为数据集评测与应用场景解析

1. 五大视频打架行为数据集横向评测搞计算机视觉的朋友们应该都懂&#xff0c;选对数据集就是成功的一半。今天咱们就来盘一盘市面上最常用的五个打架行为检测数据集&#xff0c;从实际项目经验出发&#xff0c;说说每个数据集的"脾气秉性"。先说个真实案例&#xff…

作者头像 李华