《Metasploit渗透测试手册》—第8章8.8节编写FileZilla FTP模糊测试器

8.8 编写FileZilla FTP模糊测试器
Metasploit渗透测试手册
前面已分析过模糊测试模块的工作过程,本节中将进一步构建自己的小型FTP模糊测试器,用于对FileZilla FTP服务器进行模糊测试。

怎样实现
构建模糊测试器的基本模板与前面开发辅助模块所用的模板类似,基本模板应具有如下的形式。

require 'msf/core'
class Metasploit3 < Msf::Auxiliary
    include Msf::Auxiliary::Scanner
        def initialize
              super(
                   'Name'         => 'FileZilla Fuzzer',
                   'Version'      => '$Revision: 1 $',
                   'Description'  => 'Filezilla FTP fuzzer',
                   'Author'       => 'Abhinav_singh',
                   'License'      => MSF_LICENSE
                    )
                   register_options( [Opt::RPORT(14147),
                      OptInt.new('STEPSIZE', [ false, "Increase string size each iteration with this number of chars",10]),
                      OptInt.new('DELAY', [ false, "Delay between connections",0.5]),
                      OptInt.new('STARTSIZE', [ false, "Fuzzing string startsize",10]),
                      OptInt.new('ENDSIZE', [ false, "Fuzzing string endsize",20000])
                      ], self.class)
            end

前面的代码表示导入MSF库,创建一个类,并定义其中的一些选项,下一步定义模糊测试器的主体部分。

def run_host(ip)
  udp_sock = Rex::Socket::Udp.create(
    'Context'   =>
     {
      'Msf' => framework,
      'MsfExploit' => self,
     }
    )
  startsize = datastore['STARTSIZE'] # fuzz data size to begin with
  count = datastore['STEPSIZE']  # Set count increment
  while count < 10000  # While the count is under 10000
    run
    evil = "A" * count  # Set a number of "A"s equal to count
     pkt = "\x00\x02" + "\x41" + "\x00" + evil + "\x00"  # Define the payload
     udp_sock.sendto(pkt, ip, datastore['RPORT'])    # Send the packet
    rint_status("Sending: #{evil}")
     resp = udp_sock.get(1)  # Capture the response
    count += 100  # Increase count by 10, and loop
    end
  end
end

下面分析该脚本,该脚本首先创建UDP socket,这在建立到FileZilla服务器的连接时会用到。然后声明变量startsize与count,分别定义了模糊测试器的起始数据大小和增量长度值,之后建立循环,并在其中声明恶意字符串和攻击载荷格式,这些内容将作为数据包(pkt)的组成部分发送到目标程序。

最后,该脚本使用udp_sock_sendto函数将服务器发送数据包,并使用resp=udp_sock.get()函数捕获服务器的响应信息。每次收到响应信息后,数据包长度值增加100。

怎样工作
要使用该模块,首先要将其存储到modules/auxiliary/fuzzers/ftp目录,将该模块命名为filezilla_fuzzer.rb。

msf > use auxiliary/fuzzers/ftp/filezilla_fuzzer

msf auxiliary(filezilla_fuzzer) > show options

Module options (auxiliary/fuzzers/ftp/filezilla_fuzzer):

Name Current Setting Required Description

DELAY 0.5 no Delay between..

ENDSIZE 20000 no Fuzzing string endsize

RHOSTS yes The target address

RPORT 14147 yes The target port

STARTSIZE 10 no Fuzzing string startsize

STEPSIZE 10 no Increase string size..

从结果可以看到,该模块工作良好,并展示了一些可用的选项。对相应选项进行赋值,并使用run命令运行。

msf auxiliary(filezilla_fuzzer) > set RHOSTS 192.168.56.1

RHOSTS => 192.168.56.1

msf auxiliary(filezilla_fuzzer) > run

[*] Sending: AAAAAAAAAA

[*] Sending: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

上述内容表明该模糊测试器向服务器发送字符串,并一直重复这一发送过程,直至服务器崩溃或该循环结束。如果在服务器崩溃之前循环结束,可以尝试修改脚本来发送更长的字符串。上面简要展示了使用Metasploit对软件进行模糊测试的过程,通常不建议使用Metasploit对大型软件进行模糊测试。对软件和应用程序的模糊测试而言,还可以使用一些更专业化的框架。

更多
快速浏览下面的模糊测试框架,如果读者想要提高模糊测试和漏洞利用代码开发方面的知识能力,可以使用该框架。

Antiparser模糊测试框架
Antiparser是使用python语言编写的一个模糊测试框架,用于构建模糊测试器的随机数据的创建过程。该框架可用于开发跨平台运行的模糊测试器,因为该框架唯一的要求就是必须安装Python解释器。

Antiparser可以在http://sourceforge.net/projects/antiparser/处下载。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

时间: 2024-09-15 22:03:04

《Metasploit渗透测试手册》—第8章8.8节编写FileZilla FTP模糊测试器的相关文章

《高度安全环境下的高级渗透测试》—第1章1.2节渗透测试开始之前

1.2 渗透测试开始之前在渗透测试开始之前,必须考虑一些需求:你需要界定测试的范围.时间限制和约束条件.测试的类型(白盒测试.黑盒测试).如何处理第三方的设备以及IP地址空间.渗透测试执行标准(PTES)列出一些界定范围的条款作为"前期互动"阶段的部分内容.我强烈建议你在http://www.pentest-standard.org/index.php/Pre-engagement查看这一部分的内容. 尽管这本书不直接遵循PTES进行讲解,但是我将试着将本书与PTES相关的部分关联起来

《高度安全环境下的高级渗透测试》—第1章1.1节什么是高级渗透测试

第1章 计划和界定一次成功的渗透测试高度安全环境下的高级渗透测试本章将介绍在对一个复杂和加固环境进行渗透测试时,该如何进行计划和准备.本章将讲解下述主题: 什么是高级渗透测试:如何成功地界定渗透测试目标:渗透测试之前需要出现哪些情况:设定你的测试范围--凡事总有结束的时候:制定执行计划:利用MagicTree进行精细管理:使用MagicTree导出各种格式的测试结果:使用Dradis进行基于团队的数据收集和信息共享:在Dradis中创建可重用的模板.1.1 什么是高级渗透测试渗透测试能有效检测你

《高度安全环境下的高级渗透测试》—第1章1.8节总结

1.8 总结在这一章中,我们讲解了一次成功的渗透测试之前所有必要的准备和计划.我们讨论了渗透测试和漏洞评估之间的区别. 详细阐述了界定恰当范围的具体步骤,这些步骤确保了在渗透测试前应该收集的信息,值得注意的是,恰当的界定范围和制定计划与测试中发现最新重大漏洞一样重要. 我们同时也讨论了如何安装VitualBox和BackTrack,不仅给出了从ISO文件安装BackTrack的必要指导,还给出了如何保持更新的指令.除此之外,我们也提供了在BackTrack上安装OpenOffice的指令. 最后

《高度安全环境下的高级渗透测试》—第1章1.7节Dradis框架介绍

1.7 Dradis框架介绍Dradis框架是一个Rails应用程序,它可以用于管理在渗透测试时出现的数据过载情况.Dradis基于Web的用户界面体验良好,它简化了渗透测试周期的数据收集过程,并且能够将数据方便地分享给团队其他成员. 在结合不同的数据源,例如Nmap.Nessus,甚至Metasploit时,你通常需要构造某种数据库,然后使用各种方法管理导入的数据.Dradis可以让你单击几下鼠标,就能通过插件导入这些数据.Dradis也允许你上传附件(例如截图),或将你自己的注释添加至数据库

《高度安全环境下的高级渗透测试》—第1章1.4节探索BackTrack

1.4 探索BackTrack 恭喜,你现在已经拥有了世界上最强大的渗透工具集,并且已经安装好供你使用了.整本书将致力于介绍BackTrack--Linux平台上最优秀的工具集,该工具集无疑将会为你在渗透测试阶段节省大量的时间. 1.4.1 登录 安装的默认登录信息如下所示: bt login:root bt password:toor 1.4.2 修改默认密码 登录后,我们应该尽快修改默认密码.通过终端输入passwd,将密码替换为例子中的1NewPassWordHere这个密码作为你的安全密

《高度安全环境下的高级渗透测试》—第1章1.3节制订执行计划

1.3 制订执行计划一旦开始测试,你需要准备一些东西.这需要一个执行计划,你的所有设备和脚本都需要启动并处于运行状态,你还需要制定一些机制来记录所有的步骤和操作.这样也能为你自己和团队其他成员提供一个参考.你可能现在还记得绕过某台防火墙的步骤,但是当你在4个月之后面对同样的防火墙时,你还记得住么?做好记录对一次成功的渗透测试而言至关重要. 对于本书而言,我们将使用VirtualBox来回顾BackTrack套件的安装过程.VirtualBox是在GNU通用公共许可协议(GPL)保护下,由Orac

《高度安全环境下的高级渗透测试》—第1章1.5节安装OpenOffice

1.5 安装OpenOffice有时你需要打开电子表格查看IP的范围,或者需要迅速查看你的ROE.很多时候,在BackTrack中,最好让你的数据收集工具所导出的数据直接生成一个文字处理文件.目前,有很多与Microsoft Word 类似的开源软件,OpenOffice 就是一个非常好的选择.OpenOffice已经被很多公司采用,它可以输出各种文件格式.在BackTrack上安装OpenOffice只需要打开一个终端,并输入下述命令即可: # apt-get update # apt-get

《Metasploit渗透测试手册》—第8章8.1节介绍

第8章 使用漏洞利用代码 Metasploit渗透测试手册 本章讲解下述内容: 探索模块结构: 常用的漏洞利用代码mixins: 使用msfvenom: 将漏洞利用代码转换为Metasploit模块: 移植并测试新的漏洞利用代码模块: 使用Metasploit进行模糊测试: 编写FileZilla FTP模糊测试器. 8.1 介绍 Metasploit渗透测试手册 首先介绍漏洞利用代码.漏洞利用代码(Exploit)是指利用某个软件中的漏洞或bug执行攻击者意图指令的软件代码.数据块或指令序列.

《Metasploit渗透测试手册》目录—导读

版权声明 Metasploit渗透测试手册 Copyright Packt Publishing 2012. First published in the English language under the title Advanced Penetration Testing for Highly-Secured Environments: The Ultimate Security Guide. All Rights Reserved. 本书由英国Packt Publishing公司授权人民