基于已知漏洞的ftp服务器的漏洞挖掘

我们的测试对象是EasyFTP 1.7.0.11,已知漏洞如下(github):

命令 个数
CWD 1
LIST 1
11

Peach

简介

MichaelW Eddington等人开发的Peach是一个遵守MIT开源许可证的模糊测试框架,最初采用Python语言编写,发布于2004年,第二版于2007年发布,最新的第三版使用C#重写了整个框架。现在已经逐渐转入商业支持,我们这边调研使用的是peach社区版。

整体工作流程

xml的编写,一些重要的元素

DataModel定义发送的数据和接收的数据,可以支持很多协议的特性,例如校验码、固定长度元素等特性。

    StateModel是最重要的元素,定义是状态机,规定输入和输出,按照有步骤的来。

    还有一些其他的元素……

运行截图

命令行运行我们编写的ftp.xml,日志文件在c:\logs下。

    在此命令下每个test生成10个测试用例,然后会显示发送和接收的数据。

    在运行过程中会发现一些错误:

错误发现

peach会在WinDebugger监视进程下记录所有可能导致程序异常的的测试用例和栈的情况,测试时间和结果如下:

    文件夹下记录status和出现的fault:

    fault文件下文件夹命名方式和已知的漏洞和一些未知的错误


    能查看导致程序崩溃的发送的数据和stack情况

Sulley

简介

Sulley一款用Python实现的开源Fuzz testing框架,主要应用于网络协议方面的测试. 目前现在关于这方面的测试工具也挺不少,不管是开源的(比如历史悠久的SPIKE, 或者是本文介绍的Sulley)还是商业的(比如Mu Dynamics公司的产品)
    事实上,在Sulley出来之前,这方面的工具已经有一些了,但是为什么Sulley的作者还要选择重新造轮子呢?根据Sulley的文档,他这么做的理由是,当时已有的工具主要是专注在”数据生成“部分,**而仅仅做到这一步对Sulley是不够的,因为Sulley设计的目标是:不仅要简化数据生成,同样要简化与目标系统的之间的数据传输,以及目标系统的监控。**因此我们可以把刚才这段话理解成,Sulley要做的是一个能支持fuzz testing的整个测试流程的框架。在这一点上,显然Sulley的定位比起之前的工具高出了很多。而且事实上,Sulley的作者也不算是在造一个全新的轮子,比如在具体实现Sulley的时候,他也借鉴了一些当时已经成熟很成熟的Fuzz框架(SPIKE)的经验,比如用“块”结构的方式来构造数据,这点从Sulley构造Request所用的API接口就可以看出来,包括对于特定数据类型所用到的fuzz library也都直接从SPIKE拿过来

整体工作流程

sulley里面还有一些模块可以扩展,例如vmcontrol模块,可以控制虚拟机中程序奔溃返回原始状态

重要的概念–session,区别于peach里面的状态机

ftp里面的session如下图,sulley可以根据这幅图,自动遍历所有节点,保证每个节点顺利通过测试。

运行截图

运行process_monitor模块:

    运行network_monitor模块:

    运行编写的ftp2.py文件后,开始生成测试用例:

    运行的时候还可以通过http:\\127.0.0.1:26000查看运行进度:

结果

运行时会对进行每个测试用例时候的网卡进行抓包


    sulley会把运行的时候错误写在.crash_bin文件里,通过特定的插件可以查看crashbin文件里的内容,如下:

Sulley和Peach

功能方面:sulley和peach完成的功能点都是一样
    开发角度:peach专注于xml文件的编写,其余部分几乎很少能改写,代码量比较大、没有详细的代码注释、现在开放的是社区版;sulley用代码来写测试,可以开发一些插件、监视器等,适用于深度开发。
    ftp测试需要的代码量比较:peach的xml需要上千行代码,而sulley只需要300百行。

模糊测试工具Sulley开发指南(2)——与Peach比较相关推荐

  1. 模糊测试工具Sulley开发指南(1)——安装Sulley(多图,超详细)

    本教程是针对的是windows上面的安装,至于其他系统的安装有时间的话会贴出来,本教程翻译自OpenRCE/Sulley-GitHub-Wiki官网教程,但是里面有一些错误我会更正指出.值得一提是,我 ...

  2. 模糊测试工具Sulley开发指南(3)——整体介绍

    我们开始来讲一些Sulley里面的整体介绍,方便我们能系统地了解Sulley的架构,了解Fuzzing的思路,最后能生成py文件来具体运行fuzzing.这章主要是整体印象,下一章开始会讲具体的模块以 ...

  3. stretchblt 模糊_微软开源持续开发模糊测试工具OneFuzz

    点击蓝字关注我们 近日,微软开源了OneFuzz--一个微软内部使用的,由开发人员驱动的持续开发模糊测试平台.开源后,世界各地的开发人员都可以通过OneFuzz直接从其开发系统接收模糊测试结果. 模糊 ...

  4. 2021年软件测试工具总结——模糊测试工具

    ~ 什么是模糊测试?~ 模糊测试(Fuzz Testing)是一种自动化的软件测试技术,最初是由威斯康辛大学的巴顿·米勒于1989年开发的,通常用于识别程序中的潜在漏洞.模糊测试的核心是自动或半自动的 ...

  5. Web模糊测试工具Powerfuzzer

    Web模糊测试工具Powerfuzzer Powerfuzzer是Kali Linux自带的一款Web模糊测试工具.该工具基于各种开源模糊测试工具构建,集成了大量安全信息.该工具高度智能化,它能根据用 ...

  6. 他们从各大操作系统中发现了26个 USB 漏洞,用的是这款模糊测试工具

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 普渡大学的研究员 Hui Peng 和瑞士洛桑联邦理工学院的研究员 Mathias Payer 在多种操作系统(如 Linux.mac ...

  7. 模糊测试框架 Sulley 使用手记 (一)

    在最近项目的测试中,我们引入了模糊测试(Fuzz testing).在这个过程中,接触到了Sulley,一款用Python实现的用于网络协议fuzz testing的开源测试框架.跟其他的开源工具比起 ...

  8. 模糊测试框架 Sulley 使用手记

    在最近项目的测试中,我们引入了模糊测试(Fuzz testing).在这个过程中,接触到了Sulley,一款用Python实现的用于网络协议fuzz testing的开源测试框架.跟其他的开源工具比起 ...

  9. 模糊测试工具defensics

    defensics是一个模糊测试工具,百度百科对模糊测试(Fuzzing)的定义是,是一种通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法.它是通过异常输入的方式触发原来未知的漏洞. ...

最新文章

  1. VOLTE parameter in Attach Request/Accept message
  2. 大学python用什么教材-清华大学出版社-图书详情-《Python大学教程》
  3. 记一次关于SSM框架的使用错误
  4. POJ 1573 POJ 2632(两道有趣的Robot)实例
  5. 10、mybatis参数处理
  6. 自然归并排序 c++ (原创)
  7. c# json datatable_KoobooJson一款高性能且轻量的JSON库
  8. win7系统锁定计算机设置方法
  9. 【MyBatis框架】查询缓存-二级缓存-整合ehcache
  10. SQL那些事儿(三)----和小伙伴们做武大游
  11. 捷径|抖音去水印教程
  12. 如何清理roaming_笔记本电脑中appdata中roaming怎么越来越大该怎么办
  13. 疫情期间的中老年众生相:刷抖音/云买菜/直播购物,加速“触网”
  14. 【海量数据学院】DBA学习方法论系列之:明确的学习目标
  15. jooq从入门到精通(一)
  16. 802.11 - (1)
  17. 关于elementui的table主子表展示数据
  18. linux驱动37:kmalloc内存分配
  19. java教程 invoke_Java中Method的Invoke方法详细介绍
  20. batch-size选取

热门文章

  1. uni-app小程序基础知识速览(上)
  2. 3D模型欣赏:人形武器 古代兵器 【3D游戏建模教程】
  3. 如何将iPhone中的手机通讯录同步至安卓手机(教学篇)
  4. PATCHY-SAN - Learning Convolutional Neural Networks for Graphs ICML
  5. 【NAS】Samba配置文件解析
  6. HashMap 扩容 加载因子
  7. java html5转pdf文件_Java 将Html转为PDF
  8. math sub Java_java初学减法运算
  9. css如何选择同一个class下的第一个div?
  10. 发送给客户的文件,怕泄漏怎么办?