凌晨两点十七分,入侵我盯着屏幕上的网站登录框,光标在密码栏里一闪一闪。后台那是入侵家本地电商网站,后台地址暴露在robots.txt里,网站管理员账号叫admin,后台密码试了八次——生日、入侵手机号、网站公司名加年份——全部失败。后台第九次我输入"admin123",入侵页面跳转,网站仪表盘出现在眼前。后台就这么简单。入侵多数网站的网站后台,根本不需要什么高深技术,后台只是没人愿意花十分钟去试那些显而易见的组合。
入侵的第一步不是写代码,是观察。打开目标网站,先看它用什么CMS。WordPress?那就查版本号,旧版有公开漏洞,直接打。定制开发的?找它的登录页,大多数开发者的习惯是拿admin当用户名,密码规则逃不出那几个模式。更省事的办法是看它的HTTP响应头,服务器软件、编程语言全暴露在头信息里。有一次我仅凭响应头里的"X-Powered-By: PHP/5.4"就判断出目标站点至少五年没更新,果然,一个2014年的SQL注入漏洞还敞开着。
SQL注入是老古董,但依然有效。在搜索框里输入一个单引号,页面报错,数据库类型直接吐出来。接着用union select把管理员表的密码哈希拉出来,丢进在线破解站,弱密码几秒就出结果。真正麻烦的是那些做了参数化查询的站点,这时候得换思路——找上传点。头像上传功能如果没做文件类型校验,把PHP代码伪装成图片传上去,再通过路径拼接访问到它,服务器就变成你的了。整个过程不需要任何工具,浏览器自带的功能就够。
别迷信那些花哨的渗透测试工具。Nmap扫端口、Burp Suite抓包,这些听起来专业,但大部分网站用不上。我见过最离谱的一次入侵,是直接猜中了后台路径——对方把管理入口放在"/guanli"这个目录下,密码是"123456"。进去之后发现整个后台连个验证码都没有,改个商品价格跟玩似的。后来我跟那家公司的技术负责人聊,他说外包团队做的,上线三年没更新过。
防御方也不是全无办法。最简单的防护是给登录接口加个失败次数限制,超过五次就锁IP。再给后台路径换个不常见的名字,别叫admin或者manage。密码别用键盘顺序——"qwerty"和"1qaz2wsx"这种,破解字典里排前三。更关键的是定期更新CMS补丁,哪怕每季度一次,都能堵住90%的已知漏洞。但现实是,多数企业老板根本不知道后台长什么样,技术员一个人管十几个站点,哪有空管这些。
写这些不是教你干坏事。了解入侵手法,是为了让你知道自己的站有多脆弱。我见过太多小公司,花大价钱买防火墙,却让员工用"abc123"当密码。安全不是买来的设备,是每个细节的习惯。你打开自己的后台,看看登录日志——那些凌晨三点的尝试,可能就是别人在试你的密码。现在,去改个强密码吧,比你想象中要紧得多。