Nessus扫完一台对外测试机,漏洞报告里蹦出47个漏洞。扫描高危12个,报告中危21个,漏洞剩下全是扫描低危和info。我盯着那个红色柱状图看了三秒,报告心里清楚:真正能打的漏洞,不超过五个。扫描
这不是报告Nessus的问题。它只是漏洞把已知的、能匹配上的扫描东西全倒给你。就像体检报告上写“窦性心律不齐”,报告听着吓人,漏洞其实很多人都有。扫描关键在于,报告你得会读这份报告。
先看端口,别看漏洞名
很多人打开报告第一眼就翻到“Vulnerabilities”那一页,从上往下挨个看。错了。先看“Ports”那栏。一台机器开了22、80、443、3306、6379、27017。好,Redis和MongoDB都裸奔在公网。这时候你再去漏洞列表里找对应的未授权访问条目,比漫无目的地刷列表快十倍。
我见过一个案例:扫描报告里“Apache Tomcat AJP File Read/Inclusion”标了高危,CVSS 9.8。但实际那台机器只开了8080,AJP的8009端口根本没监听。这个漏洞在报告里就是个幽灵。Nessus的插件逻辑是“检测到Tomcat版本符合条件就报”,它不管AJP有没有开。所以读报告的第一原则:端口决定攻击面,版本决定漏洞是否存在,但配置决定漏洞是否可利用。
那些“中危”里藏着真东西
SSL Medium Strength Cipher Suites Supported——中危。很多人直接忽略。但如果这台机器跑的是内部管理后台,而你又允许员工远程办公,那这个“中危”就是入口。攻击者不需要什么高级技巧,一台笔记本加一个Wi-Fi Pineapple,在咖啡馆就能降级协商到RC4,然后解密会话。
还有“SSH Weak MAC Algorithms Enabled”。低危?看情况。如果SSH端口只对跳板机开放,那确实低危。如果对全公司开放,那就是中危起步。Nessus给的是基础分,你得根据网络位置和资产重要性手动加权。
误报和漏报,都得自己扛
Nessus对Windows补丁的检测经常犯轴。比如KB5001330明明装了,它还是报“Missing Security Update”。原因是它读注册表的方式和实际补丁状态对不上。这时候别急着打补丁,先手动验证。反过来,Nessus对逻辑漏洞几乎无能为力。一个越权访问、一个IDOR、一个SSRF,它扫不出来。所以扫描报告永远只是起点,不是终点。
我自己的习惯:拿到报告先按CVSS 3.0分数排序,然后手动过一遍每个高危项。问三个问题——端口开了吗?版本对吗?配置允许利用吗?三个都是yes,才放进修复队列。否则先标记为“待验证”。
修复优先级不是按分数排的
一个CVSS 7.5的Redis未授权访问,比CVSS 9.8的Tomcat AJP更紧急。因为Redis未授权可以直接写crontab反弹shell,五分钟拿root。而AJP那个,如果8009没开,你有一年时间慢慢修。
还有,别只看单台机器。Nessus报告可以导出为.nessus格式,用vuln management平台聚合。如果你有五十台机器,其中三十台都报了同一个OpenSSL漏洞,那修复优先级要高于一台机器上的十个不同高危。批量修复的成本效益比单点修复高得多。
最后说一句
Nessus报告不是拿来交差的。它是一张地图,标了哪些路可能通到金库。但路上有没有门、门锁没锁、锁是不是坏的,得你自己走过去看。扫描器不会替你思考,也不会替你负责。那个47个漏洞的测试机,我最后修了6个。剩下的41个,要么是误报,要么是环境不允许利用,要么是业务需要必须保留。报告是死的,人是活的。