不能靠nmap自动识别所有端口服务并匹配漏洞脚本,必须手动指定端口、服务类型及对应脚本;需加-sV提高版本识别率,显式指定非标端口,精准调用脚本如redis-unauthorized、http-vuln-cve2017-10271,并结合--script-args和-T4优化扫描。

怎么用 nmap --script 批量扫指定服务的漏洞
直接结论:不能靠 nmap 自动识别“所有开放端口上运行的服务版本”,再智能匹配漏洞脚本——它不自动做这层映射。你得自己告诉它“哪些端口、什么服务、跑什么脚本”。否则容易漏扫或误扫。
常见错误现象:nmap -p- --script=vuln 扫完一堆 ERROR: Script execution failed,或者只在 22/80 上跑脚本,但目标其实有 8080 上的 Jenkins、27017 上的 MongoDB,这些全被跳过。
- 必须先明确服务类型和端口(比如
http通常对应 80/443/8080,mongodb对应 27017) -
--script=vuln是按“脚本类别”调用,但很多漏洞脚本要求前置服务探测(如http-title或mongodb-info),否则直接跳过 - 批量扫多个 IP 时,建议加
-oN或-oX输出,别只看终端滚动——脚本输出混在大量扫描日志里,肉眼根本找不到关键结果
怎么让 Nmap 知道某端口跑的是什么服务
Nmap 不会凭空猜出 8443 是不是 HTTPS + Apache Tomcat;它依赖 -sV 版本探测,且需配合脚本的 portrule 或 hostrule 触发逻辑。很多漏洞脚本(如 http-vuln-cve2017-5638)只在 service http 且 version 包含 Struts 时才执行。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 务必加
-sV(推荐同时加--version-intensity 9提高识别率) - 对非标端口(如 8080、8443、9200),用
-p8080,8443,9200显式指定,避免-p-浪费时间又降低-sV准确性 - 如果已知服务名,可用
--script-args="http.useragent=Mozilla"等参数辅助脚本运行,但别指望它替代服务识别
怎么安全高效地批量扫一批 IP 的特定漏洞
真实场景中,你往往只关心几个高危服务(如 Redis 未授权、Jenkins 远程代码执行、Elasticsearch 信息泄露),而不是无差别扫全部 vuln 脚本。盲目启用全部脚本不仅慢,还可能触发 WAF 或服务崩溃。
- 用逗号拼接精准脚本名:
--script=redis-info,redis-unauthorized,http-vuln-cve2017-10271 - 用
--script-args控制行为,例如--script-args="redis.timeout=5000"防止超时卡住 - 加
-T4控制扫描节奏(别用-T5,多数漏洞脚本本身较重,-T5反而增加失败率) - 批量扫 IP 列表时,把地址写进
targets.txt,然后用nmap -iL targets.txt [其他参数],别用 shell 循环调用nmap——并发控制和错误处理极差
为什么扫出来没结果,或结果全是 “Not running”
最常被忽略的一点:很多 Nmap 漏洞脚本依赖服务 banner 中的版本字符串。如果目标服务禁用了 banner(如 Nginx 配置了 server_tokens off),或返回了模糊响应(如 HTTP/1.1 200 OK 但没 Server 头),脚本就无法确认服务类型,直接跳过。
- 先人工验证:用
curl -I http://ip:port或nc -v ip port看原始响应 - 对比脚本源码中的
match规则(路径一般为/usr/share/nmap/scripts/xxx.nse),看它到底匹配哪些 banner 字符串 - 某些脚本(如
http-shellshock)需要--script-args="http-shellshock.uri=/cgi-bin/test.cgi"才能生效,缺参数就显示 “Not running” - 防火墙或中间设备(如云厂商 SLB)可能拦截或改写探测包,导致脚本收不到预期响应——这时得换网络环境或加
--packet-trace排查
真正麻烦的不是命令怎么写,而是每个脚本对服务指纹的依赖程度不同、每个目标环境对 banner 的暴露策略不同。别迷信 --script=vuln 一键扫全,花十分钟看三行脚本源码,比多跑五遍扫描有用得多。

















