凌晨两点,进行我盯着Burp Suite里那个红色的全渗告警框,手指在键盘上悬了十秒。透测目标站点的进行登录接口返回了302,但Set-Cookie字段里藏着个奇怪的全渗Base64串——解码后是“admin:0”。这不是透测教科书里的案例,是进行上周真实碰到的漏洞。
渗透测试的全渗本质,就是透测模拟攻击者的思考路径。你不需要先画架构图,进行也不用列checklist。全渗从输入框开始,透测从URL参数开始,进行从任何一个用户能碰到的全渗地方开始。
第一步是透测信息收集,但别把它想得太玄乎。打开浏览器,右键查看源代码,看注释里有没有泄露的API路径。用dirsearch跑一遍目录,重点看那些返回200但没在导航里出现的文件。我习惯把收集到的子域名、端口、CMS指纹先扔进一个txt,这比任何商业扫描器都可靠。
接下来是漏洞探测,这里有个反直觉的要点:别急着上SQLMap或Nuclei。手工点几个请求,观察响应时间差和报错页面的细节。比如一个搜索功能,输入单引号后页面空白,但加上注释符“--+”就正常——这种细微差异比任何自动化工具都早暴露问题。
真正的测试发生在业务逻辑层。拿购物车举例,商品价格是前端传参还是后端数据库计算?把单价改成0.01提交订单,如果结算金额跟着变,那这就是个高危逻辑漏洞。这类问题工具测不出来,得靠人肉构造畸形请求。
文件上传点经常是突破口。试过把php文件的扩展名改成.jpg,然后用Burp抓包改回.php上传,服务器居然没校验MIME类型。更隐蔽的是图片马——在PNG文件末尾追加一句话木马,配合解析漏洞就能getshell。遇到这种情况,我通常会先验证是否能执行命令,然后立刻停止,绝不深入。
别忘了认证机制。很多站点的“记住我”功能就是个金矿。把cookie里的session值从“user_id=123”改成“124”,如果页面显示了另一个人的个人信息,那越权漏洞就坐实了。这种IDOR漏洞在金融系统里能直接看别人账户余额,比SQL注入还致命。
实战里最耗时的不是技术突破,而是判断风险边界。你发现一个命令执行点,但不确定是否在隔离容器里。这时候用sleep 5测试延时,如果响应延迟了,再配合dnslog验证出网情况。整个过程要像外科手术一样精准,每一步都留好日志。
最后写报告的时候,别堆砌CVSS分数。把复现步骤写得像做菜谱——先打开哪个页面,输入什么参数,观察什么变化。我见过太多报告写“存在SQL注入风险”,但连注入点参数名都没标清楚。好的报告应该让开发人员照着就能复现,而不是再花两天时间找漏洞在哪。
渗透测试这行干久了,你会形成一种直觉。看到登录框就想到暴力破解防护是否完善,看到搜索框就联想到XSS过滤规则,看到文件下载参数就琢磨路径穿越。这种敏感度没法速成,只能靠一次次踩坑积累。但每次挖到个意料之外的漏洞,那种快感比打游戏通关强多了。