《Metasploit渗透测试手册》—第8章8.7节 使用Metasploit进行模糊测试

简介:

本节书摘来自异步社区《Metasploit渗透测试手册》一书中的第8章8.7节 使用Metasploit进行模糊测试,作者【印度】Abhinav Singh,更多章节内容可以访问云栖社区“异步社区”公众号查看。

8.7 使用Metasploit进行模糊测试
Metasploit渗透测试手册
模糊测试是一种软件测试技术,包括使用随机的数据注入检测软件中的漏洞。模糊测试脚本生成畸形数据时,将其传送给特定的目标软件以验证其是否会导致溢出。Metasploit提供中包含某些模糊测试模块,可用于漏洞利用代码开发。下面探索一下模糊测试的基础,以及怎样将Metasploit模块用作潜在的模糊测试器。

准备
在介绍Metasploit模糊测试模块之前,首先对模糊测试及其类型进行简单的了解。

模糊测试被视为是一种黑盒测试技术,用于发现软件中的溢出问题,这一技术广泛地应用于应用程序漏洞挖掘。

模糊测试器可用于测试软件、协议和文件格式中的漏洞,可自动化实现测试数据生成和注入的过程,用户可控制用于注入的数据或数据包的大小。

模糊测试器一般测试如下攻击组合。

数字(有符号/无符号证书、浮点数等)

字符(URL和命令行输入)

元数据:用户输入的文本(id3标签)

纯粹的二进制序列

根据待测试的应用程序或协议的类型,可以相应地建立模糊测试器,以生成数据/数据包测试其是否导致溢出。Metasploit中包含了一些模糊测试模块,可以利用黑盒测试方法测试应用程序和协议。这些模块存储在modules/auxiliary/fuzzers目录中。

怎样实现
下面运行一个基于协议的模糊器模块,Metasploit中包含一个名为client_ftp.rb的FTP模块,其作用是充当FTP服务器,并向FTP客户端发送回应信息。

msf > use auxiliary/fuzzers/ftp/client_ftp
msf auxiliary(client_ftp) > show options
Module options:
   Name   Current Setting   Required     Description
   ----   ---------------   --------     -----------
  CYCLIC       true           yes       Use Cyclic pattern instead..
  ENDSIZE     200000          yes       Max Fuzzing string size.
  ERROR        false          yes       Reply with error codes only
  EXTRALINE    true           yes       Add extra CRLF's in..
  FUZZCMDS     LIST..         yes       Comma separated list..
  RESET        true           yes       Reset fuzzing values after..
  SRVHOST     0.0.0.0         yes       The local host to listen on.
  SRVPORT       21            yes       The local port to listen on.
  SSL          false          no        Negotiate SSL for incoming..
  SSLVersion   SSL3           no        Specify the version of SSL..
  STARTSIZE    1000           yes       Fuzzing string startsize.
  STEPSIZE     1000           yes       Increment fuzzing string..

从结果可以看到该模块包含很多有用的参数,下面看一下每个参数代表的功能。

CYCLIC选项用于建立模糊测试数据的循环模式,确保每隔4个字节的偏移量。如果该选项设置为false,则模糊器将使用字母A组成的字符串作为模糊测试数据。

ENDSIZE选项用于定义返回给FTP客户端的模糊测试数据的最大长度。默认情况下,该数值设置为20000字节。

ERROR选项如果被设置为true,将使用错误代码对FTP客户端进行响应。

EXTRALINE选项用于模糊测试目录列表。在收到过多的目录名请求时,有些FTP客户端会崩溃。

FUZZCMDS选项用于定义对哪些响应信息进行模糊测试,可能的请求包括LIST、NLST、LS和RETR,也可以将其设置为*,以便对所有命令进行模糊测试。

SRVHOST选项用于指定模糊测试器将使用哪个IP地址与FTP服务器进行绑定。对于本地机器,这个值可以设置为0.0.0.0。

SRVPORT选项用于定义FTP服务器端口,默认值为21。

STARTSIZE选项用于定义模糊测试数据的初始化数据长度。

STEPSIZE选项用于定义溢出失败时,模糊测试数据每次的增量。

在使用模糊测试器时,需要注意如果没有传递正确的参数值,可能会导致模糊测试失败。要对模糊器有更深入的理解,可以查看模块的源代码。下面运行FTP客户端模糊测试器,并查看其返回结果。

msf auxiliary(client_ftp) > run
[*] Server started.
[*] Client connected : 192.168.56.102
[*]  - Set up active data port 20
[*] Sending response for 'WELCOME' command, arg
[*] Sending response for 'USER' command, arg test
[*] Sending response for 'PASS' command, arg test
[*]  - Set up active data port 16011
[*] Sending response for 'PORT' command, arg 192,168,0,188,62,139
[*] Handling NLST command
[*]  - Establishing active data connection
[*]  - Data connection set up
[*] * Fuzzing response for LIST, payload length 1000
[*](i) Setting next payload size to 2000
[*]  - Sending directory list via data connection

输出信息中有几点需要特别注意,首先,FTP服务器在攻击机器上启动,之后回连FTP客户端,并向客户端机器发送不同的响应命令。模糊测试过程从NLST命令开始,之后是LIST等命令。

上面是模糊测试模块工作方式的一个小示例,下节中我们将构建自己的模糊测试模块,并对协议模糊测试进行深入理解。

怎样工作
模糊测试器会根据目标应用程序创建不同的测试用例,在上面的示例中,FTP服务器的模糊测试是通过发送随机数据包之后对响应消息进行分析实现的,数据包可以对网络流量中的如下属性进行模糊测试。

数据包头:模糊测试器可以将任意长度和取值的随机数据插入到数据包头部,并对响应消息进行分析。

数据校验和:使用模糊测试器可以在特定的条件下对校验和值进行操纵。

数据包大小:可以将任意长度的数据包发送给网络应用程序以判断是否会引发崩溃。

发生溢出或崩溃后,模糊测试器可以返回测试用例当做溢出数据使用。

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

相关文章
|
1月前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
74 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
1月前
|
安全 Ubuntu Linux
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
52 9
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
|
3月前
|
安全 Linux Shell
Kali渗透测试:使用Metasploit对Web应用的攻击
Kali渗透测试:使用Metasploit对Web应用的攻击
183 4
|
3月前
|
安全 程序员 网络安全
Kali渗透测试:对软件的溢出漏洞进行测试
Kali渗透测试:对软件的溢出漏洞进行测试
52 1
|
3月前
|
安全 网络安全 Windows
Kali渗透测试:Metasploit 6.0 中的Evasion模块 原创
Kali渗透测试:Metasploit 6.0 中的Evasion模块 原创
63 0
|
7天前
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。
|
7天前
|
存储 测试技术 数据库
接口测试工具攻略:轻松掌握测试技巧
在互联网快速发展的今天,软件系统的复杂性不断增加,接口测试工具成为确保系统稳定性的关键。它如同“翻译官”,模拟请求、解析响应、验证结果、测试性能并支持自动化测试,确保不同系统间信息传递的准确性和完整性。通过Apifox等工具,设计和执行测试用例更加便捷高效。接口测试是保障系统稳定运行的第一道防线。
|
7天前
|
Web App开发 JSON 测试技术
API测试工具集合:让接口测试更简单高效
在当今软件开发领域,接口测试工具如Postman、Apifox、Swagger等成为确保API正确性、性能和可靠性的关键。Postman全球闻名但高级功能需付费,Apifox则集成了API文档、调试、Mock与自动化测试,简化工作流并提高团队协作效率,特别适合国内用户。Swagger自动生成文档,YApi开源但功能逐渐落后,Insomnia界面简洁却缺乏团队协作支持,Paw仅限Mac系统。综合来看,Apifox是国内用户的理想选择,提供中文界面和免费高效的功能。
|
1月前
|
监控 JavaScript 测试技术
postman接口测试工具详解
Postman是一个功能强大且易于使用的API测试工具。通过详细的介绍和实际示例,本文展示了Postman在API测试中的各种应用。无论是简单的请求发送,还是复杂的自动化测试和持续集成,Postman都提供了丰富的功能来满足用户的需求。希望本文能帮助您更好地理解和使用Postman,提高API测试的效率和质量。
107 11
|
2月前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
83 3

热门文章

最新文章