游客发表

nmap查找软件漏洞

发帖时间:2026-10-17 04:52:15

Nmap 本身不是查找漏洞扫描器。它最擅长的软件是端口发现、服务识别和操作系统指纹,漏洞漏洞检测属于 NSE(Nmap Scripting Engine)脚本的查找活儿。很多人把 Nmap 当“扫漏洞神器”,软件其实方向偏了——它更像一把精密螺丝刀,漏洞能不能拧开漏洞这颗螺丝,查找取决于你选对了哪个批头。软件

先看一个真实场景。漏洞某次内网排查,查找我用 nmap -sV -p 445 192.168.1.0/24 扫了一圈,软件发现几台机器开着 SMB 服务,漏洞版本显示为 Windows Server 2008 R2。查找这个信息本身不是软件漏洞,但结合 smb-vuln-ms17-010 脚本,漏洞就能直接判断是否存在永恒之蓝漏洞。命令是:nmap -p 445 --script smb-vuln-ms17-010 192.168.1.10。输出里如果出现 VULNERABLE,那基本就跑不掉了。这里的关键是:Nmap 先告诉你“门在哪”,脚本再告诉你“门锁是不是坏的”。

NSE 脚本分几类:auth、broadcast、brute、default、discovery、dos、exploit、external、fuzzer、intrusive、malware、safe、version、vuln。跟漏洞直接相关的是 vuln 和 exploit。想跑所有 vuln 类脚本,用 --script vuln。但别在生产环境随便跑,有些脚本会触发 IDS 告警,甚至导致服务崩溃。我吃过亏:一次对老旧打印机跑 --script vuln,结果它直接重启了,打印队列全卡住。

具体到常见漏洞,Nmap 能查的其实不少。比如 http-vuln-cve2017-5638 对应 Struts2 远程代码执行,ssl-heartbleed 对应 OpenSSL 心脏出血,ms-sql-info 配合 ms-sql-empty-password 能发现空口令。命令写起来很直接:nmap -p 443 --script ssl-heartbleed 10.0.0.5。输出会显示 State: VULNERABLE 或者 NOT VULNERABLE。但注意,脚本结果不是 100% 准确。有些服务返回的 banner 被篡改过,或者打了补丁但版本号没更新,脚本会误报。我习惯用两个不同脚本交叉验证,比如查 SMB 漏洞时同时跑 smb-vuln-ms17-010 和 smb-vuln-ms08-067,再看系统补丁列表。

速度是个问题。NSE 脚本默认串行执行,扫一个大网段能等到天荒地老。可以加 --script-timeout 30s 限制单个脚本超时,或者用 --min-parallelism 10 提高并发。但并发太高会漏包,尤其是无线网络。我的经验是:内网有线环境设 5-8 个并行,外网或 VPN 设 2-3 个。另外 -T4 比默认 -T3 快,但别用 -T5,那基本等于自找丢包。

还有一点常被忽略:Nmap 的漏洞脚本依赖版本探测的准确性。如果 -sV 没识别出具体版本,脚本可能直接跳过。可以加 --version-intensity 9 让探测更激进。但激进有代价——某些老服务会被探测包搞崩。我见过一台运行了 15 年的 Unix 打印服务器,被 --version-all 扫过后直接无响应,只能硬重启。

最后说个实际组合用法。先 nmap -sS -sV -O -p- --script vuln -oA scan_result 目标IP 做全量扫描,输出保存成三种格式。然后 grep -i "VULNERABLE" scan_result.nmap 快速过滤。如果结果太多,用 --script-args vulns.showall 只看确认有漏洞的。别迷信自动化报告,Nmap 的漏洞脚本只是辅助,真正判断还得靠手工验证——比如用 curl 手动触发一次 HTTP 请求,或者用 smbclient 连一下看返回码。工具给线索,人做决策。

    热门排行

    友情链接