****************************。
Prologue
好奇出校码怎么生成的,就试了一下,结果发现了信息泄漏。
Pentesting
在获取出校凭证的 JS 代码中通过一个接口获取出校码:
如果传入错误的 ID,就会报错。这个时候会泄漏部分代码以及数据库密码:
尝试了以下连接数据库,发现数据库设置了远程不可登录。扫端口,试了 ftp、ssh 弱口令都没有成功。发现一个可疑的 10789 端口:
打开后是 LNMP 安装成功的界面,包括 phpinfo、phpMyAdmin、探针等后台可以进入。扫目录也能看到:
用前面得到的密码,测试在本地可以连接数据库:
在 phpMyAdmin 中可以用相同的密码登录管理后台。之后进一步还能拿服务器权限:
开放在外网的网站有这种问题,相当于把全校的信息暴露给了别人,对这种不负责任的开发感到很无奈。
Advice
- 修改后端代码,如果 ID 不存在,返回 404 界面;
- 关闭 10789 端口的服务,或者修改 phpMyAdmin 页面文件名,避免被扫目录。
Result
已联系开发,且漏洞已修复。