|
上周三凌晨两点,网站我盯着Burp Suite的漏洞扫描结果,发现公司官网的检查记录登录接口有个参数叫debug=1。随手一改,网站页面直接吐出了数据库连接字符串。漏洞那一刻我就知道,检查记录这周的网站漏洞检查记录不用编了,全是漏洞真货。 先说最离谱的检查记录。后台管理路径没做鉴权,网站直接访问/admin/dashboard就能看到所有用户订单。漏洞更逗的检查记录是,页面底部还贴心地留了“返回首页”按钮,网站点一下跳回前台,漏洞仿佛在说:欢迎下次再来。检查记录我截了图,在记录里写了一句——“建议把门锁上,而不是在门口放个脚垫。” SQL注入点出现在商品搜索框。输入' OR 1=1 --,整张表都出来了。但有意思的是,开发人员显然做了过滤,只是过滤规则写成了黑名单,把select和union替换成空字符串。于是selselectect绕过去,照样跑。我试了三次,每次都能拿到管理员密码哈希。记录里我标注:黑名单过滤等于没过滤,建议换预编译。 XSS漏洞藏在一个不起眼的用户昵称字段。注册时填<img src=x onerror=alert(1)>,提交后刷新个人主页,弹窗就来了。我本来以为只是反射型,结果发现这个昵称会出现在站内信通知里,变成存储型。更麻烦的是,后台管理员看消息列表时也会触发。这意味着只要一个普通用户注册,就能钓到管理员的Cookie。我在记录里画了个简单的攻击链,旁边写:别用innerHTML,用textContent。 文件上传接口更直接。前端限制只能传jpg,但抓包改成php,服务器照单全收。我传了个test.php,内容就一行<?php echo "pwned"; ?>,访问后直接输出。路径还特别好猜,/uploads/2025/03/test.php。记录里我加粗写了一行:扩展名白名单加文件内容检测,别偷懒。 越权问题有两个。一个是水平越权:改订单ID就能看别人的收货地址和手机号。另一个是垂直越权:普通用户抓包改role=admin,直接进后台。我拿自己小号试的,改完刷新,页面左上角多了个“系统设置”菜单。那一刻我甚至有点想笑——权限校验全靠前端隐藏按钮,后端完全信任客户端传参。 还有几个小问题。比如验证码不刷新,同一个验证码能重复用二十次;比如退出登录只是清了Cookie,服务端Session没销毁,旧Cookie还能继续访问;比如错误页面直接回显SQL语句,连表名都告诉了。这些我都没单独列条目,统一归到“低危但扎眼”分类里。 整理记录时,我按危害等级排了序,但没写“高危、中危、低危”这种标题。直接用了“能直接拿数据的”、“能间接拿权限的”、“看着难受但不致命的”三档。修复建议也没写“建议加强输入验证”这种废话,而是具体到某个文件某一行,比如search.php第47行,把黑名单换成PDO预处理。 最后说个观察。这家公司的安全负责人收到报告后,第一反应是问“有没有被利用的痕迹”。我查了访问日志,发现那个debug=1的接口在过去三个月里被不同IP请求过两百多次。其中有个IP还尝试了debug=2和debug=true。也就是说,我们不是第一个发现的。记录末尾我写了一句:漏洞不会自己消失,但发现漏洞的人会。要么修,要么等着别人先修。 |