1、渗透分类
1.1 手工和自动化
(1)手工测试
主要是基于浏览器和burp工具,可以进行高度自由的参数设置和响应加载查看。
优点是过程灵活,请求量少,频率低,对于逻辑性要求强的漏洞有很好的效果。
缺点是任务量大,部分漏洞类型测试枯燥,可能遗漏。另一方面,针对验证码爆破这类时效性要求高的测试是无法完成的。严重依赖测试人员的技术水平。
(2)自动化测试
利用程序进行自动化测试,预先设置参数和过程,并进行分析输出。
优点是对于参数确定、过程确定、结果确定的测试,有非常强大效率
缺点是请求量,以及可能发出危险动作的请求,干扰正常业务。另一方面,对于逻辑性强的测试无法直接胜任
(3)综合
实际测试中,一般是手工和自动化结合,以及介于之间的半自动化测试。
所谓半自动化测试,即不同于手工的原始数据和参数设置,也不同于自动化的完全分析结果和自动化设置参数,
而是根据调试的模板快速设置参数,对原始数据进行一定的分析,然后交给人工进一步处理。
1.2 自动化分类
(1)按阶段划分
信息收集、漏洞发现、漏洞利用、提权、清除痕迹、报告生成
(2)按单一和综合
比如sqlmap是单一的针对sql注入的工具,而nikto是综合工具
(3)按开发者划分
其他开发:
- 优点是可以直接使用,一般是专业的,并且集成了需要大量时间、精力收集的指纹库、exp、poc等数据
- 缺点是
- 对于使用者可能是语法复杂的,不符合交互习惯,需要学习与适应。
- 另一方面,一般存在集成化过高的特征,不方便控制。
- 部分是非开源,或者即使开源也存在阅读困难,对实现过程不了解,安全性问题。
- 其他开发总会出现更新频率低,长期无维护,版本老旧无法在新版本系统使用
- 存在选择困难,少量的工具存在应用场景不足,而过多工具又存在管理困难,学习难度大,业务重叠问题
自定义开发:
- 优点是可以完全按照自己的技术水平、测试和交互习惯,进行集成度自由控制的开发,并且灵活添加需要的格式和功能,进行更新
- 缺点:
- 需要相对较高的程序开发能力,以及对漏洞测试的能力
- 根据程序的完善程度,初始时能力有限
- 需要收集指纹库、exp、poc等数据
2、自动化
2.1 底层原理
自动化的核心,是对请求进行自动化的参数设置,以及对响应进行分析。
2.2 测试的大致过程
(1)确定请求
一般是针对一个样本请求进行分析,按照各漏洞类型的前置条件判断该请求是否满足,比如是否包含响应体部,是否包含token,是否包含url形式的参数等等,然后进行逐类型测试。
(对于某些漏洞类型来讲,需要多样本请求分析,比如会话固定、逻辑漏洞)
(2)确定待测参数,进行请求
(3)分析响应
分析可能是边请求边进行,也可能是请求完成后再进行。
一般来说,前者能够发出更少的请求,以避免被目标发现或干扰目标的业务,编程实现任务更大。
后者更强调配置,编程相对简单,但可能存在大量非必要请求。
(4)进一步确定和利用
某些漏洞类型的测试的发现、确定、利用界限是模糊的,而另外一些,比如xss和sql,测试环境复杂,可能性非常多。
因此,可以先使用较少的、通用的payload进行测试,如果存在漏洞的可能性,则进一步使用更精确的、数量更多的payload进行测试与利用。
(5)生成报告
一般是随着测试步骤同步进行输出
2.3 分析技术
(1)从阶段上来说,分为前置条件的分析、漏洞发现的分析、漏洞利用的分析
(2)可以分为请求分析和响应分析
(3)可以分为单请求-响应分析,以及多请求-响应分析
(4)可以分为关键字包含与提取、正则判断与提取、html及json等格式的判断与提取
2.4 常用模块
(1)代理
(2)日志查看和分析
(3)爆破
(4)请求与查看响应
(5)比较
(6)数据处理
(7)针对各漏洞类型的测试
3、自定义开发
选择python3+pyqt5+requests技术
根据功能,分成多个项目开发
标签:分析,请求,渗透,漏洞,测试,自动化,进行 From: https://www.cnblogs.com/wd404/p/17325554.html