渗透测试及漏扫结果
上周三凌晨两点,渗透扫结隔壁组老张盯着屏幕骂了句脏话。测试他刚跑完某政务系统第三轮漏扫,及漏报告里躺着一个高危漏洞——Struts2 远程代码执行,渗透扫结CVE编号老得能当古董,测试补丁发布了四年,及漏对方运维愣是渗透扫结没打。这场景我见多了,测试漏扫工具像X光机,及漏照出骨头裂痕,渗透扫结但真正让系统瘫痪的测试,往往是及漏没人把X光片当回事。
漏扫结果分三六九等。渗透扫结绿盟、测试Nessus这类工具扫出来的及漏“高危”,多半是版本号比对——它看到Apache 2.4.39,就喊“有CVE-2021-41773”,可实际利用条件得开mod_cgi,很多服务器默认关着。所以报告里“严重”级别,我习惯先看响应头、再验证URL参数,最后才信扫描器的判断。真正让我后背发凉的,是那种逻辑漏洞——工具扫不出来,得靠人肉一点一点试。
上个月做某电商平台渗透测试,漏扫结果一片绿,干净得能当教科书。我蹲在登录框前试了俩小时,突然发现密码重置接口不校验旧手机号——只要知道用户名,直接往新号码发验证码就能改密。这漏洞躺在业务逻辑里,扫一万遍也白搭。后来跟开发对线,对方第一反应是“不可能”,我当场录了屏,他才闭嘴。工具是拐杖,走路还得靠脚。
漏扫报告还有个致命伤:误报率。某次金融系统测试,Nessus报了38个“中危”,人工复核后只剩3个真问题。剩下35个全是版本号误判,比如Tomcat明明打了补丁,但版本号没更新,扫描器就瞎嚷嚷。你要是把原始报告直接甩给甲方,人家运维得通宵排查,最后发现全是乌龙,下次就不信你了。所以我的习惯是:每一条漏洞都附上复现步骤和影响范围,宁可多写两百字解释,也别让客户对着IP地址猜。
真正有价值的漏扫结果,应该像病历本——不光写“发烧39度”,还得写“扁桃体化脓,建议青霉素”。上周帮某医院做检查,内网段扫出个Redis未授权访问,工具判“高危”,我顺着网线摸过去,发现那台机器是影像归档系统,存着近三年CT片子。要是被勒索病毒加密,全院手术都得停。后来建议他们做三件事:绑内网IP、开认证、定期改密码。三天后复测,漏洞关了,但我知道隔壁科室还有台MongoDB裸奔着——漏扫是体检,渗透是活检,两者都得做,但别指望一次管一年。
报告写到最后,我总爱加一句“本次未发现可直通核心数据库的路径”,但心里清楚,这只是当前手段下的结论。攻击者可能正蹲在某个隐蔽的API接口旁,等着你下次更新代码时露出破绽。工具在升级,攻击手法也在变,唯一不变的是——你得亲自去验证每一条扫描结果,而不是让PDF替你思考。