背景:小B接到一个渗透测试任务,由于很久没有从乙方视⻆执行渗透测试的他决定先梳理一下自己的思路。
准备工作
第一个是渗透测试用例:对于技术人员来讲这是一个比较好的知识点沉淀的方式,不但有助于你在每一次的渗透测试中不遗漏掉某个点,并且还可以在团队内部进行共享方便提升团队内部成员的技能。
第二个是工具箱:工欲善其事必先利其器,有一个好的工具箱决定我们在渗透测试时的效率。一个好的工具箱应该包括,不同操作系统(Win、Linux、macOS);各种环境与基础工具(Java、Py2与Py3、Ruby、NodeJS、Go、数据库连接客户端、SSH连接客户端等等);常用的工具(Nessus、AWVS、BurpSuite、SQLMap、各种小工具、CVE漏洞利用POC);
做好准备工作是平时的积累,不要在每一次面对项目时再去做。
前期沟通
对于乙方的渗透测试而言,在开始之前与客户沟通一些相关事宜是非常有必要的:
第一个是渗透测试目的:客户进行本次需求是为了什么?等保、日常安全巡检还是其他目的,不同的目的决定漏洞评判等级的不一样,也觉得测试过程中方法的不一样。
第二个是渗透测试目标:目标通常情况会分为主机和应用系统,这两类目标的渗透方法上是大致相同的。做应用系统的渗透测试,我们需要判断应用系统后端的主机,往往在渗透应用系统无果的时候我们可以从主机层面出发突破,反之亦然。
第三个是目标环境:一般我们渗透测试会在两种环境中进行,一是生产,二是测试。不同的环境对渗透测试的要求也不一样,假设是生产环境,我们需要避免对目标进行DoS拒绝服务、缓冲区溢出等可能导致服务中断或延缓服务响应的攻击;其次生产环境的测试时间段需要选择在非业务高峰期;还有就是生产环境我们做渗透测试的时候要避免向目标插入、删除或修改数据的动作。
在目标环境的不同上,做渗透测试还会面临一个问题就是如何接入目标环境中。一般对互联网开放的生产系统或主机我们可以直接通过Internet进行测试;但是如果客户的测试目标是内部的系统或主机,尤其是测试环境这时Internet都是不可以直接访问的,此时我们有几个选择一是进入客户现场执行渗透测试,二是VPN或者IP访问白名单的形式访问。记住一个点,如果是在家进行渗透测试建议买一个云主机提供一个公网IP,因为这个IP是固定的,家用的宽带一般都是动态IP,客户一般是不应该允许将这种类型的动态IP添加访问的。
第四个是执行时间:这一点在第三点中我也提到了,主要是需要与客户确认好特别是在生产环境执行。
第五个是⻛险规避方案:与客户一起协商做好⻛险规避方案,有助于我们在测试过程中应对各种紧急情况。执行系统备份与做好应急预案方便在出现突发情况时恢复系统;做好测试时间段内的安全监控,当出现异常时及时叫停;
沟通好以上的内容之后,就可以开始技术测试部分了。
技术测试
技术测试这部分是老生常谈的话题了,其实当有了渗透测试用例以后你会发现技术测试这个部分就是:1.常规操作;2.外带"猥琐"思路的突发奇想;3.坚持不懈的精神。我们还是从流程上过一遍整个技术测试:
第一步信息收集
记住做信息收集时需要从渗透测试目的出发。
子域名收集:需要注意的是否需要做此步骤,如果客户的目的只是做一个域名的安全测试,那么做子域名收集的意义不是很大,如果是要求对某个网站进行以某种目的为导向的渗透就需要做子域名收集了。子域名收集的方法偏向DNS漏洞、暴力破解、DNS解析查询等方式。对于部分的渗透来说通过旁站查询也是一种思路。
IP信息收集:C段与B段适用于目标传统IDC机房或自建私有云的情况,如果是云环境大家可以关注一下私钥或Token泄露的情况,在文末我放了一些关于云环境渗透的参考资料。
端口与服务信息:主要是通过相关工具进行扫描,nmap、masscan。敏感目录与路径:注意依赖于平日收集的字典与工具判断返回的方式;
Web容器与后端组件可以依赖一些浏览器插件(Wapplayzer)来识别,也可以通过扫描器识别;
CMS:这个比较重要,一般比较大的客户要么是自研发系统要么是成熟的CMS系统,我们收集这个信息方便我们查询已知漏洞从而进一步攻击;
其他信息:还有就是账号密码、Token、AK/SK信息、历史漏洞、历史漏洞中的敏感信息等信息,收集途径主要是搜索引擎与第三方平台(GitHub为主要渠道)。
在做信息收集比较重要的是平日里字典、工具库的收集,以及多变通做信息收集的方式,不要局限自己的思路。
第二步漏洞利用
漏洞利用主要依赖于第一步信息收集的结果,一般会有四种结果:可直接利用,比如敏感文件信息泄露;可间接利用,后端组件或CMS版本处于已知漏洞的影响范围之内;未来可用,部分信息当前不能给出一些帮助,但是在后续的渗透过程中会提供帮助,比如某个内网的账号密码;无用信息。
一般漏洞利用就是常⻅的漏洞,如SQL注入、XSS跨站;一些CVE漏洞,如:CVE-2017-10271;逻辑漏洞,如任意密码重置;
平日多积累,漏洞利用的时候就不会慌。
第三步后渗透:如果有需要做后渗透的话,一般包括:内网渗透,权限维持,权限提升,读取用户hash,浏览器密码等。关于这块小B也是菜鸡写不出来很有营养的东⻄,也是小B正在学习的东⻄,大家可以多看看网上的资料。
技术测试小结:
不要总盯着一个点不放,思路需要打开;
不是每一次都能成功拿到权限或者找到高危等级的漏洞的:给一台只开放了443的独立主机让你入侵,直接攻击就算了吧!也许通过APT能实现呢~~~先对内部人员弄个钓⻥,获取一个内网权限,再横向移动,找到可访问目标的网络段,再想办法从内部获取账号(纯属YY)
报告输出
一份渗透测试报告是客户评估此次渗透测试效果的东⻄,所以报告至关重要。要输出一份好的报告需要我们做到以下几个点:
1.与客户沟通报告的要求,不同客户对于报告的详细程度是不一致的,有些客户甚至会提供报告模板只要填入对应的内容;
2.对漏洞理解足够深入,需要描述清楚漏洞的概述、漏洞的⻛险、漏洞的危险等级(危险等级的计算方式)、漏洞的发现过程(图文结合的方式是最好的,同时要求我们在做渗透测试时养成良好的过程记录习惯)、漏洞的修复建议(不同客户对于漏洞的修复要求是不一致的,内外部系统的修复建议也应该是不一致的)。
refer
ATT&CK针对云上环境入侵手法的总结:https://attack.mitre.org/matrices/enterprise/cloud/