引子

还记得大学的时候有个学长,当时觉得很牛逼,玩服务器玩的很6,经常凌晨三四点还在日别人服务器,在学校的时候还被警察请去喝茶了,后来考入厦门理工,又黑了学校的某系统,导致被迫回家呆了一段时间,反正是个很牛逼的人物。

大二的时候就听他说过乌云这个网站,当时并不知道是干啥的,上面的那些漏洞我也都看不懂,没在意。

一晃就要毕业了,大约在13年5月份的时候,偶然打开了一个之前学长给电信做的一个项目,因为主修前端的原因,习惯了火狐,也习惯了Firebug插件,平时上网也都开着firebug。

发现

当我使用正常的方式测试手机号码注册的时候,我发现了一个问题,在post请求的response里面居然直接返回了手机验证码,跟手机收到的验证码一致,当时觉得这就是个逻辑问题,手机验证码怎么能直接返回给前端呢?验证也只是在前端完成,这明显是有问题呀。

我把这个问题反馈给了当时做这个项目的学长,学长表示项目已经过去很久了,而且这个系统电信估计也没有继续使用,有没有维护都不知道。

虽然说系统可能已经废弃了,但是毕竟是电信的系统,这样一个存在漏洞的系统已经在服务器上跑了将近两年的时间,确实让我觉得有点不可思议,难道项目上线的时候就没有经过一点点的测试?

带着问题,我想去找到这个项目的负责人,当然,结果是意料之中的,我并没有找到这个项目的负责人。这个时候我想起了之前学长提到的乌云网,看了乌云当时的一些宗旨发现这正是我想做的,既然我没有办法联系到电信,那就让CNCERT去联系,他一定有办法。

于是我照着其他漏洞的模板,提交了漏洞,过了两天,漏洞审核通过了,我也收到了乌云的邀请码,从此,我便踏上了安全研究这条路。

成长

从那以后,有了自己的乌云id,我便觉得这是一种荣誉,每天工作之余就是刷乌云,学习各种漏洞挖掘技巧,但是当时我没有任何基础,连sql注入是什么都不懂,所以也只是停留在围观大牛的层面上。

直到有一天,我记得好像是7月12号吧,公司里面的一个同事给我看了一张图片,标题是道哥的黑板报。当时我并不知道谁是道哥,也不知道这是干啥的,只知道图片上写的是Struts 2出了严重的命令执行漏洞,编号016。

当时我还是知道Struts2的,因为我大三的毕业实践就是使用三大框架做的一套系统。看到乌云首页上一排下来都是关于struts 2的漏洞,心想,这漏洞好厉害啊,居然各种大网站都中招,我决定去学习下姿势。

当时乌云首页的布局还不是现在的样子,最上面是漏洞预警,就是带闪电的那种都在最上面显示。

很快,网上关于Struts2漏洞利用的工具就出来了,当时也不知道啥叫poc,啥叫getshell,这些词语对我来说就是很高深的专业名词。跟 着网上一些文章,我学会了使用Struts2利用工具(膜拜一波k8拉登哥哥),学会了上传webshell,学会了小马传大马等等很多姿势。

当时公司有个同事JAVA很牛逼,当然,现在他依然是我同事,依然很牛逼,阿里云的云盾还没有现在这么牛逼,拦截并没有那么狠,但是对于常见的 webshell还是反应非常迅速的,这就导致我手上现有的webshell没法使用,所以,同事当时就给我写了一个读取文件的jsp脚本,功能很简单, 但是非常实用,云盾也不会拦截,这个脚本帮助我拿下了很多服务器。

7月是毕业季,我也毕业了,工作繁忙,但是每天依然挤出时间去乌云上学习一些新姿势,提交新发现的漏洞。想想那时候真的很疯狂,有时候一天都提交好几个漏洞。

我是怎么发现那么多漏洞的呢?哈哈,这个我也觉得有点不可思议,有一次我在学习iis解析漏洞的时候偶然发现有一款扫描工具叫做iisput scanner,这个可以用来扫描iis5的put漏洞,但是我发现用它来扫描端口也非常好用。于是我就用这个工具每天扫8080端口,把扫描记录保存在 文本,晚上下班回家后就一个个打开,去刷Struts2 漏洞,很快,我的乌云Rank就涨到了300多,提交通用的漏洞还获得了大量的QB奖励,这让我更加有信心。

转折

因为我使用的扫描工具只用来扫描IP段的8080端口,所以发现的很多漏洞都是一些政府部门的系统,因为那些系统习惯了使用IP地址。

然而,2013年12月31号那天,一切都变了。

那天是周六,天气很好,早上我还在睡梦中,被合租的同事打来的电话吵醒。我心想,就住隔壁房间,咋还打电话呢?同事用很急促的语气跟我说,派出所来 人了,叫我收拾一下。我一下子坐起来,出于本能的走去拿笔记本电脑,我拿起来想了想,藏是不可能的,格盘也来不及了,然后又把笔记本放回去了,跟同事说没 啥好收拾的。

有童鞋肯定很好奇我是不是做了啥犯法的事,不做亏心事不怕鬼敲门,这么顺手的就去拿笔记本肯定是有啥见不得人的东西在里面。其实并不是这样的,玩过 乌云的都知道,在乌云社区里面经常有关于查水表和跑路的帖子,讨论如何保护自己的帖子也有很多,自然而然的在心里就会默认的做出要跑路的举动。静下心来我 想了想,听天由命吧,没做啥亏心事,我怕什么,爱怎么查怎么查。

同事起床去开门,我也穿好了衣服,开了大厅的门,我在我房间里面听得很清楚,进来的人说他们是xx派出所的,紧接着就问xx(我的名字)是不是住在 这。然后同事敲我的房门,一开门,有个人就问我是不是叫xx,我说是,然后叫我把笔记本拿给他,我去拿笔记本,顺便穿了件外套,说实话,福州的冬天也是挺 冷的。

出去客厅我才发现,一共进来的有6个人,便衣,有个人接过我的笔记本就开始拆,我当时就问,我这是出啥事了,你们干嘛要查我,他们才出示相关证件, 说检测到我这里的网络有些异常,过来做些调查。接下来就是做笔录,我的笔录大约做了两个小时,我也如实回答。合租的同事也都做了笔录,同事的电脑硬盘也都 拿去全盘复制了。做笔录期间,手机全部拿出来放到了桌子上,我在客厅,同事都关在另外一间房子里,轮流询问。

这是我第二次做笔录,第一次是大二时候宿舍门被撬,5台电脑被偷,然后报案。

笔录做完也就到了午饭时间,他们留了一个技术员在客厅继续复制硬盘。其他人都出去吃饭了,这个时候我就问那个技术员,我们到底犯了啥事,因为我问其 他人,其他人都闭口不说,技术员看起来挺温和的。技术员告诉我,网络出口那里检测到网络异常,上级发下来的命令,地方上可疑的人物比较多,一个个查过来, 查到我这就已经12月31号了。

吃完饭回去之后,他们几个人的态度一下子变得不太一样了,开始表明他们这次来的目的,也介绍了下他们的工作,我给他们现场演示了一些漏洞扫描方式和扫描技巧,跟技术员交流了一些技术上的问题,当时我电脑上装的还是BackTrack5 R3。

下午就聊到了一些关于我工作的事情,发展方向以及一些私人的问题,最后技术员还告诉我,哪些该做哪些不该做,该注意哪些问题。从那天起,我变得很谨慎,以至于在接下来的几个月没有去乌云上提交漏洞。

再后来我开始深入学习一些漏洞形成的原因,理解漏洞的本质,学习了社会工程学,心理学,明白编程在安全研究上的重要作用,学习了Python,开始快速编写自己的扫描脚本。

通过自己写的一些扫描脚本,我能根据自己的思路快速对某一类的漏洞进行扫描,发现通用案例等等。

现在,我专注于硬件与无线电安全,我相信,在每个领域,都有可以研究的方向,也必须有自己独特的研究方式,因为只有这样,才能从不同的角度发现不同的问题,也才能发现别人发现不了的问题。

安全路上,我还刚刚起步,未来很远...