本地靶场搭建与复现步骤预测

前几天我在家里把一台老旧的树莓派翻出来,想给自己练手的CTF队伍装一个本地靶场。说实话,刚开始的时候我还以为只要装几个Docker镜像就能搞定,结果却像在拼装乐高——每块都得对位、每根线都得插对。

搭建前的准备

我先把树莓派刷上最新版的Raspberry Pi OS,顺手把SSH打开,免得每次要拔键盘。然后在本地网络里跑了个arp-scan,把所有活跃的IP扫了一遍,确认目标机器的IP是192.168.1.102,这一步其实比我想象的省了不少时间。

一步步搭建靶场

  • 在树莓派上装Docker,curl -sSL https://get.docker.com | sh,几分钟搞定。
  • 拉取常用的漏洞镜像,例如vulnbox/webgoatvulnbox/juicyshop,每个镜像都配好端口映射。
  • 写一个docker-compose.yml,把所有容器编排在一起,顺手加了个restart: always防止意外掉线。
  • 启动容器后,用nmap -sC -sV 192.168.1.102确认服务是否暴露,发现Webgoat的8080端口竟然直接响应了默认页面。
  • 把靶场的源码目录挂载到宿主机,方便随时修改题目或加入新的漏洞。

复现过程中的小坑

复现一个已知的SQL注入时,我本来打算直接用sqlmap跑,却被容器内部的防火墙拦住了。翻看Docker的网络设置后,我把network_mode: "host"改成了桥接模式,并在iptables里打开了3306端口,问题瞬间消失。还有一次,我忘记给容器加上--cap-add=NET_ADMIN,导致在尝试抓包时提示权限不足,结果只好重新部署一次。

# 示例:启动带调试权限的容器
docker run -d --name juicyshop 
    --cap-add=NET_ADMIN 
    -p 8081:8080 
    vulnbox/juicyshop

预测下一步的演进

站在现在的角度,我觉得本地靶场的下一个趋势会是“自动化题目生成”。如果把每个漏洞的PoC包装成一个可调用的函数,配合CI流水线,直接在提交代码时生成对应的挑战环境,整个复现链路会像玩游戏一样流畅。再配上Prometheus监控容器的CPU、内存使用情况,甚至还能把选手的解题时间做成排行榜,想想就有点小激动。

参与讨论

0 条评论

    暂无评论,快来发表你的观点吧!