一、高级模糊测试解析
1.1高级模糊测试原理
高级模糊测试是一种通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。它是一种自动化的软件测试技术,在理想状态下程序接收到的数据都是规范、格式化的数据,Fuzzing 则使用意想不到的、无效的、随机/半随机的输入来发现程序 bug,Fuzzer 通过生成半有效输入并监视程序异常,以便能够发现更深层的逻辑问题。程序接收客户端数据后会对数据进行解析并计算处理数据,最终返回结果。
模糊测试还有个更为形象的比喻,被称为猴子测试,为什么叫猴子测试呢?程序猿或其他 IT 行业都会对程序存在一个固有思维,而猴子是对电脑完全没有接触的动物,遇到电脑时会一通乱敲,输入没有规律可言,这样能够很好地打破固有思维。
1.2 测试使用场景
1.高级模糊测试适用于进行测试服务器、应用程序中服务的健壮性,通过提供大量畸形数据输入给被测程序,触发程序的崩溃或异常执行状态。
二、高级模糊测试在supernova测试仪中可应用的场景
2.1 demo模式
测试仪可以展示高级模糊测试运行FTP、HTTP两种服务的范例。
2.2应用服务模式
测试仪只模拟客户端,向被测服务器发送畸形数据,从而得到该服务器运行协议的健壮性。
三、高级模糊测试用例功能介绍
3.1抓包设置
可以设置抓的捕获包数。可在运行前或运行中设置抓包。
3.2用例参数
发包间隔时间:每次发送报文间隔时间
重传次数:指失去连接后的重传次数。
重传间隔时间:指定失去连接后的重传间隔时间
开始攻击序号:开始攻击序号
结束攻击序号:结束时攻击序号(空代表不限制结束编号)
允许最大crash次数:测试结束前允许crash的次数
单字段允许最大crash次数:单个字段结束之前允许crash的次数
忽略目标连接重置错误信息:启用时记录目标连接重置错误信息为正常信息,禁用时记录目标连接重置错误信息为错误。
忽略目标连接终止错误信息:启用时记录目标连接终止错误信息为正常信息,禁用时记录目标连接终止错误信息为错误。
忽略SSL相关错误信息:启用时记录SSL相关错误信息为正常信息,禁用时记录SSL相关错误信息为错误。
保存通过个数:保存仅在失败或错误之前通过的测试用例个数,设置为 0 保存每个测试用例。
保持目标连接:启用时仅使用一个目标连接,禁用时重新连接每个测试用例。
Checksum:开启时,计算协议中checksum的值。
Ping连通性检查:在测试开始之前,是否发送ping报文,检查客户端和服务端之间的连通性
3.3 模糊测试对象
模糊测试对象:选择需要测试的协议对象。可以使用内置的协议对象也可以克隆编辑对象或者使用python脚本进行上传到对象中。
四、高级模糊测试案例
4.1 高级模糊测试用例拓扑图
说明:测试仪使用“应用服务模式”模拟高级模糊测试的客户端,来测试服务器上http服务健壮性。
4.2 高级模糊测试用例目的
通过模糊测试发送http协议的畸形报文(异常数据),挖掘应用程序minishare-1.4.1-nl是否存在缓冲区溢出的漏洞。
4.3 高级模糊测试预计结果
测试仪上显示重连并且出现服务崩溃情况,并且检查出造成崩溃畸形报文。
五、测试步骤
5.1创建高级模糊测试用例,配置参数。
(1)在应用服务模式中,创建高级模糊测试,选择应用服务模式,配置被测设备的IP地址。
(2)抓包设置,本次运行结果查看报文发送情况,可以在抓包中设置抓包类型和数量。
(3)参数设置,可设置所需要的参数。如感觉发包时间太慢,可以调整发包时间为0.
(4)点击启动用例
(5)在监控中查看运行界面
(6)查看报告
用例手动终止或者到时后,可在报告页面查看发送情况和数据。
六、对预期结果进行验证
6.1查看服务器中应用程序日志和OllyDbg监控界面。
在发送第44次模糊报文时,连接服务器失败。显示服务不可用。
利用 OllyDbg 调试器的Attach 功能附加到 MiniShare 进程。
OllyDbg 中程序暂停同时 EIP 地址显示为42424242 (42代表的就是溢出字符B的ASCI 码),说明目标程序存在溢出漏洞.
6.2查看测试仪中报告44次发送报文5043字节B报文。测试仪发送的第44次畸形报文导致应用程序中出现溢出漏洞,从而致使应用程序崩溃。
6.3测试仪的用例参数开始攻击序号和结束攻击序号设置为44重新运行用例。用来再次确认造成应用程序崩溃的畸形报文。
再次验证是测试仪发送的第44次畸形报文导致应用程序中出现溢出漏洞,从而致使应用程序崩溃。
符合4.3期望预期。