kali怎么挖php漏洞_使用nmap扫描php服务找漏洞点【步骤】

12次阅读

Nmap不能直接扫描php版本或漏洞,仅能发现Web端口、获取基础服务指纹并辅助推测PHP应用存在;需结合特定脚本(如http-php-version、http-enum)探测风险路径,并依赖人工验证响应内容与配置。

kali怎么挖php漏洞_使用nmap扫描php服务找漏洞点【步骤】

直接用 nmap 扫 PHP 服务?别白忙——它不识别 PHP 版本,也不查 PHP 漏洞

很多人以为 nmap -sV 扫出 httphttps 就等于“扫到了 PHP”,其实不是。Nmap 默认只识别 Web 服务器(如 apache/nginx)、后端语言(如 PHP)是靠响应头或路径特征推测的,且极不可靠。它不会告诉你当前运行的是 PHP 7.4.33 还是 8.1.20,更不会报出 phpinfo() 泄露、unserialize() RCE 或 preg_replace() 代码执行这类漏洞点。

真正能定位 PHP 相关漏洞的,是后续的主动探测和人工验证。Nmap 的作用仅限于:发现开放的 Web 端口、获取基础服务指纹、辅助判断是否可能运行 PHP 应用。

  • nmap -p 80,443,8080 -sV --script=http-title,http-headers,http-methods 可看响应头里有没有 X-Powered-By: PHP/8.0.30
  • 若响应头被清理,可加 --script=http-php-version(需 Nmap 7.90+,且依赖 /phpinfo.php/info.php 等默认路径试探)
  • 别依赖 http-php-version 的结果——它成功率低,且会触发 WAF 日志,容易被封

怎么让 Nmap 帮你找到 PHP 漏洞的“入口”?重点扫这些路径和行为

Nmap 本身不挖漏洞,但它的脚本可以帮你快速定位常见 PHP 风险暴露点。关键是选对脚本,而不是盲目扫全端口。

  • nmap -p 80,443 --script http-phpmyadmin-dir-traversal,http-phpself-xss,http-php-version:针对已知高危 PHP 应用路径做试探
  • nmap -p 80 --script http-enum --script-args http-enum.category=php:枚举常见 PHP 调试/信息泄露文件(如 /phpinfo.php/test.php/info.php/install.php
  • 如果扫到 phpMyAdmin,立刻补扫:nmap -p 80 --script http-vuln-cve2012-5806,http-vuln-cve2013-3238(对应老版本 phpMyAdmin 的未授权访问和 XSS)
  • 注意:http-enum 默认不扫 .php 后缀,要加 --script-args http-enum.category=php 或自定义 http-enum.nsepaths 参数

扫出来一 HTTP 200 的 PHP 文件,下一步必须人工验证

Nmap 返回 /phpinfo.php → 200 OK 并不等于“漏洞确认”。很多是空文件、重定向、或返回 200 但内容为空。真实风险要靠手动请求+观察响应体。

立即学习PHP免费学习笔记(深入)”;

  • curl -I http://target/phpinfo.php 先看状态码和头,再用 curl http://target/phpinfo.php | head -30 看实际输出
  • 特别留意是否含 disable_functionsallow_url_include=Onmagic_quotes_gpc=Off(虽已废弃,但老环境仍有影响)等配置项
  • 遇到 /index.php?file= 类参数,别只信 Nmap 的 http-sql-injection 脚本结果——它误报率高。改用 ffuf -u "http://target/index.php?file=FUZZ" -w /usr/share/wordlists/seclists/Fuzzing/LFI-LISTS.txt 更准
  • 如果 Nmap 报出 http-vuln-cve2018-19518thinkphp 5.0.23 RCE),必须验证:发 POST /index.php?s=captcha 看是否返回 eval() 错误或直接执行命令

Kali 里 Nmap 扫 PHP 的几个硬坑,不踩就少浪费两小时

在 Kali 上跑 Nmap 扫 PHP 相关内容,最容易卡在权限、脚本更新、WAF 干扰这三块。

  • 默认 nmap 安装不含最新脚本:运行 sudo nmap --script-updatedb 再扫,否则 http-php-version 可能根本不存在
  • 非 root 权限下 -sS(SYN 扫描)会被拒绝,而 -sT(TCP connect)又容易被 WAF 记为扫描行为——建议先用 sudo nmap -sS -p 80 快速确认端口,再切普通用户跑 --script
  • 遇到目标返回 HTTP 403 但你知道有 PHP 文件(比如从 js 或注释里看到 main.php),别指望 Nmap 自动绕过。得自己构造 User-Agent、加 Referer、或用 --data "a=1" 强制 POST 触发解析
  • http-enum 默认只扫前 100 个路径,遇到自定义路径(如 /app/web/index.php)大概率漏掉——必须配合 -v 查看扫描过程,或换 gobuster/ffuf 补全

真正决定能不能挖到 PHP 漏洞的,从来不是 Nmap 扫出了多少行 200,而是你有没有盯着响应体里的 phpinfo() 输出、有没有在 $_GET 参数里试 php://Filter、有没有对 unserialize() 的输入点做 POP 链验证。Nmap 只是帮你把门推开一条缝,后面全是手上的活。

text=ZqhQzanResources