我是一个需要目的很明确才会做事的人,在学习新的知识的时候也是如此,我需要系统的了解所学知识的框架以及它们的作用。
在学习渗透测试的过程中我认为渗透的终极目标就是拿到目标机器所在域的域管理权限,具体的渗透路径如下所示:
渗透测试的过程中可以通过Web漏洞,主机漏洞及社会工程来获得Shell,然后在通过提权操作为内网渗透做基础,最终通过内网渗透获得域内的最高权限即域管理员权限。个人认为Web学习的路径如下图所示:
在学习Web之初需要了解常见的漏洞类型,接着需要了解每种漏洞形成的原理及可能的防御手段(后台代码),最终可以灵活的使用漏洞或者挖掘0day漏洞。代码审计的学习有助于深刻的理解漏洞的形成原理及可能的防御策略。但是仅仅通过靶场练习,浏览相关文章及书籍来进行上述提到的三个阶段的学习还是不够的。这出于以下几个原因:
- 实践环境与现实环境存在很大区别
- 熟练地掌握每种漏洞不等于能够熟练地组合使用各种漏洞
- 渗透测试过程除了漏洞利用外更重要的是根据可能的攻击面收集和分析信息,漏洞利用只是由信息确定的可以采取的入侵手段
- 渗透测试是一个具体的流程而不是孤立的漏洞
实战可以推动自己学习过程所遇到的未知的知识以及建立系统的渗透测试观。不可以把自己拘束在课本上或者靶场上。渗透测试的能力的学习也是可以分为以下两类的
- 可替代能力:
- 这类知识花尽量短的时间掌握它,不要耗太大的力气。比如通过分析SQLi-lab靶场后台代码及其他人的解题尽快掌握SQL注入攻击方式及可能的防御策略
- 不可替代能力:
- 在渗透测试过程中接受及掌握新知识的能力
- 编写及阅读代码的能力及经验
- 灵活的思维,举一反三,知识扩展的能力
- 知识总计归纳的能力
- 学习方法