网站扫描器
打开一个网站,网站浏览器里只显示一个页面。扫描但服务器上跑着多少东西,网站你根本看不见。扫描可能有个忘了删的网站测试后台,可能有个备份数据库赤裸裸挂在根目录,扫描也可能某个老版本插件带着三年前的网站漏洞还在运转。网站扫描器就是扫描干这个的——把那些藏着的、忘了的网站、没锁好的扫描门挨个拧一遍。
我第一次用扫描器是网站拿自己的博客开刀。跑完一轮,扫描报告里跳出一条:/admin_backup/ 目录可访问。网站我愣了半天,扫描那是网站我两年前迁移服务器时随手扔的备份文件夹,里面躺着整个网站的SQL导出文件。当时图省事没删,后来彻底忘了。如果没扫这一下,它大概会一直待在那儿,等某个爬虫路过。
扫描器的工作方式其实不复杂。它手里攥着一份字典,里面塞满了常见路径名——admin、backup、.git、phpinfo.php、wp-config.php.bak,几百上千条。然后对着目标域名一条条拼上去发请求,看返回码。200就是存在,403是被拒但路径对,301是跳转。就这么笨的办法,命中率却出奇地高。因为人懒,懒是安全最大的敌人。
除了猜路径,它还会看页面内容。比如某个页面里混着 <script>alert(1)</script> 这样的东西没被转义,那就是XSS。或者一个表单提交后返回了SQL报错信息,那就是注入点。扫描器不一定会利用这些漏洞,它只负责告诉你:这里有裂缝。
我见过一个案例。某公司官网用的是开源CMS,版本号写在页面源码的meta标签里。扫描器读到版本号,比对已知漏洞库,直接列出三条可利用的CVE。整个过程不到十秒。管理员可能觉得自己网站小,没人盯着。但扫描器不挑目标大小,它只认版本号和配置。
当然,扫描器不是万能的。它吵。请求发得太快,服务器日志里全是你的IP,容易被封。它笨。遇到需要登录才能访问的页面,字典再大也白搭。它还会撒谎。有时候返回200是因为服务器把所有不存在的路径都重定向到首页,扫描器分不清“存在”和“假装存在”。所以有经验的人会加参数:限制并发数、设置自定义Header、排除误报规则。调扫描器跟调吉他差不多,弦太紧会断,太松不响。
有人觉得扫描器是黑客工具。其实它更像手电筒。你拿它照自己家墙角,发现漏水,赶紧补。拿它照别人家窗户,那是另一回事。法律边界很清楚:没授权的扫描,哪怕只发一个请求,也可能违法。我自己的习惯是,扫任何非自己的资产之前,先拿到书面许可。邮件也行,聊天记录也行。别嫌麻烦。
工具本身没有立场。Nmap、Nikto、Dirsearch、Burp Suite的爬虫模块,各有各的脾气。Nmap扫端口像敲门,Nikto查配置像翻抽屉,Dirsearch找目录像摸墙缝。组合起来用,效果比单跑一个好。但别指望一键出报告就完事。扫描结果里噪音很多,得自己一条条看,判断哪些是真问题,哪些是误报。这个过程费眼睛,但省不得。
说到底,网站扫描器暴露的是一个事实:你以为关好的门,可能只是虚掩着。定期扫一扫,比出事之后熬夜查日志强。