
Universal Plug and Fuzz
UFuzz,即 Universal Plug and Fuzz,是一款自动化的 UPnP 模糊测试工具。它会枚举网络上的所有 UPnP 端点,查找可用的服务并对其进行模糊测试。它还支持使用 Burp 代理日志对 HTTP 进行模糊测试。
它专为模糊测试嵌入式系统而设计,因此仅支持单线程。同时,它的载荷集非常有限,因为对这些系统进行模糊测试可能很慢。某些载荷如盲 SQL 注入和命令注入依赖延迟来判断注入是否成功,因此可能出现误报。其他载荷如格式字符串和缓冲区溢出则设计为使用自定义监视器来检测崩溃。
其中包含了示例配置模块和监视器模块。自定义监视器允许利用目标系统的遥测数据来检测崩溃。示例模块已提供用于基于 telnet 和基于串行控制台的崩溃检测。
请注意,代码非常粗糙。用“拼凑”来形容最合适不过了。遗憾的是,这个项目编写得很仓促,从未真正进行过合理的架构设计。我将在未来几个月内着手解决这个问题。
最后,部分代码借鉴了其他项目:
UPnP 代码主要基于 Craig Heffner 的 miranda 代码。Craig 一直是我灵感的来源,我强烈推荐你阅读他的博客 /dev/ttys0。
部分测试集生成代码基于 Ben Nagy 的 Metafuzz 项目。
套接字和 HTTP 解析代码基于 Excon。
UFuzz 已在 Ruby 1.9.3 和 Ruby 2.1.1 上测试通过。你可以在 UFuzz 目录中运行 bundle install 来安装所有必需的 gem。
使用 -h 选项运行 ufuzz 可查看所有命令行选项。工具运行后,日志会写入日志目录。
如需对网络上的所有 UPnP 设备进行基础模糊测试,只需运行 ufuzz --upnp。你可能还需要使用 -v 4 选项来查看请求和响应摘要。