Nessus 官方已停止支持 Kali,硬装易因依赖冲突失败;应改用 Docker 运行官方镜像,并启用 PHP-specific 插件、关闭 Safe Checks、确保响应头含 PHP 信息;轻量检测可选 phpscan 或 curl + grep。

用 Nessus 扫 PHP 服务器配置漏洞,Kali 上跑不起来?先确认 Nessus 是否适配
Nessus 官方早已停止对 Kali Linux 的直接支持,apt install nessus 或手动安装 nessus.deb 后常卡在启动服务、Web 界面打不开或提示 Failed to initialize plugin database。这不是你配置错了,是底层依赖(如 libcrypto 版本、glibc 兼容性)和 Kali 默认精简环境冲突导致的。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 别硬装 Nessus 到 Kali —— 改用 Docker 方式运行官方镜像:
docker run -d -p 8834:8834 -v /path/to/nessus-data:/opt/nessus/var/nessus --name nessus tenable/nessus - 确保宿主机已安装
docker.io和curl,首次启动后需用docker logs nessus查看初始管理员密码 -
浏览器访问
https://127.0.0.1:8834时,Chrome/Edge 会因自签名证书报错,点“高级”→“继续前往”即可,别改系统时间或删证书
扫 PHP 配置漏洞,关键不是插件名,而是策略里要启用 PHP-specific 检查项
Nessus 默认策略(Basic Network Scan)几乎不触发 PHP 配置类检查,比如 phpinfo() 页面暴露、display_errors = On、allow_url_include = On 这些风险点,得手动开启对应插件族。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 新建扫描任务时,选择
Advanced Scan模板,进入Plugins标签页 - 搜索关键词:
php、phpinfo、display_errors、expose_php,勾选状态为Enabled的插件(如 ID10719、11652、11936) - 务必关闭
Safe Checks(默认开启),否则 Nessus 会跳过可能引发报错的主动探测(例如尝试请求/info.php) - 如果目标 PHP 服务跑在非标准端口(如 8080、8443),要在
Discovery→Port Scanning中显式添加,不能只靠端口猜测
扫出来一堆 “PHP Version Detection” 警告,但没报配置问题?检查目标是否真返回了 PHP 响应头
Nessus 的 PHP 插件高度依赖 HTTP 响应中的 X-Powered-By: PHP/8.1.2 或 Server: Apache/2.4.52 (Ubuntu) PHP/8.1.2 这类线索。如果目标禁用了 expose_php = Off,且 Web 服务器未在 Header 中泄露 PHP 版本,Nessus 就不会加载后续 PHP 配置检查逻辑 —— 不是漏报,是根本没触发。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 先手工验证:用
curl -I http://target.com看响应头有没有X-Powered-By或Server包含 PHP 字样 - 若无,可临时在目标上加个测试页面
test.php内容为,再扫一次,确认插件能否命中 - 某些 WAF(如 Cloudflare)或反向代理(Nginx)会剥离敏感 Header,此时 Nessus 扫不到 PHP 配置问题属正常现象,得换主机层检测方式(如登录后执行
php -i | grep display_errors)
Kali 里想替代 Nessus 做轻量 PHP 配置检查?用 phpscan 或 curl + grep 组合更可控
对单台 PHP 服务器做快速配置核查,Nessus 太重、启动慢、规则黑盒。Kali 自带工具链反而更直接。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 装
phpscan(非官方但维护活跃):git clone https://github.com/m4ll0k/PHPScan && cd PHPScan && pip3 install -r requirements.txt,然后跑python3 phpscan.py -u http://target.com - 手动检查常见高危配置:用
curl -s "http://target.com/test.php?cmd=phpinfo()" 2>/dev/null | grep -q "PHP Version" && echo "phpinfo exposed" - 批量测
display_errors:写个简单脚本循环请求/test.php?e=1(内容为),看是否输出错误堆栈
真正难的不是扫出问题,而是区分哪些配置项在当前 PHP SAPI(如 FPM vs CLI)、Open_basedir 限制、disable_functions 下实际不可利用 —— 这部分 Nessus 不判断,得人工结合 php -m、php --ini 输出交叉验证。











