通过命令行搜索 Exploit-DB

网络安全Beginner
立即练习

简介

在网络安全领域,发现软件漏洞仅仅是第一步。为了理解真正的风险,安全专业人员必须弥合“发现”与“利用”之间的鸿沟。Exploit Database (Exploit-DB) 是一个符合 CVE 标准的公开漏洞利用程序及相应易受攻击软件的存档,专为渗透测试人员和漏洞研究人员开发。

建立这种联系至关重要,因为一个漏洞发现的实际意义取决于是否存在公开的利用材料、其成熟度如何以及需要什么条件。将软件版本映射到漏洞利用参考资料,有助于将原始的发现转化为具体的风险背景。

在本实验中,你将学习如何使用 searchsploit,这是 Exploit-DB 的官方命令行界面。你将练习更新本地漏洞数据库、搜索特定软件版本、筛选大量结果,并提取漏洞利用源代码进行分析。这些技能对于将发现的服务映射到已知的攻击向量至关重要。

更新 Searchsploit 数据库

在这一步中,你将学习如何确保本地的 Exploit Database 副本保持最新。

searchsploit 工具依赖于本地的漏洞利用程序仓库。由于新的漏洞每天都在被发现和发布,因此在进行任何搜索之前定期更新此数据库至关重要。如果你在过时的数据库中搜索,可能会错过针对你正在调查的软件最新发布的漏洞利用程序。

保持漏洞参考资料的实时性是评估工作的一部分。过时的背景信息可能会导致虚假的安全感或错误的紧迫感。

要更新数据库,你可以使用 searchsploit 命令提供的更新标志。在终端中运行以下命令:

searchsploit -u

你应该会看到输出,表明该工具正在从官方仓库拉取最新更改。输出看起来类似于:

[*] Updating searchsploit...
Already up to date.

通过运行此命令,你的本地 /opt/exploitdb 目录将与 Exploit-DB 上提供的最新漏洞利用程序、Shellcode 和文档保持同步。

注意:更新过程可能需要几分钟才能完成,特别是在检查 exploitdb-papers 时(例如显示 Nothing here (/opt/exploitdb-papers). Starting fresh...)。请耐心等待其完成。如果你不想等待,可以安全地按 Ctrl+C 取消该过程,或者直接打开一个新的终端标签页继续实验,因为主要的漏洞数据库会优先更新。

按软件版本搜索

在这一步中,你将学习如何针对特定软件版本执行基本搜索。

当你扫描目标系统(例如使用 Nmap)时,通常会发现其上运行的服务的确切版本。你可以将这些版本号直接传递给 searchsploit 以查找相关的漏洞利用程序。该工具会搜索数据库中漏洞利用程序的标题和描述以查找匹配项。

这就是为什么上游的精确版本检测非常重要。你的软件识别越准确,漏洞关联就越有用、越精确。

假设你发现了一台运行 vsftpd 2.3.4 的 FTP 服务器。这是一个众所周知的易受攻击的软件版本。要搜索与此特定版本相关的漏洞利用程序,请输入软件名称和版本作为参数:

searchsploit vsftpd 2.3.4

该命令将返回一个格式化的表格,显示漏洞利用程序的标题及其在数据库中的对应路径。你的输出应该如下所示:

------------------------------------------------------------------------ ---------------------------------
 Exploit Title                                                          |  Path
------------------------------------------------------------------------ ---------------------------------
vsftpd 2.3.4 - Backdoor Command Execution                               | unix/remote/17491.rb
vsftpd 2.3.4 - Backdoor Command Execution (Metasploit)                  | linux/remote/16362.rb
------------------------------------------------------------------------ ---------------------------------
Shellcodes: No Results

请注意,搜索结果提供了漏洞的简要描述(在本例中为“后门命令执行”)以及漏洞利用代码文件的路径。文件名中的数字(如 17491)是唯一的 Exploit Database ID (EDB-ID)。

筛选搜索结果

在这一步中,你将学习如何使用过滤器来优化搜索。

有时,一个宽泛的搜索词会返回数百个结果,导致难以找到你需要的内容。searchsploit 提供了几个标志来帮助缩小输出范围。其中两个最有用的标志是 -t(将搜索限制在漏洞标题,而不是整个文件路径或描述)和 --exclude(删除包含特定词的结果)。

假设你正在寻找 Linux 内核的权限提升漏洞利用程序,但你想过滤掉任何拒绝服务 (DoS) 漏洞,因为它们通常对获取访问权限没有帮助。

运行以下命令以在标题中搜索“linux kernel privilege escalation”,同时排除术语“dos”:

searchsploit -t linux kernel privilege escalation --exclude="dos"

你将看到一份专门针对 Linux 内核权限提升的漏洞利用程序列表。输出内容会很长,但比通用搜索要清晰得多:

------------------------------------------------------------------------ ---------------------------------
 Exploit Title                                                          |  Path
------------------------------------------------------------------------ ---------------------------------
Linux Kernel - 'BCC' Local Privilege Escalation                         | linux/local/40759.rb
Linux Kernel - 'BPF' Local Privilege Escalation                         | linux/local/40758.rb
Linux Kernel - 'ptrace_traceme' Local Privilege Escalation              | linux/local/47133.c
...
------------------------------------------------------------------------ ---------------------------------

使用这些筛选技术,你可以快速定位针对特定场景所需的精确漏洞利用程序。

检查漏洞利用代码详情

在这一步中,你将学习如何提取并检查实际的漏洞利用代码。

找到漏洞利用程序只是过程的一部分;在运行它之前,你还必须阅读并理解代码。运行未知的漏洞利用程序可能很危险,或者可能需要特定的修改(例如更改目标 IP 地址或端口)才能正常工作。

searchsploit 允许你使用 -m 标志后跟 EDB-ID,轻松地将漏洞利用程序复制(镜像)到当前工作目录。让我们提取在步骤 2 中找到的 vsftpd 2.3.4 漏洞利用程序,其 EDB-ID 为 17491。

运行以下命令将该漏洞利用程序镜像到你的 ~/project 目录:

searchsploit -m 17491

你应该会看到确认文件已复制的输出:

  Exploit: vsftpd 2.3.4 - Backdoor Command Execution
      URL: https://www.exploit-db.com/exploits/17491
     Path: /opt/exploitdb/exploits/unix/remote/17491.rb
    Codes: CVE-2011-2523, OSVDB-73573
 Verified: True
File Type: Ruby script, ASCII text
Copied to: /home/labex/project/17491.rb

现在文件 17491.rb 位于你的当前目录中,你可以使用 cat 等文本阅读器或 nano 等编辑器检查其内容。运行以下命令查看漏洞利用代码的前几行:

head -n 20 17491.rb

输出将显示 Metasploit 模块的 Ruby 源代码,使你能够阅读注释、理解漏洞(源代码中留下的恶意后门),并查看漏洞利用程序是如何触发它的。

总结

在本实验中,你学习了如何有效地使用 searchsploit 直接从命令行浏览 Exploit Database。你首先更新了本地数据库以确保拥有最新的漏洞信息。然后,你根据特定的软件版本执行了定向搜索,并学习了如何使用排除标志过滤掉不需要的结果。最后,你练习了将漏洞利用源代码提取到本地工作区,以便进行安全的审查和分析。这些技术是漏洞评估和渗透测试工作流程的基础。