自学白帽黑客第四年总结
自学白帽黑客第一年总结 自学白帽黑客第二年总结 自学白帽子黑客第三年总结
前言
今年貌似是接触网安的第四个年头了,前三年的确是进展缓慢了,今年做的事情比前三年加起来都要多的多。不是因为前三年自己不想做事情,而是摸不清头脑,找不到方向,连连挫败,自己没有稳定的信息获取渠道,信息搜集能力,没有研究的方法论,也没有伙伴一起,就是自己闷着脑袋往前冲。当自己一顿操作却没有结果,几次下来就打退堂鼓了,信心全无。现在看来就是不知道上哪里学,所以学的太少,学少了就和现实情况脱节,自然就会失败,失败了就畏惧实战,最后就成为理论小子。自己还尝试通过各种实习来获取信息,虽然我认为结交朋友的确可行,但是我不会交朋友,而至于实习/工作的内容本身无法帮助你成长,任何成长都只能靠自己。今年是一个转折年,是一个大落大起的年,落下去虽然痛苦,但是再之后是奋起反弹。 本文想以叙事文的方式展开,因为我觉得这一年我经历的任何事情都对大家会有所启发,无论是技术还是生活。 蓝色代表人名 绿色代表值得关注的资源
如何拿到小米offer
去年发完第三年自学文章之后,紧接着就拿到了小米的offer,当时真觉得是一个奇迹,刨除中间去了护网,大概只用了5、6个月的样子准备,我应聘的是java开发岗位。我为什么要去做开发呢?当时的观点就是,我想先通过做一些开发工作提升开发能力,进而提升自己对漏洞的理解,当然还有一个原因,就是当年(2022年)是全世界的寒冬,是最难找工作的一年没有之一,我当时根本找不到网安的工作(具体原因我后面会分析),虽然距离秋招/春招还有一段时间,但是我不相信在这段时间里我能挖到0day,获得cve编号来让我应聘一个网安工作,他需要的运气成分太大了,我就是这么认为的,当时对网安可谓是一点信心都没有了,网安不是一个只靠努力就可以学好的专业。所以我选择了一个相对稳妥的方案,去做开发,因为开发在网上有很多教程,还有面经,我只要背就可以了,当然实际情况我不只是背,还写了很多代码。还有算法题,我只要努力就可以了,所以可以看到我去年刷了300多道算法题,别看才300道,每道中等以上的题都要思索编写至少20分钟,写出来一个算法题不容易,这半年几乎每天都会抽出几小时至半天的时间写算法。其他时间在学习源码,当时经常半夜睡不着爬起来学习,好多心情感悟都记录在知乎“想法”中了,比如我2022年4月11日看了aqs源码和reentrantlock源码,心情无比的激动。虽然互联网更是寒冬,但我相信只要我非常努力就能找到一份好工作,所以老天还是相对公平的,在我投了上百份简历,做了几十份笔试题,经过了数个一面凉凉之后,我终于在2022年12月20日的时候成功进入了小米的三面,当时三面面对面试官的时候几乎哭出来,无比的激动。现在复盘来,能够成功进入三面,还要得益于自己刷的几本书《Spring Cloud Alibaba微服务原理与实战》《Java多线程编程核心技术》《Java8实战》《maven实战》小林的《图解网络》《图解系统》pdai网站的《java全栈知识体系》还有只看了部分的《深入理解Java虚拟机》《nacos架构与原理》。自己把nacos、dubbo、seata、sentinal、rocketmq官网都刷了一遍,把demo都调通跑了一遍,实现原理都学了一遍,还有看了他们的很多源码。这才面试上了一个技术相对比较水的部门“小米游戏中心”,其同属互联网业务部,号称公司粮仓。 拿到小米offer之后也是先在家附近的植物园狂走了几天,那个心情是无比的放松,在如此恶劣的求职环境下能够找到一个还算满意的offer,简直是天大的幸运。在小米面试的基本上同一时刻我还面试了一个国企,当时也拿下offer了,有趣的是,我只经历了一面(群面)就斩获了offer,全程15分钟左右,一直是我自己在讲,对面问一个问题马上就对答如流,可能是这个国企的部门比小米更水吧。当时家里人还在纠结是去互联网呢,还是去国企呢?当时我根本没有考虑,直接就拒绝掉了那个国企,那个国企我甚至连名字听都没听过,而小米可是世界500强啊。现在看来互联网大厂才是优秀人才的聚集地,在这里能学到的东西要远远超过国企,当初的选择毫无疑问是正确的。
利用半年空闲时间读书
当然我没放松太久,紧接着我就在思考,23年7月才入职,而现在是22年的12月末,这半年的时间里,我要做些什么呢?当时觉得这个时间是无比的重要,我知道一旦工作了之后就不会有这种完整的时间了。于是22号就开启了为期半年的计划-看书。为什么呢?因为2022年3月-9月,我经历了人生的至暗时光,那段时间里脑子里全部都是那个女人,她要我去广州,她对我的冷暴力,我被pua,那段时光还是伴随着准备招聘,4月的时候是我学习最卖命的时刻,并且我要在5月末前完成毕业设计,那几个月我的身体严重透支了。至暗时光的痛苦让我学会了阅读与跑步,他们就像救命稻草一样,把我拽住了,不过引导我去阅读的还是我的姑父,我要非常非常非常的感谢他,同时我也非常非常非常的感谢我哥哥,最难过的一段时间我都是在他家度过的。2023年1月,我花了一个月的时间看完了《三国演义》(电视剧)。然后2月看了《红楼梦》(电视剧),同时回学校补上挂掉的两门课。3月初,云里雾里的重新学了一遍cc链,p牛的《java安全漫谈》,学了也不知道是干嘛的,当时就只知道学,不懂得跳出立场去反思,虽然当时结合了 fastjson 历史漏洞,但是没有很多实战思考,所以就和空中楼阁一般。然后从3月中旬开始,我停下了坐着,因为我的腰太难受了,所以无法继续研究安全了,花了一周时间看了《大秦帝国:裂变》(电视剧),同时从3月11日开始我开始从微信读书大量阅读,3月23日加入的清创繁星早起群,在清创结交了很多很多比我厉害的人,我个人也是觉得萌姐是真的很厉害,只要看她和别的小伙伴每天在做什么,就有十足的启发性与动力,我后面也加入到他们的读书微信群中,自从这时开始我开始关注一些有关认知类的书籍。直到9月中旬微信公众号不怎么更新为止,我先后读了几个主题(每段时间一个主题):1.健身脑科学 2.心理学 3.历史哲学 4.经济学 5.认知类 6.小说
- 健身脑科学学了《每日一动,远离疼痛:腰椎间盘突出科学康复指南》《谷物大脑》《酸痛拉筋解剖书》《筋膜健身》《当我当我跑步时,我谈些什么》
- 心理学学了《九型人格:了解自我、东西他人的秘诀》《变态心理实录2:资深心理咨询师20则人格障碍疗愈手记》《看见情绪价值:接住Ta的情绪,捧住Ta的心》《当爱变成了情感操纵》《也许你该找个人聊聊》《如何优雅地挽回前任》《林文采亲密关系课》《如何让你爱的人爱上你》《女人为何爱渣男》《安全感》《内向者优势》
- 历史哲学学了《南京大屠杀》《孙中山》《毛泽东与蒋介石》《中华人民共和国宪法》《辩证唯物主义历史唯物主义》《孙子兵法与三十六计》
- 经济学学了《宏观经济学通识》《半小时漫画经济学1-4》《小米创业思考》
- 认知类学了《跃迁》《认知觉醒》《财神文化》《你该如何衡量你的人生》
- 小说部分读了《皮囊》《命运》《过生日的女孩》《云边有个小卖部》《目光》《相信》《自我突围》
其中大部头还有《老梁四大名著情商课》一共167 集,每集大概25分钟,我整整听了两遍,第二遍的时候做的笔记整理,一共用了97个小时。《老梁故事汇》就是读书都累的时候躺床上听,还有睡前,也听了68个小时。然后零零散散读了一些,有些是用来研究的,有些也没有彻底读完比较晦涩难懂,比如《精英的傲慢》《韩国民族文化性格研究》《延迟满足》等等很多。记录都在微信读书与公众号,感兴趣的可以翻翻,读的勤的时候基本上每天6小时打底。
上半年总结
以上就大概是上半年的读书时光了,很感谢这段时间,真的真的很感谢,感谢的是时间,姑父的引导,李莹带给我的痛苦进而转化成为动力,也感谢我自己的努力,我的人生因此发生了变化。
入职
于是,7月15日,我入职了,入职后对我来说最大的挑战就是:培训。倒不是说培训有多难,而是培训是集体活动(我内向)。小米对于应届生开展了很多培训,这也是据说小米逐渐重视应届生的培养所自研的培训体系。先后有:繁星计划、领航员计划、星赛道计划。在培训期间有大量时间可以摸鱼,我用这些时间真正的打开了网络安全的大门。我先简单介绍一下这几个培训:
- 繁星计划,属于集团培训,大概8、9个人一组大概6组的样子,我们线下聚在一起,有破冰活动、公司文化讲解、听各个部门的leader和集团的老总讲一些通识的知识,是认知层面的知识,比如金字塔原理、dk效应等。曾经的南京老总(现在晋升了),马骥的分享我还复盘在了公众号小健健读书,感兴趣的可以关注一下。
- 领航计划,属于互联网部门的培训,大概70多个应届生一起培训,也是以小组的形式,不过每个小组内成员职责不同,有产品经理,有项目管理,有研发、有测试、有设计、有算法等,每组并不是每个职责都有,就比如北京有一个组没有研发,那后面的小项目开发,就不得不现学现卖了。部门对我们粗略的进行了各个岗位的培训,让我们理解产品从idea到落地的全过程,大概就是每个小组的leader上去讲一上午或者一下午的相关知识,然后我们听一下。然后我们组用两周的时间一起写了一个 app,名字叫做溜溜,是一个溜宠信息发布平台,当然只是一个雏形,基本上用不了。。
- 星赛道计划,这个计划我没搞明白,前前后后只举办了一次线下划船活动,还有一个分组读书pk。
其中最令我头大的就是第一个计划,繁星计划,因为组里的几个人根本性格跟我不搭噶,结果就是我作为一个偏内向的人,很难受,那一周是我消耗最大的一周,没有之一,整个人严重透支。 来开发之后感触最深的就是,小米游戏中心会因为挪动一些小部件的位置,比如搜索框的长度,或者搜索推荐的展示字段的个数或位置而单独发一个版本,更离谱的是整个后端会因为这个版本发布而工作两周有余。整个部门存在很多庞大的系统,系统与系统之间是互相耦合的,要想定位一个问题复杂无比,要顺带了解其他系统的功能,而恰恰文档又不太好找,所以开发体验并不好。 我来到这边基本上前四个月就是优化一下日志等级(一些 error 改成 warn),优化一下业务报警(主要是接口耗时),然后改改 bug,几乎没有需求给我开发。然后好不容易来了个开发,结果就是增加一个数据库字段,同时连带增加一个最原始的 mybatis 的配置,然后是相应的函数等,我觉得没有什么挑战。让我觉得稍微需要动一下脑子的就是,各种边界情况,情况要考虑全,比如空字符串,值为 null 等。 由于最开始对现状的不满而引起了焦虑,人的本能一有焦虑就会想摆脱现状,于是我就开始逼自己去学网络安全,于是乎我获得了成长。还是要感谢这个工作的。
网络安全
好了,终于到了网络安全部分了。我会按照我学习的先后顺序写一下,大部分都是我在公司摸鱼的时候学的。 刚入职的一周里,我就开始着手研究Tomcat内存马了,第一次文章发表记录是在先知社区,当时研究完发表文章是在 7月17日。因为经常能听到Tomcat,不论是网站开发,还是内存马,还是相关漏洞都有Tomcat的影子,于是我就下了决心刷了一遍《Tomcat深入分析》这本书,大概也就是用了半月的时间。然后我结合着已有的文章,大部分还是自己分析的,调试源码,根据Tomcat的结构找到能够使用反射修改的代码。这是我第一次体会到,理解了源码结构,再去研究相关的漏洞是多么的轻松。但是现在回想,我并没有把他学完,Tomcat 内存马是在打入反序列化的时候无回显时候增加回显的,同时还有很多软件的内存马,不过当时没有继续去搞懂这件事。 学完之后无感,然后想起了从前接触过shiro反序列化,于是以此为契机,开始学习shiro的历史漏洞,主要是跟着su18师傅学习,这是我的第一任师傅,通过看他的文章,我找到了我们之间的差距,就是做事情的认真程度,努力程度,以及获取信息的能力。当然我不只是学习shiro的漏洞,我还向su18学习了下怎么学习,我参考他的文章,以自己的思路重新写的一篇文章,花费了很大力气,但是的确和 su18 学到了很多。shiro漏洞复现到一半的时候,我突然想动手试试,看能不能在其他软件上找到类似的漏洞,于是我开启了第一次漏洞挖掘尝试,目标是spring security,因为他们的功能是相似的,不过很显然,失败告终,因为已经有很多人对比二者的漏洞互相挖掘了,二者的历史漏洞也惊人的相似。然后我又去尝试了国产软件SaToken,这个软件在 github 也有 13k 的 star,按照以往我是不可能找到这种软件的漏洞的。不过这回可让我抓住了,几个越权漏洞,和shiro是一模一样的,我也以此为契机向cve官方提交了这个漏洞,然后cve官方给我发布了三个cve编号。当然申请的过程也不是一帆风顺的,cve需要先申请编号,然后再申请公开。每一步我都尝试了两遍,因为信息没有填写完整。而且每次申请至少要等待半个月的回复时间。在我学习完shiro之后,我又尝试继续挖掘了一下shiro的漏洞,但是通报给官方两次都没有承认。总结下来,不足之处在于,在学习shiro漏洞的时候,我只是无脑调试,甚至于不理解其中有些代码的含义,显然这样挖漏洞是低效的,后来我也进行了反思。通过完整学习 shiro 的历史漏洞,我了解了一个鉴权软件哪里可能产生漏洞,同时了解了利用软件之间的路径匹配差异来绕过一些限制,这个和 smuggling 很相似,而 smuggling 是根据不同服务不同协议的差异来绕过的,后面会深入学习了解。 然后的时间里则是向evilpan师傅学习,evilpan是华中科技大学的同学,并且毕业就去阿里从事安全研究了。我看到他博客中描述,曾经是做二进制安全的,但是由于工作原因转成了java安全,并且我看到了他发的几篇有关spring的漏洞学习笔记,第一眼看起来又臭又长,太长了。当初还不知道这个人,后来我无意间使用搜索引擎搜到他前面的博客,觉得他是一个厉害无比的人,于是才耐下心来去看了下他的有关java的几篇文章,不看不知道,真有的学。java安全初探,Spring Framework历史漏洞研究,Spring {Boot, Data, Security}历史漏洞研究,Fuzzing在Java漏洞挖掘中的应用,浅谈URL解析与鉴权中的陷阱,URL解析与鉴权中的陷阱--Spring篇。每一篇文章都指向了卓越,其思路的流畅程度,研究的细致程度,信息的获取能力,理解能力,思维灵活的程度,意志力的强大,甚至于英文的阅读能力都令我无比佩服。不懂了就去刷RFC,不懂了就去刷specification,在大量的信息/英文信息中获取需要的内容。于是乎他的每篇文章我都花费了巨量的时间学习,我把他引用的英文原文都看了一遍,他研究的每一处细节我都在思考他为什么会这样想,他是怎么搜索到这个资料的,他的全文结构为什么这样的等,他怎么研究一个问题的,并且我还是参考原文以自己的思路重新写了两篇文章,名字分别为“学习 evilpan 研究 java 相关漏洞”,“学习 evilpan 研究 url 解析漏洞”,同样又臭又长,长得我的笔记软件语雀都卡住了。于是乎自此打开了网络安全新世界的大门,至今我还感谢evilpan。从他身上学到了很多,比如要彻底的理解代码的功能和含义然后再去挖漏洞。可以不复现漏洞,而只是通过代码搞懂他深层次的原理,同样可以自己挖到同样的漏洞。有人研究过的东西就不需要自己在研究了,我们的根本目标就是获取需要的信息。可以去一些安全大会的分享pdf的找到信息,比如blackhat、KCon。等等,当然这些思维不仅仅有助于网络安全,更有助于生活其他方面。 再后来我加入了几个知识星球,这也是我获取信息至关重要的一步,分别是chybeta师傅的漏洞百出,360安全忍者师傅的赛博回忆录。至于phith0n师傅的代码审计我早早的就加入了,《java安全漫谈》则是在这个星球里的内容。前面两个我真的是加入了之后就后悔没有早早的加入进来,chybeta也是阿里云安全部门的同学,他比我早毕业3年,比我多工作4年,他无疑是能力非凡的人了,从他身上我能学到他对于网络安全的无比的热情,就是因为有这份热情他才能聚集起来跟他同样优秀的一堆人。这几个知识星球经常会更新一些大佬的分析文章,对于最新的漏洞响应很快。然后通过漏洞百出知识星球,我加入到了他们的微信群,这也是获取信息的重要方式之一,这个微信群是聚集着中国顶尖的黑客,其信息源则是非常可靠又快速的。 与此同时我也在关注最新的漏洞,看着群里的大佬们的聊天以及一些公众号的最新漏洞情报(后文分享)。然后突然就传来了conflunce的越权漏洞的信息,借此机会,我的目标就转向了bounty hunter,我希望能至少通过最新漏洞挖到一次hackerone的厂商并获取赏金。然后我就思考,做到以上我需要两点:1.最快速的复现最新漏洞拿到poc,这里需要获取信息的绝对速度,目前我打算使用rss订阅各个厂商的漏洞通报处。2.能够获得hackerone中哪个厂商开对外放了某个漏洞软件,这需要一个资产扫描的工具。对于1我可以通过不断地练习习得,毕竟我看了很多次的github漏洞修复代码,也尝试过jar包对比来找修复。或者我可以找到一些分享 0day poc 的公众号,他们同样响应非常快,或者我自己挖0day。对于2我需要一个工具,然后我就着手开始写我的BugBountyScan扫描器。经过了两周的开发写出来了,使用java语言,优化速度使用线程池,内存队列,内部集成了dnsx、subfinder、fofa等业界知名工具。然后我就开始扫描hackerone中conflunce的开放,但是由于时隔很久,扫到的50个都已经修复,毕竟如果让外面的人搞到手可是要交钱的,厂商肯定最快响应。不过我还是扫到了一个azureedge.net的,我还错把他当成了微软的漏洞,给微软提交后对方说不是他们的资产,白期待了一场。不过仔细思考一下,其实这个扫描工具也不是最重要的东西,如果自己无法最快速的复现漏洞,也无法实际使用。 然后目前就是在继续复现学习漏洞中,包括最近的ActiveMQ RCE、Kafka RCE,以及一些老漏洞,比如 jdbc 反序列化,h2 jndi 注入,nacos 反序列化,struts2 历史漏洞等,当然这复现不是单纯的复现或者分析,是要和多个同类型漏洞进行对比,最后抽象成某种模式的,类比于cwe。这会让你对某一漏洞形成根本认知,为什么要学他们?因为漏洞的模式不变,新的漏洞基本上是在老漏洞的原理基础上产出的,学新漏洞顺带学习老漏洞。然后也在尝试使用tabby来自动化挖漏洞,还没干,突然就被叫过去写业务了。
辞职计划
就是因为以上种种,我想全身心投入网络安全,不想做到一半然后突然来了个业务把我叫过去做开发,这样网络安全研究一半突然被打断的感觉很难受,可能十天半月回来都忘了之前干啥了,问题是开发都是在写mybatis,controller,service,真的无感。所以我打算辞职,并且做了一个大致规划,写在了公众号里,这样作为一种记录同时也是对自己的提醒,我希望这不是空想,我可以实现我计划的东西。
总结/展望
回看去年的文章,我应该是大致预言了今年的状态,我期待在精通 java 之后可以更轻松的更深入的理解漏洞,我的确做到了,同时我去年还希望复现很多漏洞,我也正在做。那么我可以预言一下子明年的状态,起飞,哈哈哈开玩笑。计划一下明年的,首先我需要继续工作到2024年2月9日,即过年。既然这段时间断断续续的,我希望能搜集到尽可能多的信息库/信息源,给自己来年学习做准备,如果是周末的时间,可以做一些简单漏洞的研究。明年辞职直到7、8月护网前,我希望我能挖到一个品相好一点的0day。我希望能熟练使用tabby、fuzzing等工具简化一些繁琐的步骤,同时我希望继续扩展信息搜集的能力,会将视野扩展到推特等外国社交媒体,如果有机会的话,等明年我会搜集全部的信息源,然后再分享出来。 下面是一些广泛的思考,希望能够给你启发
- 通过准备小米招聘,我懂得了如何去学习一门语言,什么叫深入甚至精通一门语言。这无疑帮助我打开了安全研究的大门。不过重点还是自学,以找工作的强度为目标的自学,而不是工作。
- 对于痛苦的经历持乐观态度,甚至兴奋态度,因为你马上就要进化了。不过此进化需要你在痛苦的境遇里打磨自己,而不是单纯的遭遇痛苦。利用痛苦去尝试各种你未曾开启的计划。
- 书要读,不读书就等于放弃了获取各种信息的方式,当信息闭塞,那么你的认知就会落后,那么你就会举步维艰,尤其是在高手云集的残酷环境。通过读书可以获取很多方法论,比如《认知觉醒》中的元认知,至今我都觉得是一个宝藏。
- 网络安全的本质是信息获取,无论是渗透测试,还是代码审计,亦或是漏洞情报,研究方法论等等。渗透测试是搜集资产,搜集子域名,搜集暴露的页面,而代码审计则是搜集框架本身的信息,他的功能点,他的源码对应的文档,以及大量的源码中找到漏洞点。搜集信息并整合,然后搞懂这一整件事情,这是最重要的,也是可以锻炼的能力。信息的获取当然可以通过互联网,不过一些隐蔽的信息不是只在搜索框搜索相关的字段就能搜到的。比如你想要的内容在某本书里的某个位置,或者在某个 pdf 中,那么你的搜索对象应该是这本书或者这个文档,浏览器是不会把书中的每句话都摘录并能搜到的。总之,想搜的可以搜到,只要你思路开阔一些。或者如果你能找到一个信息源/信息库是最好不过的了,他就像一个 wiki 百科,虽然搜索引擎搜不到,但你的问题在这个信息库里面都有,而信息库往往是以不同专业为前提的,你需要找到你想要专业的信息库,或许需要你持续的在这个专业深耕,然后某天意外的发现,或者你的搜索目的就是这个信息库。在学习 evilpan 的过程中,我就发现了 blackhat 的历史会议是一个信息库。或者后文分享的一些信息源。
- 任何事情如果想要领略最前沿、真实的信息,一定要在大佬的内部群里,大佬的思想中,而不会通过互联网搜索,不排除大佬把思想发布在博客,那么找到大佬的博客并使用rss订阅也是快速信息获取的方式之一。
- 通过su18师傅的全部博客,我发现事情还是要像曾国藩一样,尚拙,崇尚笨拙,不是说 su18 笨,他真的很聪明,虽然聪明但他就是无比认真的做每一件事,即便是觉得已经会了的小事,也认真的学习。能接触的资源,都去学一遍,工工整整的写成一篇博客。
- 通过evilpan师傅的博客,我发现这个人值得仔细研究他写的文章,然后学习他身上的优点,那么你就可以挖到漏洞了。通过他我学到了做一件事要摒弃功利主义,全部漏洞学完是不现实的,生活不止有竞争,要慢下来搞研究,他之所以能写这么长的文章,并且放弃掉其他有趣的漏洞而只专心于当前的研究,也是因为他秉持的这个观点。你可发现他的文章一半是从源码设计角度来思考的,他的确是比开发者更多的去思考软件本身。
- 不对自己设限,不要只挖java漏洞,因为漏洞的模式是相似的(参考cwe),那么语言不应该成为一种障碍,chybeta师傅则是全能的,他不仅会渗透测试、内网横向、前端后端漏洞、还会 java,php、python等等相关漏洞,以至于云安全,我们学习的时候要集思广益,要肯学,不畏难。
- 一些漏洞挖掘过程中容易犯的毛病,比如做研究的时候容易抓不住重点,需要有时刻校准方向的能力,避免研究方向偏颇,分支研究该停下就停下不能无限制深入,需要调用你的元认知能力,跳出正在做的事,来思考自己的行为,以便于纠正方向。
- 一些方法论,比如挖漏洞的时候可以先看开发大佬的源码解析博客,可以减少很多学习成本。要熟悉软件官网的文档,一定要多看文档。过多的挖漏洞技巧就不过多展开了,都在各个大佬的博客中。
- 网络安全这行就是只要多做多学就一定会增加认知,做得少了就理解的少,要像 su18 师傅一样努力。同时讨论努力,我看没有那个安全研究的人不努力,在这个圈子里混,努力是最基本的东西了。多学的同时我们也需要提升认知,获取做事的方法论,资源等,有些事不是靠蛮力就能解决的。
- 挖漏洞不需要你所有的东西都会,你只要深入理解了一种漏洞的原理,和软件中哪些功能场景可能会产生该漏洞,那么就可以直接去挖了,挖到了就是所谓的 0day,并不困难。什么是深入理解?就是彻底搞懂代码的作用,场景,以开发者的角度思考,用了哪些设计模式,不要有一点模糊的地方,全都搞懂。进而再去思考为什么会产生这个漏洞,漏洞如何利用,漏洞产生的场景等等。
- 纠结于学习老漏洞,还是新漏洞。因为老的基本就无法实战,但是重要。新的可以实战,但是复现资源少,而且有时候信息获取不到位还不知道有新漏洞。但是我觉得都要学,但是前提是以新的为主,结合老漏洞,重要的是彻底精通这一漏洞,以便在后续的漏洞挖掘中能够挖到。这是一个小技巧,目标是实战,那么就会促使你进一步思考。
- 学习一个主题就要把他学完整,前因后果,理论实战,漏洞抽象成一种模式等,我以前就喜欢学一半,可能因为自己考虑的太少了,不过以实战为目标的学习一定会促使你考虑各种问题,这是一个小方法。
- 一个成就的时间节点对人的影响重大。就比如我获取了 cve 编号,虽然当时没觉得什么,因为漏洞原理比较简单,而且当时在申请 cve 编号的时候觉得麻烦繁琐,失败了几次,那时候都在打退堂鼓觉得这东西申请不申请无所谓吧,但是后来还是坚持申请下来了。不过在后来的日子里他发挥了运用,给了我无尽的信心,每当受挫的时候我都在想,我曾经可是拿了 cve,信心就有了一些。总结来说,还是应该在意一下成就的获取,不能只干研究,而不注重最后的那个“名”
- 做事情一定要以目标为导向,同时目标是清晰的,不难的。可以有一个总的目标,比如挖到一个有价值的 0day,然后就是不断的达成小的目标,小目标是围绕着总目标进行学习,不会超出相关范围,每次达成目标都是对自己的一种鼓励,提醒自己正在进步,并朝着遥远的目标迈进。要时常回忆起自己达成了什么,自己还有什么,这样会给自己鼓励,会信心大增,相比较于一无所有,现在的情况真的是好太多了。
- 不觉得要学的好多啊,因为新老漏洞是关联的,你就比方说 conflunce 的漏洞,就是因为 struts2 的错误继承导致的,你完全可以学习 conflunce 的时候顺带学习 struts2,然后总结抽象这一漏洞模式为错误的软件继承,或者说不正确的二次开发,下次再审计的时候则会额外的关注这一点。漏洞学习一定是垂直的,先精通某一漏洞这样的,这也是 evilpan 教我的。
- 今年的复盘没有像往年一样着急,我写完了后再修改完善,花了两三天的时间。我要写出的是一篇好的复盘内容,而不是快速的写一篇复盘内容。而且我现在貌似更喜欢写一些又臭又长的文章了,哈哈哈。
资源
知识星球: 1.漏洞百出 2.赛博回忆录 3.代码审计
获取漏洞情报的公众号: 1.360漏洞云 2.奇安信CERT 3.长亭应急响应中心
有价值的公众号: 1.希潭实验室 2.有价值的炮灰(evilpan)
社区: 1.微步社区 2.先知社区 3.跳跳糖
bounty平台: hackerone, bugcrowd, yeswehack . 外国的工具: projectdiscovery下的dnsx, subfinder等, fofa, tabby, cwe . 国外的poc百科: https://github.com/swisskyrepo/PayloadsAllTheThings
国外的安全wiki: https://book.hacktricks.xyz/welcome/readme
国外的 top50 rce: https://redteamrecipe.com/top-50-vulnerabilities-rce/
我自己的账号:知乎小健健,博客m4ra7h0n.com,公众号小健健读书 .