当前位置:首页 > 娱乐

web漏洞挖掘

去年冬天,洞挖我盯着一个电商网站的洞挖搜索框看了半小时。输入单引号,洞挖页面报错,洞挖数据库版本直接暴露在屏幕上——MySQL 5.7。洞挖这种错误页面就像小偷进门发现主人把保险柜密码贴在冰箱上。洞挖SQL注入没死,洞挖只是洞挖藏得更深了。

很多人以为漏洞挖掘是洞挖拿着扫描器一通乱扫。我试过,洞挖扫出来的洞挖百分之九十是误报,剩下百分之十里又有大半是洞挖鸡肋。真正有意思的洞挖漏洞,往往藏在开发者觉得"这地方不可能有问题"的洞挖角落。

比如参数污染。洞挖一个URL里传两次同样的参数名,PHP取最后一个,ASP.NET取第一个,Node.js的express框架却把它们拼成数组。有次我碰到一个API,前端校验用的是第一个参数值,后端取的是最后一个。把恶意payload塞进第二个参数,前端检查放行,后端照单全收。这种漏洞扫描器根本发现不了,得靠人蹲在那里反复试。

逻辑漏洞更考验耐心。某次一个积分兑换功能,正常流程是:输入兑换数量→系统扣积分→发放商品。我抓包改了数量为负数,系统扣了负积分——等于给我加积分,还发了商品。反复提交几次,账户余额多出一大截。开发者的思维盲区在于,他默认用户会老老实实填正数。这种漏洞没有固定特征,WAF不会拦,代码审计工具也标不出来,只能靠对业务流程的理解去猜哪里可能出岔子。

文件上传是另一个重灾区。黑名单校验扩展名?试试 .phtml、.php5、.pht。白名单校验?看看有没有解析漏洞,比如Apache的 xxx.php.abc 会被当成PHP执行。内容检测?GIF89a文件头加上一句话木马,很多检测直接放行。我见过最离谱的是一个上传接口,校验了MIME类型、扩展名、文件头,唯独没校验文件内容里的 <?php,结果传上去一个图片马,配合本地文件包含直接拿shell。

XSS现在不好挖了,CSP、HttpOnly、前端框架的自动转义把路堵了大半。但DOM型XSS还活着。有次看到一个页面用 location.hash 直接写进 innerHTML,没有过滤。构造一个 #<img src=x onerror=alert(1)> 就弹窗了。这种漏洞服务端根本看不到,payload全在浏览器里跑,日志里干干净净。

挖漏洞这活儿,工具能帮你省力,但替代不了思考。扫描器告诉你这里可能有问题,真正判断能不能利用、怎么利用、影响多大,还是得人来看。我习惯先把目标的所有功能点过一遍,像普通用户一样点来点去,然后挑那些"看起来不太对劲"的地方重点照顾。直觉这东西,靠的是积累——见过的漏洞类型越多,闻到异常味道的敏感度就越高。

别迷信自动化。一个逻辑漏洞的价值,往往比一百个扫描器报出来的反射型XSS高得多。花时间理解业务,比堆工具重要。

分享到: