从一个赌约开始:深挖古董官网
话说回来,我怎么会跑去研究《女巫训练师》这游戏的官网和后台结构?
起因特别扯淡,周末我带着刚上初中的侄子,他在那儿吹牛,说他能找到任何一个游戏网站的隐藏页面。我当时就笑了,心想现在的小孩,学了点皮毛就敢叫板。我随手就打开了这个官网,挑了一个看上去老旧、维护不善的站点,就是这个《女巫训练师》。我说,你别光说不练,我给你三天,你要是能把他们网站的内部结构图给我扒拉出来,我给你一千块钱。钱是小事,面子不能丢。
开始动手:简单粗暴的试探
侄子当然搞不出来,他只会用百度。所以还是得我亲自下场。我这个人就是这样,一旦答应了的事,哪怕是跟小孩打的赌,也得做出点名堂来。
我没用那些花里胡哨的专业工具,就从最基础的开始。打开浏览器,F12工具一开,先看他们家前端的结构。好家伙,代码写得跟上世纪的古董一样,CSS文件、JS文件,文件名都乱七八糟,一看就是好几年前没怎么维护了。这对我来说反而是好事,越是老旧的系统,越容易留下“历史遗留问题”。
我当时的目标很明确,不是要破坏什么,而是要摸清他们官网的目录深度和资源存放的习惯,看看有没有通过简单的路径遍历就能找到的测试页面或者上传入口。
- 第一步:环境准备与简单探测。 我设置了一个很简单的Python脚本,这个脚本主要任务就是两个:一是跑一遍他们网站的子域名,结果没啥惊喜,都是常规的www和mail。二是跑一遍常用的后台路径字典,看有没有直接爆破出来的。
- 第二步:深度爬取与数据清洗。 既然爆破不行,那就开始爬取深度。我把爬虫设置得深挖五层,把所有能找到的路径全部给我列出来。这个过程简直就是噩梦。
- 第三步:清理与验证。 这网站里边有大量的死链和无限重定向,每次跑到这些地方,程序就会卡住几分钟,我得手动去清理和跳过。我连续两天,每天晚上都盯着终端,像个傻子一样,就为了跑完这个破爬虫。
我折腾这事儿的时候,正好赶上我老婆生日。她订了个蛋糕,让我去拿。我当时正忙着调试爬虫的并发数,眼睛都快贴到屏幕上了。她催了我三次,我敷衍了三次,她自己跑去拿了,回来的时候脸臭得跟锅底灰一样,指着我的鼻子说:“你天天就围着这些破代码转,你是跟你电脑结婚了是不是?”
我当时心里也窝火,这个破官网的代码逻辑,简直是人为制造的障碍。有些页面是PHP写的,有些页面又套了个WordPress的皮,数据库链接好像是明文写的,但是却藏在了某个加密过的JS文件里。完全就是一团乱麻的大杂烩。 就像很多小公司一样,技术栈东拼西凑,维护起来一团麻。我只是想看看目录结构,结果差点把这个公司的历史技术栈都摸透了。
最终的记录:一个古老系统的代价
第三天早上,爬虫终于吐出了最终报告。总共找到了四千多个路径,其中百分之三十是重复的,百分之二十是404的。但是,还真让我找到两个惊喜。这就是实践带来的甜头。
第一个,是后台登录页面的一个备份入口,入口文件名叫“login_test_*”,这个页面居然还保留着默认的弱口令配置。虽然直接进去肯定会被拦截,但这个路径的存在本身就是巨大的安全漏洞。
另一个更有意思,一个存放游戏内高清素材的文件夹,路径名非常随便,叫“/temp_upload_2018/”。这个文件夹压根儿没设置任何权限,我直接就能进去,里面全是高分辨率的CG图和原画素材。虽然不是什么敏感信息,但对于一个商业游戏来说,这些素材不加密、不设限地裸奔在公网,简直是巨大的失误。这说明他们在做服务器迁移或者版本更新的时候,根本没有仔细清理旧文件和旧权限。
我把这个发现截图整理了一下,扔给了我侄子,让他自己去分析,也算是给他一个教训:技术活,得踏踏实实地干。我把那一千块钱扔给他,他高兴得不行。可我?为了这几张CG图和一个备份登录页,我付出的代价是整整三天没睡好觉,加上老婆三天没给我好脸色看。 实践出真知,但也实践出了一肚子火。
我的这份记录,就是最好的证明:在工程领域,从来就没有什么高大上的工具能解决一切,很多时候,你只是需要足够多的耐心,去面对前人留下的一堆烂摊子。