|
去年冬天,漏洞监测我帮一家小公司查服务器。漏洞监测运维说网站总弹赌博广告,漏洞监测查了三天没找到源头。漏洞监测我上去翻了半小时日志,漏洞监测发现一个上传接口没做文件类型校验——攻击者传了个伪装成图片的漏洞监测PHP文件,直接拿到服务器权限。漏洞监测这事不复杂,漏洞监测但暴露的漏洞监测问题很典型:漏洞往往藏在那些“应该没问题”的地方。 漏洞监测不是漏洞监测装个扫描器就完事。很多人以为跑一遍AWVS、漏洞监测Nessus,漏洞监测出一份报告就算交差。漏洞监测实际上工具只能覆盖已知特征,漏洞监测真正要命的漏洞监测是逻辑漏洞和配置疏忽。比如某个后台接口只在前端做了权限判断,后端没校验,换个普通用户token就能调管理员功能。扫描器根本测不出来,得靠人手工抓包、改参数、反复试。 我习惯从三个地方下手。第一是输入点,所有能传数据的地方都值得怀疑——URL参数、表单、HTTP头、Cookie,甚至文件上传的文件名。第二是权限边界,普通用户能不能访问管理员接口?A用户能不能读到B用户的数据?第三是第三方组件,很多项目引了一堆npm包或jar包,版本旧了漏洞一堆,但没人管。去年Log4j2那个洞,我们连夜扫了所有Java服务,发现三个老项目还在用2.0-beta9,运维压根不知道。 监测频率也是个问题。有人觉得季度扫一次就够了。但代码天天在改,新功能上线可能带出新漏洞。我见过一个电商站,大促前加了个优惠券领取接口,没做频率限制,结果被人用脚本刷了十万张券。漏洞从上线到被利用,不到两小时。后来他们改成每次发版都跑一遍自动化扫描,关键接口再加人工复核。 工具方面,开源方案够用。nuclei加自定义模板能覆盖大部分Web漏洞,配合subfinder做资产发现,httpx探活,一套流程跑下来很快。但别迷信工具输出,误报率不低。有次扫描器报了个SQL注入,我手工验证发现是WAF拦截后的假象,实际参数做了预编译。反过来,有些真漏洞扫描器不报,比如越权、验证码复用、支付金额篡改,这些得靠业务理解。 说个具体案例。某次测一个预约系统,正常流程是选时段、填信息、提交。我抓包发现提交时有个字段叫“price”,前端写死0元,后端直接拿这个值入库。改成-100,账户余额反而多了100。这就是典型的参数篡改,扫描器不会管。修复也简单,后端重新计算价格,不信任客户端传的任何金额。 漏洞监测到最后,拼的是细心和耐心。日志要翻,异常请求要跟,版本变更要盯。别指望一劳永逸,没有银弹。我见过最离谱的漏洞是测试环境数据库没密码,直接公网可连,里面还有生产数据。问运维,他说“测试环境无所谓”。这种心态比漏洞本身更可怕。 真要落地,建议每周跑一次自动化扫描,每月做一次人工渗透,每次发版前过一遍关键接口。资产清单得维护,别连自己有多少个域名、多少台服务器都不知道。漏洞管理不是安全团队一个人的事,开发、运维、测试都得参与。否则修了一个,冒出三个,永远在救火。 |