转自:https://zhuanlan.zhihu.com/p/212503594
一、目标确认
目标确认指明确此次渗透的目标(获取权限还是获取数据?)、范围时间、约束条件等。这个目标有两层含义,简单来说就是最终目的是什么?我要拿到什么?
二、信息收集
信息收集:在明确目标之后,要收集目标范围内的各类信息。在一开始接触渗透测试的时候,你可能听过这样一句话,渗透测试的本质是信息收集。确实没错,为什么需要做信息收集?因为你不去做信息收集,那么你攻击的范围就会很窄,死盯着一个现成的域名或一个IP,无异于把自己框死了。我在实际的项目中,经常会遇到一些同事拿着问题过来找我,说自己做不下去了,无法再继续深入了,一般在这个时候,我都会给他们说,当你没有办法再做下去的时候那就继续回去做信息收集,去看看你遗漏了什么。
那么我们在信息收集的时候要做收集哪些信息呢?怎么收集呢?信息要收集:域名、子域名、IP及端口、IP反向查域名、服务提供商、应用服务系统\版本、域名历史解析IP、服务端框架\语言、开源情报、防御措施等等。
信息收集工具,目前市面上有非常非常多,大家可以根据自己的喜好进行选择就可以。
三、漏洞发现
漏洞发现:在信息收集的基础上发现目标应用系统的漏洞。漏洞发现我为大家整理了四个方面:
框架组件公开漏洞:根据所使用的的框架组件版本情况,查找公开漏洞验证payload,通过手工或者工具的手段验证漏洞。一般这种漏洞,存在都是一些不小的漏洞。
传统漏洞:像比如xss\sql注入\ssrf等传统的网络安全漏洞,这一部分可以利用手工或者工具进行识别,就考验大家对于漏洞的掌握程度了。
口令漏洞:对系统登录入口点采用口令攻击。
代码审计0day:在开源或未开源的情况下,获取目标应用系统源码,进行代码审计
四、漏洞利用
漏洞利用:对已发现的目标漏洞进行利用,通过漏洞利用获取目标系统权限。
由于针对不同的漏洞其自身特点,漏洞利用方式也不尽同,漏洞利用考验一个人对漏洞理解的深度问题,与漏洞发现有很大的不同,要想在渗透测试过程中能够有效的对目标进行攻击,需要充分了解各个漏洞的利用方式,并且越多越好,这样我们才能应不同的场景,建议大家在经典Web漏洞的基础上,针对每种漏洞通过搜索漏洞名称+利用方式(如SQL注入漏洞利用方式)不断的深入学习,保持对各类公开漏洞的关注,学习各类安全自动化工具的原理,如通过学习SQLMAP源码学习SQL注入利用,学习XSS平台利用代码学习XSS利用。
五、权限维持
权限维持、内网渗透:进入目标内容,进行横向拓展,向渗透目标靠近
六、目标获取
目标获取、痕迹清理:获取渗透目标权限或数据,回传数据,进行痕迹清理。