内容提要
FUZZ是一种计算机编程和软件测试技术,通过提供无效、意外或随机数据作为输入来识别漏洞、错误或异常行为。作者在工作中首次使用FUZZ,并发现了一些路径和一个注册API。作者使用FUZZ测试API,并成功获取了完整的请求数据包。这是作者的第一个FUZZ测试结果。
延伸解读
从路径发现到API模糊测试的流程
作者先借助浏览器插件FindSomething发现系统路径,再用yakit筛选状态码为200的路径,从中找到一个返回错误码的注册API。随后基于经验假设该API使用POST请求,并用来自fuzzDicts的字典对参数进行模糊测试。这一流程展示了实际工作中从信息收集到针对性测试的递进思路,但文章未说明字典的具体内容或测试的完整参数范围。
请求方法假设与测试调整
作者根据测试经验推测注册API与登录API格式相似,因此先尝试POST请求进行参数模糊测试,但未能找到第一个参数。之后转向GET请求测试,并发现了一个与其他响应不同的响应包。这说明在模糊测试中,初始假设可能不成立,需要根据实际响应灵活调整请求方法,而不是固守单一思路。
首个FUZZ结果的启示与局限
作者通过GET请求测试注册API时,发现了一个异常响应包,并据此获得了完整的请求数据包,这是其首次FUZZ测试成果。文章体现了模糊测试在发现异常行为方面的作用,但未透露具体漏洞细节或后续利用方式。读者应注意,该结果基于特定系统和字典,不能直接推广到其他场景,实际测试需结合目标特性调整策略。
Q&A
什么是FUZZ?
FUZZ(或fuzzing)是一种用于计算机编程和软件测试的技术,通过向程序或系统提供无效、意外或随机的数据作为输入,来识别漏洞、错误或异常行为。
作者在工作中是如何发现测试目标的?
作者在测试一个系统时,使用了一个名为FindSomething的浏览器插件发现了许多路径。
作者用什么工具对发现的路径进行测试?
作者使用yakit工具对发现的路径进行测试,并选择了状态码为200的路径。
作者在测试中发现了什么特殊的API?
作者在测试的路径中发现了一个注册API,该API返回了一些错误代码。
作者如何对注册API进行FUZZ测试?
作者根据经验猜测注册API与登录API格式相似,因此使用POST请求对参数进行模糊测试,使用的模糊字典来自https://github.com/TheKingOfDuck/fuzzDicts。
作者在FUZZ测试中遇到了什么困难?
在使用POST请求进行FUZZ测试后,作者未能找到第一个参数。
作者最终如何获得了完整的请求数据包?
作者改用GET请求测试该API,发现了一个与其他响应不同的响应包,并按照同样的方法获得了完整的请求数据包。