|
凌晨两点十七分,漏洞访问我盯着屏幕上的漏洞访问404页面,手指在F5键上悬停。漏洞访问这不是漏洞访问我第一次尝试进入那台服务器的后台,但今晚的漏洞访问报错信息有点不一样——它多返回了一个字节。 多出来的漏洞访问那个字符是`%00`。空字节。漏洞访问老派黑客看到这个会心跳加速,漏洞访问因为二十年前的漏洞访问PHP漏洞里,空字节能截断字符串,漏洞访问让`upload.php%00.jpg`变成可执行的漏洞访问PHP文件。但这是漏洞访问2024年,这招早该失效了。漏洞访问 我还是漏洞访问试了。把路径拼上`%00`,漏洞访问回车。页面刷新,没有404,取而代之的是一个登录框。 登录框的标题写着"系统管理入口",下面只有两个输入框,连验证码都没有。我输入`admin`,密码随便敲了几个字母,点击登录。页面跳转,显示"密码错误"。但注意,它没有说"用户名不存在"——这意味着admin账号确实存在。 这种粗糙的提示差异,就是漏洞的入口。我把密码改成`admin`,再试。错误。试`123456`,错误。试`password`,还是错误。我停下来,把目光从键盘上移开,盯着屏幕边缘的浏览器标签页——那个标签页还开着昨天的新闻网站,标题是某公司数据库泄露的报道。 我忽然想到一个细节:这台服务器的响应头里有个自定义字段`X-Powered-By: Express`,但页面底部版权却写着"Powered by ThinkPHP"。两套框架叠在一起,说明开发人员改过架构,但没清理干净旧代码。旧代码里或许藏着硬编码的凭证。 我在URL里尝试常见备份文件:`/backup.zip`,404。`/www.zip`,404。`/old/`,403。403比404好——说明目录存在。我加上`index.php`,还是403。然后我试了`/.git/`,这次返回的不是403,而是200。 目录列表打开了。`.git`文件夹整个暴露在公网。我下载了`config.php`的历史版本,用Git命令比对差异,在三个月前的一次提交里找到了数据库连接字符串。密码是`root123!@#`,用户名是`sa`。这密码看着像实习生写的。 我登录了后台,发现这是一个物业管理系统,里面存着业主的身份证号、手机号、门禁卡记录。系统最后一次登录时间是昨晚11点,操作日志显示有人在导出缴费记录——那不是我。 我关掉页面,把浏览器的隐私模式退出。窗外天快亮了,我忽然觉得,漏洞这东西,有时候不是技术问题。是人的问题。那个实习生写密码的时候,可能觉得没人会翻三个月的提交记录。但漏洞就在那里,像一道没锁的后门,等着某个失眠的人,在凌晨两点十七分,随手推一下。 |