模糊测试

模糊测试(Fuzzing),是一种通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。

从字面上理解,模糊就是不确定,我们在遇到不确定的事情时,该怎么办呢?我们需要不断尝试可能的情况,直到最终确定下来。
我们需要关注的几个点:输入、非预期、监视异常结果、软件漏洞

模糊测试(fuzz testing)是一种安全测试方法,他介于完全的手工测试和完全的自动化测试之间。为什么是介于那两者之间?首先完全的手工测试即是渗透测试,测试人员可以模拟黑客恶意进入系统、查找漏洞,这对测试人员的要求比较高。能力强的测试人员可以发现比较多或者高质量的安全性问题,但是如果测试人员的能力不够,可能就不能找到足够多、威胁大的安全漏洞。所有渗透测试对人员能力的依赖性强,成本高,难以大规模的实施。

在模糊测试中,用随机坏数据(也称做 fuzz)攻击一个程序,然后等着观察哪里遭到了破坏。模糊测试的技巧在于,它是不符合逻辑的:自动模糊测试不去猜测哪个数据会导致破坏(就像人工测试员那样),而是将尽可能多的杂乱数据投入程序中。由这个测试验证过的失败模式通常对程序员来说是个彻底的震撼,因为任何按逻辑思考的人都不会想到这种失败。
模糊测试是一项简单的技术,但它却能揭示出程序中的重要 bug。它能够验证出现实世界中的错误模式并在您的软件发货前对潜在的应当被堵塞的攻击渠道进行提示。

输入:对于软件而言,只要你需要跟用户交互,你就需要为用户提供输入的地方,比如:输入框、按钮等,对于安全而言,用户的输入都是不可信的,因为存在用户输入的地方,那么对于用户输入的内容是不可预料的,一定会有我们考虑不全的情况存在,出现非预期的情况。

非预期:我们在设计一个功能的时候,是有预期的,比如用户评论功能,只允许用户提交 50 个字,当用户成功提交了 51 个字,那么这就是非预期的情况,我们把这种情况就叫做非预期的结果,导致这个结果的原因就是漏洞或者 bug。

监视异常结果:对于一个输入口,我们在输入各种参数进行测试时,如何知道参数是否有效,那么就需要监视参数提交的过程以及提交后产生的结果是否存在异常,这里的异常就是跟我们最初预期的结果有所不同,出现这种情况就需要我们重点关注了。

软件漏洞:这是模糊测试的最终目的,不只是软件的漏洞也可以是 bug,因为漏洞和 bug 都是软件设计之初非预期的情况。

其中输入是模糊测试关键,是模糊测试是否有效的灵魂,只有你的输入是软件设计之初未考虑到情况,是非预期的输入,那么你才能发现软件的问题所在。

在做渗透测试的时候,需要模糊测试的情况有很多,比如:遇到一个用户评论的地方,我们可以尝试用不同的 xss payload 来判断是否存在 xss 漏洞;遇到一个用户登陆的地方,我们可以尝试用不同的 sql 注入的 payload 测试是否存在 sql 注入漏洞。

模糊测试在什么时候用呢?
其实各种大型的 web 扫描器的原理也包含了模糊测试的功能,我们在对一个 web 网站做渗透测试的时候,有经验的人都不会直接用扫描器,而是先熟悉 web 网站有哪些功能,用户可以控制的参数有哪些,进行简单的手工尝试之后,如果发现有一处可能存在问题,但是由于自己尝试的 payload 不能成功验证漏洞的存在,正好,自己收集了一些同类漏洞的不同 payload 列表,将这个列表中的所有 payload 均尝试一遍,监视其产生的结果,确定该处是否存在安全漏洞。

模糊测试的过程可以是手工进行,但是手工多累,所以为了代替手工,可以写一个小脚本针对那一个指定的输入口,用指定的 payload 列表,进行尝试并将结果保存下来进行分析,而扫描器的原理就是将多个模糊测试案例综合起来,自动根据不同的接口用不同的 payload 列表进行尝试,并自动分析结果是否异常,输出报告,由于不同网站的技术栈不同,可能导致结果不准确,误报、漏报等情况。

由于扫描器会对所有接口尝试所有的 payload ,所以会导致网站的压力过大,对于一些会保存到数据库的功能,会给网站维护者增加非常多的垃圾数据,由于 payload 众多,扫描器为了减少扫描时间,会使用多线程来提升扫描速率,如果网站抗压能力不强,还有可能导致网站挂掉,所以在做渗透测试项目的时候,尽量不要使用大型的 web 扫描器。

payload 哪里来?
对于扫描器而言,payload 就是其核心,如果你没有经验,让你去创造 payload 可能会有点强人所难,那么我们可以做的是收集别人的 payload,然后供自己使用。

那么如何收集不同的 payload 呢?
1、github 有非常多的开源扫描器,其中或多或少都会有扫描器作者贡献的 payload,我们只需要把他们的 payload 收集起来,并且进行分类整理。

2、如果你有使用付费扫描器的权利,你可以自己搭建一个 web 服务器,用付费的扫描器对你的 web 服务器进行扫描,你把日志搞出来分析一下,就可以获得付费扫描器的 payload 了。

3、除了上面两种情况,还有非常多黑客自己专属扫描器以及自己专用 payload,那么你想要得到他们智慧的结晶,那么你就需要诱使他们来攻击你,让他们扫描你的网站,从而通过日志获取他们的 payload,这种情况可遇不可求。

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值