有人把一台服务器比作一间房子。Web渗透测试,透测就是意思拿着主人给的钥匙,挨个儿去试窗户、渗试后门、透测地下室通风口,意思看哪扇没锁。渗试区别在于,透测这不是意思小偷踩点,而是渗试安全工程师在授权范围内,用攻击者的透测思路去找漏洞,最后交一份报告告诉主人:你家厨房窗户关不严,意思小偷能翻进来。渗试
我头一回接触这词儿是透测2016年,一个做电商的意思朋友被拖库了,几十万用户数据挂在暗网上卖。他找的团队过来,第一件事不是修防火墙,而是打开浏览器,对着他的网站开始“正常访问”。登录、下单、改地址,每一步都拿Burp Suite抓包看参数。半小时后,他们在优惠券领取接口发现一个参数没做权限校验,把用户ID从1001改成1002,就能领别人的券。再往下挖,那个接口背后连的是主库。你看,漏洞往往不在大门上,而在你忘了关的杂物间。
差在“授权”两个字。没授权的渗透测试叫犯罪,有授权的叫评估。正规流程里,甲方得先签一份授权书,写清楚目标IP范围、测试时间窗口、允许使用的攻击手法。我见过一个乙方工程师,测试时不小心把生产库的索引删了,导致服务挂了二十分钟。虽然有授权书兜底,但甲方照样扣了尾款。所以这行干久了的人,动手前会反复确认:这个注入点,我是用时间盲注还是布尔盲注?前者对数据库压力大,后者慢但稳。选哪个,得看甲方业务能不能扛。
工具倒是其次。Nmap扫端口、AWVS爬链接、sqlmap跑注入,这些学两周就能上手。难的是判断。比如扫出来一个Redis未授权访问,新手直接写个计划任务拿shell,老手会先连上去敲个info,看看里面存的是什么数据。要是缓存的全是商品详情,那可能只是个边缘节点;要是存着session,那就能伪造管理员登录。这个判断过程,靠的是对业务架构的理解,不是工具能替代的。
去年我给一个政务云平台做测试,前后花了三周。第一周基本没碰漏洞扫描器,就在那翻JS文件。现在的前端打包工具会把接口路径、参数名甚至注释都打进map文件里。我找到一个上传接口,前端校验了文件后缀,但没校验Content-Type。抓包改成image/jpeg,传了个jsp上去,直接返回了webshell路径。这要搁扫描器,它只会告诉你“发现文件上传点”,但不会告诉你绕过方法这么简单。
第二周开始横向移动。从那个webshell里翻出数据库连接串,连上去一看,权限是root。但没急着导数据,先看用户表——密码字段是MD5加盐。拿hashcat跑了两小时,出来三个弱口令,其中一个还是admin。登录后台发现有个“数据同步”功能,能把用户信息导出到指定FTP。得,这要是真攻击者,数据早打包带走了。
第三周写报告。漏洞列表按CVSS评分排,但给甲方的修复建议得按业务影响排。那个上传漏洞评分9.8,但修复只要加个白名单校验,半小时的事。反而是一个越权查看工单的漏洞,评分才6.5,但涉及跨部门数据泄露,得改整个权限模型。报告里我写了一句:“你们把精力花在防SQL注入上,但攻击者可能更想直接登录你们的运维VPN。”后来他们真去查了VPN日志,发现有三个账号在异地登录过。
正经开发想的是功能怎么实现,渗透测试想的是功能怎么被滥用。比如一个“忘记密码”功能,开发看的是邮件能不能发出去,测试看的是:验证码能不能爆破?邮箱参数能不能篡改?重置链接里的token有没有时效?我见过最离谱的,重置链接直接把用户ID和过期时间base64编码放URL里,连签名都没有。改个时间戳就能永久有效。
这行做久了,看什么都像漏洞。去超市自助结账,会想能不能改商品条码;用共享单车,会试能不能绕过锁车计费。不是想占便宜,是职业习惯。有个同行去银行办业务,盯着柜员的操作界面看了半天,回来跟我们说:那个系统肯定有越权,因为菜单加载是前端控制的。后来他真去测了,果然。
说到底,Web渗透测试就是一场授权范围内的攻防演练。它不保证系统绝对安全,但能让你知道:如果有人想进来,最省力的路是哪条。然后你可以选择把那条路堵死,或者至少装个摄像头。
```