BeEF 不能挖掘 PHP 漏洞,仅利用已存在的 XSS 漏洞劫持浏览器;需手动验证反射型 XSS,注意输出上下文、过滤与 CSP 限制;hook 上线后仅控制浏览器,无法直接攻击 PHP 服务端。

BeEF 是用来劫持浏览器的,不是挖 PHP 漏洞的
BeEF(Browser Exploitation Framework)只作用于已渲染的 HTML/JS 环境,它无法直接扫描、分析或利用 PHP 源码逻辑漏洞(比如 SQL 注入、反序列化、文件包含)。它能做的,是当目标用户访问了存在 XSS 的 PHP 页面(例如 search.php?q=),且该 XSS 能执行 BeEF hook.js 时,才可把那个用户的浏览器拖进 BeEF 控制台。换句话说:PHP 页面必须先有 XSS 漏洞,BeEF 才有入口。
怎么确认 PHP 页面是否存在反射型 XSS?手动验证最可靠
别依赖全自动扫描器一扫就完事。很多 XSS 被 WAF 拦、被 JS 过滤、被输出上下文截断(比如插在 标签里却进了 HTML 属性),得亲手试。常用验证步骤:
- 在输入点(如 URL 参数
?name=xxx)填入,看是否弹窗; - 如果被 HTML 编码(显示为文本),换
" onfocus=alert(1) autofocus="测试属性闭合场景; - 如果后端用
htmlspecialchars()但没设ENT_QUOTES,试试单引号闭合:' onmouseover=alert(2) x='; - 观察响应包中该参数是否原样出现在
块里——那是执行 JS 的黄金位置,优先插alert(document.domain)。
BeEF hook 怎么塞进 PHP XSS 点?注意路径和 MIME 类型
成功触发 XSS 后,要让目标浏览器加载 BeEF 的 hook.js。默认 hook 地址是 http://192.168.x.x:3000/hook.js,但直接写死可能失败:
- 确保 Kali 上 BeEF 已启动:
beef-xss,且config.yaml中host设为 Kali 实际 IP(不是127.0.0.1); - 如果目标浏览器同网段但打不开 hook.js,检查防火墙:
sudo ufw allow 3000; - 若 PHP 页面用了 CSP(Content-Security-Policy),
script-src 'self'会拦外域 hook.js,此时需改用内网托管或绕过策略(比如找 JSONP 接口 or执行 eval); - 避免用
—— HTTP 页面加载 HTTP hook 可行,但 HTTPS 页面加载 HTTP hook 会被浏览器主动阻止(Mixed Content)。
hook 成功后,在 BeEF 控制台能做什么?别高估它的能力
hook 上线只代表你控制了那个浏览器实例,不是控制了 PHP 服务端。常见误操作:
立即学习“PHP免费学习笔记(深入)”;
- 以为能“从浏览器反向穿透到 PHP 后台”——不能。BeEF 无法读取服务器文件、执行 phpinfo() 或调用
system(); - 想靠 BeEF 发起 SSRF 扫描内网?可以发请求,但响应体拿不到(CORS 限制),只能靠 side-channel(比如 DNS log 回带);
- Hook 后执行
steal cookies模块,拿到的是当前域名下的 Cookie,若 PHP 站点设了HttpOnly,JS 就读不到 sessionid; - 真要打 PHP 漏洞(如 Phar 反序列化),得另写 PoC 在浏览器里构造恶意请求,BeEF 只负责帮你发出去,不负责生成 payload。
真正卡住人的地方从来不是 BeEF 怎么装,而是 XSS 输出点在哪、怎么绕过过滤、怎么绕过 CSP、怎么让 hook.js 不被拦截——这些全在 PHP 页面的上下文里,不在 BeEF 面板上。











