一个登录框,渗试漏输入 ' OR 1=1 --,透测回车,洞原直接进了后台。渗试漏这事我见过不下十次,透测每次都是洞原开发把用户输入直接拼进SQL语句里。你以为数据库会乖乖只查用户名密码?渗试漏它把 -- 后面的全当注释了,前面的透测条件永远为真。这就是洞原SQL注入,渗透测试里最老的渗试漏漏洞之一,也是透测最容易上手的。
漏洞的洞原本质不是“代码写错了”,而是渗试漏“数据和指令混在一起了”。SQL注入是透测,XSS也是洞原。比如你留言板里写 <script>alert(1)</script>,浏览器把它当代码执行,而不是当文字显示。开发没做转义,用户输入就变成了一行指令。反射型XSS需要骗人点链接,存储型XSS更狠,只要有人看那个页面就中招。我见过一个电商站,商品评论里塞了盗取Cookie的脚本,管理员一审核,后台权限直接丢。
文件上传漏洞又是另一回事。上传头像的地方,你传个 shell.php,如果服务器没检查后缀,直接就能执行系统命令。有人传 .php5、.phtml 绕过黑名单,或者改 Content-Type 骗过前端校验。更骚的是传个图片马,copy 1.jpg/b + shell.php/a webshell.jpg,图片能正常显示,但里面藏着PHP代码。配合文件包含漏洞,?file=uploads/webshell.jpg,照样解析。
命令注入往往出现在ping测试、DNS查询这类功能里。输入 127.0.0.1; cat /etc/passwd,分号后面就是新命令。开发觉得用了 escapeshellarg 就安全,但管道符 |、反引号、$() 照样能绕。我试过一个路由器管理页面,ping 参数过滤了分号,但没过滤 %0a,换行符直接注入成功。
CSRF不太一样,它不偷数据,而是借你的手办事。你登录了网银,然后点了一个恶意页面,里面藏着一个自动提交的表单,向网银发转账请求。浏览器会自动带上你的Cookie,服务器以为是本人操作。防御靠Token,但很多站只在登录时校验,其他接口裸奔。我见过一个后台,删除用户是GET请求,/admin/deleteUser?id=1,攻击者只要在论坛贴个 <img src="...">,管理员一浏览,用户就被删了。
SSRF是让服务器替你发请求。比如有个“加载远程图片”的功能,你填 http://127.0.0.1:6379,服务器就去连自己的Redis,然后你通过 gopher:// 协议往里写数据,直接拿shell。云环境里更危险,http://169.254.169.254/latest/meta-data/ 能读到IAM临时凭证。很多开发只校验了域名白名单,但没防重定向,你搭个302跳转,照样绕过。
逻辑漏洞最让人头疼,因为扫描器扫不出来。比如密码找回,验证码是4位数,没限制尝试次数,爆破就行。或者修改密码时,没校验旧密码,直接抓包改 userid 就能改别人的。我见过一个商城,优惠券可以叠加使用,coupon_id=1&coupon_id=1&coupon_id=1,下单直接零元购。还有支付时改金额,price=0.01,服务端没重新计算,只信前端传的。
渗透测试不是拿着工具乱扫,而是理解每个漏洞背后的“信任边界”在哪。用户输入永远不可信,但很多开发就是记不住。你问他为什么没做参数化查询,他说“内网系统,没人攻击”。结果内网横向移动,一台被控,全盘皆输。