自动化渗透

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技术

根据功能,分成多个项目开发

 

posted @ 2023-04-17 13:26  挖洞404  阅读(61)  评论(0编辑  收藏  举报