《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服务器的模糊测试是通过发送随机数据包之后对响应消息进行分析实现的,数据包可以对网络流量中的如下属性进行模糊测试。

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

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

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

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

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

相关文章
|
13天前
|
Linux 网络安全 iOS开发
Metasploit Framework 6.4.49 (macOS, Linux, Windows) - 开源渗透测试框架
Metasploit Framework 6.4.49 (macOS, Linux, Windows) - 开源渗透测试框架
26 0
Metasploit Framework 6.4.49 (macOS, Linux, Windows) - 开源渗透测试框架
|
3月前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
103 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
3月前
|
安全 Ubuntu Linux
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
73 9
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
|
5月前
|
安全 Linux Shell
Kali渗透测试:使用Metasploit对Web应用的攻击
Kali渗透测试:使用Metasploit对Web应用的攻击
229 4
|
5月前
|
安全 程序员 网络安全
Kali渗透测试:对软件的溢出漏洞进行测试
Kali渗透测试:对软件的溢出漏洞进行测试
69 1
|
2月前
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。
|
27天前
|
JSON 前端开发 测试技术
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
94 10
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
|
25天前
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
58 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
|
4天前
|
存储 JSON API
Python测试淘宝店铺所有商品接口的详细指南
本文详细介绍如何使用Python测试淘宝店铺商品接口,涵盖环境搭建、API接入、签名生成、请求发送、数据解析与存储、异常处理等步骤。通过具体代码示例,帮助开发者轻松获取和分析淘宝店铺商品数据,适用于电商运营、市场分析等场景。遵守法规、注意调用频率限制及数据安全,确保应用的稳定性和合法性。
|
17天前
|
小程序 测试技术 数据安全/隐私保护
微信公众号接口测试实战指南
微信公众号接口测试是确保系统稳定性和功能完整性的重要环节。本文详细介绍了测试全流程,包括准备、工具选择(如Postman、JMeter)、用例设计与执行,以及常见问题的解决方法。通过全面测试,可以提前发现潜在问题,优化用户体验,确保公众号上线后稳定运行。内容涵盖基础接口、高级接口、微信支付和数据统计接口的测试,强调了功能验证、性能优化、安全保护及用户体验的重要性。未来,随着微信生态的发展,接口测试将面临更多挑战和机遇,如小程序融合、AI应用和国际化拓展。

热门文章

最新文章