Skip to main content

介绍

Nuclei 和 ProjectDiscovery 社区以能够用快速简单的 YAML 格式编写漏洞利用/检查而蓬勃发展。我们持续改进我们的 Nuclei 模板,鼓励将其作为编写安全检查的标准。我们了解其局限性,并且一直在努力解决这些问题,同时扩展我们的能力。 Nuclei 目前支持通过 Nuclei 引擎中强大且易用的 DSL 编写复杂的 HTTP、DNS、SSL 协议漏洞利用/检查模板。然而,我们理解当前的支持可能不足以解决所有协议和非远程安全领域的漏洞,如本地权限提升检查、内核等。 为了解决这个问题,Nuclei v3 包含了一个为 Nuclei 量身定制的 JavaScript 嵌入式运行时,借助 Goja 实现。

特性

支持特定提供商或驱动的漏洞利用 某些漏洞是特定于软件或驱动程序的。例如,Redis 缓冲区溢出漏洞利用、特定 VPN 软件的漏洞利用,或者不属于互联网工程任务组 (IETF) 标准协议的漏洞利用。 由于这些不是标准协议,它们通常不会被添加到 Nuclei 中。这些类型的漏洞检测无法使用”网络”协议编写。 它们通常非常复杂,这些漏洞的检测可以通过在 Nuclei 中暴露所需库(如果尚未存在)来编写。我们现在提供使用 JavaScript 编写这些类型漏洞检测的支持。 非网络检查 安全不仅限于网络漏洞。Nuclei 提供对网络问题之外的安全支持,例如:
  • 本地权限提升检查
  • 内核漏洞
  • 账户配置错误
  • 系统配置错误
复杂网络协议漏洞利用 由于协议或漏洞本身的性质,某些网络漏洞非常复杂。例如 CVE-2020-0796 需要手动构建数据包。 这些漏洞的检测通常用 Python 编写,但现在可以用 JavaScript 编写。 多步骤漏洞利用 LDAP 或 Kerberos 漏洞利用通常涉及身份验证的多步骤过程,难以用基于 YAML 的 DSL 编写。JavaScript 支持使这变得更容易。 可扩展和可维护的漏洞利用 用代码编写的一次性漏洞检测由于语言性质、样板代码和其他因素,不具有可扩展性和可维护性。我们的目标是提供工具,让您编写运行漏洞检测所需的最少代码,让 Nuclei 完成其余工作。 利用图灵完备语言 虽然基于 YAML 的 DSL 功能强大且易于使用,但它不是图灵完备的,有其自身的局限性。JavaScript 是图灵完备的,因此已经熟悉 JavaScript 的用户可以编写网络和其他漏洞检测,而无需学习新的 DSL 或者在现有 DSL 上进行黑客式修改。

要求

  • 编写 JavaScript 协议模板需要基本的 JavaScript 知识(循环、函数、数组)
  • Nuclei v3.0.0 或更高版本