当前位置:首页 > 探索 > 检测网站漏洞 正文

检测网站漏洞

来源:烟消火灭网   作者:探索   时间:2026-10-17 05:48:13

去年三月,检测我帮朋友看一个刚上线的网站电商小程序。后台日志里有个奇怪的漏洞规律:每天凌晨两点到四点,总有一个IP在商品详情页停留时间超过三小时,检测但翻来覆去只访问同一个SKU。网站朋友说可能是漏洞爬虫,没太在意。检测两周后,网站这个SKU的漏洞库存数据被恶意篡改,价格从199元变成1元,检测凌晨四点被人批量下单,网站天亮前已经发货了。漏洞漏洞不在商品接口,检测而在库存更新接口的网站权限校验——它只检查了用户是否登录,没检查用户是漏洞不是管理员。

这就是检测网站漏洞的日常。不是电影里那种黑进五角大楼的刺激场面,更多时候是盯着Burp Suite的拦截记录,看着一堆200和500状态码发呆。很多人以为漏洞检测就是拿工具扫一遍,等报告出来。真干这行的人知道,自动化扫描器能发现的漏洞,大概只占实际存在漏洞的三成。剩下的七成,得靠人脑去猜、去试、去构造那些工具想不到的输入。

比如SQL注入。扫描器会往参数里塞单引号,看数据库报不报错。但现在的应用普遍做了错误处理,报错信息不会返回给前端。这时候扫描器就瞎了。你得手动构造盲注,用时间延迟来判断。我记得有个新闻网站,搜索框的参数是?keyword=xxx,扫描器说安全。我试了keyword=xxx' AND SLEEP(5)--,页面加载了整整五秒。数据库是MySQL,没跑。

XSS更麻烦。反射型XSS扫描器还能应付,存储型就难说了。你提交一段脚本,它可能被过滤、被转义、被截断。得试各种编码:HTML实体、URL编码、Unicode、十六进制。有次我在一个论坛的签名档里测试,直接写<script>alert(1)</script>被过滤了。换成<img src=x onerror=alert(1)>,还是被过滤。最后用<svg/onload=alert(1)>,弹窗出来了。过滤规则写得不全,只盯着script标签。

文件上传漏洞的检测更依赖经验。你上传一个.php文件,服务器返回“不支持的文件类型”。改成.php.jpg,还是不行。改成.php%00.jpg,有些老版本PHP会截断。再不行就改Content-Type,把application/x-php改成image/jpeg。我见过一个后台,前端用JavaScript校验文件后缀,后端只检查Content-Type。把木马文件的后缀改成.jpg,Content-Type改成image/jpeg,直接上传成功。后来拿到shell,发现网站根目录下有个backup.zip,里面是全部源码。

逻辑漏洞是最容易被忽略的。比如密码找回功能,验证码是四位数字,没有次数限制。写个脚本从0000试到9999,十分钟就能重置任意用户的密码。还有越权访问,把URL里的user_id=1001改成user_id=1002,就能看到别人的订单。这种漏洞扫描器基本发现不了,因为它不知道1001和1002之间有什么关系。

检测网站漏洞这件事,工具是辅助,思路是核心。你得站在开发者的角度想:他可能在哪偷懒了?参数校验是不是只做了前端?权限判断是不是只看了Cookie里的role字段?数据库查询是不是直接拼接了字符串?把这些问号一个个拉直,漏洞就出来了。当然,前提是你有授权。没授权的检测叫攻击,不叫检测。

最后说个数据。根据我自己的记录,过去一年测过的二十三个网站里,有十九个存在至少一个中危以上漏洞。其中十二个是逻辑漏洞,五个是存储型XSS,两个是SQL注入。自动化扫描器平均只报了其中六个。剩下的十三个,都是手工测出来的。所以别太信扫描报告,那东西只能帮你排除掉一些明显的问题。真正的漏洞,往往藏在那些看起来“正常”的请求里。

标签:

责任编辑:综合