说明
该文章来源于徒弟lu2ker转载至此处,更多文章可参考:https://github.com/lu2ker/
文章目录
- 说明
- 一些废话
- 成果
- 路线
- 第一阶段
- 要点
- 第二阶段
- 要点
- 第三阶段
- 要点
- 第四阶段
- 要点
- 最后
一些废话
截至这篇文章前已经有150+star了,虽然比不上大佬们K级的量,但也是证明了做这个东西是有意义的。
创建这个repo的本意就是记录自己的学习过程,但其实还是疲于整理,其中大部分内容都是在4月份完成的,
未来这个repo也会是在遇到想记录的,关于PHP的知识点的时候才会再补充。
学习技术的过程中分享真的是很重要的,看懂和表述出来完全不一样。分享这件事,利人利己。
还有就是勇于去尝试吧,之前没有写自己的学习路线是觉得“我配吗?”,现在写是因为最近两天的成果
已经表明,这条路线不是一条歪路,而且感觉学起来还是挺轻松的,遂分享出来。
看看能不能帮助到 没有关系好的大佬能指点自己的、对代码审计感兴趣的、想学PHP的朋友。(PHP没前途,建议卷JAva)
成果
先说一下,自己目前的成果
- 学PHP以来(断断续续差不多一年吧)总共只审计了大概7套系统左右,很少,但都可以挖到中危及以上的洞。
- 前几套都是在开源网站下载感兴趣的源码,比较垃圾的那种,用来增加经验,逻辑漏洞、SQLi漏洞为主,后台洞为主。
- 最近看的两套在本人看来质量还可以,某协同office和某安全终端的前台RCE,可以往简历上写的那种。
- 在审计某协同office的时候遇到了没了解过的框架,但还是能硬磨下来,挖到漏洞。(基础的重要性)
- 产生了对代码审计的一些看法,对不同编程语言的看法。
路线
第一阶段
感兴趣但又不知道从哪儿入手的话,就从CTF题开始吧。
兴趣是第一生产力,做CTF题是我觉得很容易提起学习兴趣的一件事。目前的CTF平台的题库都有很多的php代码审计相关的
题目,从简单的学起,看答案也没关系,但必须把遇到的每一个不懂的、没见过的知识点记录下来,一周或者两周review一次,
看看自己还想不想的起来。对纯新手来说,遇到实在是看不懂的,查大半天资料也想不明白的知识点就跳过,以后慢慢就会了。
把能找到的所有除了反序列化之外的题目都学了一遍后,肯定是似懂非懂的状态。这个时候我认为没必要硬啃那些难度较大的题目,
刚开始做CTF题只是为了保持兴趣而已。这个时候我选择去了解一个PHP语言开发的网站是怎么跑起来的,找一个简单的PHP开发课程,
跟着一步一步做出来一个属于自己的博客系统,会让你对php网站的整体流程有一个简单而清晰的了解,其实后端无非就是数据库的
增删改查加一点点逻辑,学着手敲一个简单的博客系统后端,随便拖个写好的前端,一周的时间就可以完成。
如果之前的这些都能自评是懂这个技能了,就可以更进一步学习了。如果感觉自己并没有什么成长,可能这种用时间来降低难度
的学习方法不适合你,耽误了这么多时间我很抱歉。
要点
- 做简单的CTF题
- 学简单的PHP后端开发
第二阶段
第一阶段用大量的时间帮你打好了php代码审计需要的基础,但是不能永远学基础,基础也会有天赋上的瓶颈,有人筑基了就是金丹期下第一人,
有人筑基了连练气期都打不过。。。
这个时候我是选择去跟着师傅们的文章去过一遍比较小众的CMS,亲身体验一下一套系统的代码审计是个怎么回事儿。找那种分析的巨详细的文章,
比如熊海CMS、苹果CMS、BlueCMS低版本都是非常适合新手来找感觉和成就感的系统,认真读师傅们的分析,找文章中提到的每一个函数的位置,
一天搞不定就两天、一周。体验一次过后如果发现自己还是难以理解一些东西,就多循环几次,再坚持一下。如果觉得代码审计也不过是那么回事儿,
恭喜你,你在第一阶段的学习很有效。
要点
- 找一些详细的代码审计文章
- 跟着审一些小众CMS找感觉
第三阶段
别膨胀,学完这个第三阶段才可以说是入门了。
我也忘了自己当时是怎么想的,就去学Thinkphp框架了,不过现在看来这段学习经历还是很有用的。
Thinkphp框架的历史漏洞有不少,而且基本都是高危的,学习框架代码的最大的好处就是能让你接触到设计模式,什么是MVC。如果到这个阶段
了你还是没有找到能指点你学习代码审计的师傅,那不如就像这个repo一样,把七月火大佬的文章自己debug一遍,他的文章都是非常详细的
教科书级漏洞分析,相信我,能跟着过一遍准没错。当然现在就不能简单的只是跟着,你已经不是小白了,学会自己思考为什么?怎么会这样?
具体的可以按照顺序参考我这个repo的文章特点,你应该会发现一种递进的学习状态。自己琢磨琢磨,自己能debug出来完整的调用链,知道paylaod
中每个参数的意义,知道payload在代码执行中的传递过程,就可以了。
期间如果感觉太枯燥,或者感觉自己掌握了一些东西,就可以去自己挖一下网上没有人发表漏洞的CMS,还是建议在站长之家上找一些小众的,
比较好挖,下载量可以找一些2k-2w的,比如我审过的的一个kyxscms,就不错。
如果现在审这些小众cms对你来说只是时间问题,并不会感觉无从下手,甚至能挖出来网上搜不到的洞(垃圾CMS的0day),恭喜你,入门了。
要点
- 研究框架级的漏洞,能有自己的理解
- 尽量多去实战,挖到的洞没用没关系,重在练习和经验
第四阶段
说你会吧,你挖的全是垃圾系统;说你不会吧,你挖到的洞还挺有意思。
突破一下自己,找个不被打扰的环境,别想能不能挖到漏洞,找一套或者买一套有名气的php的系统,去把这套系统理解了,遇到问题解决问题,
你学了那么久,学会了那么多东西,已经没有什么是你完全无法理解的了。相信自己,去审,硬磨它,理解它,有洞自然就出现在你眼前了。
审完后回顾一下:没能RCE这套系统,就是失败的。
尽自己最大的努力去RCE它,对自己要求再高一点点,前台没找见RCE,后台RCE也行;后台RCE了,再努力看看前台怎么RCE,总之不要轻易放弃。
洞就在那儿,你只需认真读懂代码。
附上我目前的经验:
要点
- 你可以挖到0day。
最后
希望认真读完的你有所收获,希望直接滑到低的你不要对一个认真分享经验的学徒嗤之以鼻。
希望你学完能有自己的理解和想法,自信的说出:“RCE?也不是很难”。
终。