免责声明:使用本教程或工具,用户必须遵守所有适用的法律和法规,并且用户应自行承担所有风险和责任。
一、介绍
Searchsploit是一款基于命令行的搜索工具,专为Exploit-DB设计。Exploit-DB是一个由Offensive Security赞助的开源漏洞利用程序数据库,包含了大量的漏洞信息和渗透脚本。Searchsploit允许用户通过简单的命令,在Exploit-DB中快速搜索和定位所需的漏洞信息
主要功能
- 搜索漏洞和利用代码:通过关键词、CVE 编号、平台或软件名来查找相关的漏洞。
- 列出 Exploit-DB 中的 exploit:可以列出与某个特定软件或版本相关的所有漏洞利用代码。
- 支持本地搜索:Searchsploit 将 Exploit-DB 的内容下载到本地,因此可以离线使用。
帮助文档:https://www.exploit-db.com/searchsploit
EXP下载:https://www.exploit-db.com/
二、安装Searchsploit
sudo apt update && sudo apt -y install exploitdb
三、升级Searchsploit
searchsploit -u
四、参数选项
用法格式
Usage: searchsploit [options] term1 [term2] ... [termN]
1. 搜索项选项
-
-c, --case [term]
- 执行区分大小写的搜索。默认情况下,
searchsploit
的搜索是不区分大小写的
- 执行区分大小写的搜索。默认情况下,
-
-e, --exact [term]
- 执行完全匹配搜索,即按照确切的顺序匹配漏洞利用标题中的所有术语。默认情况下,
searchsploit
会执行每个术语的 AND 匹配
- 执行完全匹配搜索,即按照确切的顺序匹配漏洞利用标题中的所有术语。默认情况下,
-
-s, --strict
- 执行严格搜索,这意味着输入的值必须完全匹配,禁用了版本范围的模糊搜索
-
-t, --title [term]
- 仅搜索漏洞利用的标题,而不是标题和文件路径
-
–exclude=“term”
- 从结果中排除特定的值。可以使用 “|” 来分隔多个值
-
–cve [CVE]
- 根据 Common Vulnerabilities and Exposures (CVE) 值搜索
2. 输出选项
- -j, --json [term]
- 以 JSON 格式显示搜索结果
- -o, --overflow [term]
- 允许漏洞利用标题超出其列宽,不进行截断
- -p, --path [EDB-ID]
- 显示特定漏洞利用文件(由 Exploit Database ID 指定)的完整路径,并且如果可能的话,将路径复制到剪贴板
- -v, --verbose
- 在输出中显示更多的信息
- -w, --www [term]
- 显示指向 Exploit-DB.com 的 URL 而不是本地路径
- –id
- 显示 Exploit Database ID(EDB-ID)值而不是本地路径
- –disable-colour
- 禁用搜索结果中的彩色高亮显示
3. 非搜索选项
- -m, --mirror [EDB-ID]
- 将指定的漏洞利用代码(由 Exploit Database ID 指定)复制到当前工作目录
- -x, --examine [EDB-ID]
- 使用环境变量
$PAGER
指定的程序(如less
或more
)打开并查看指定的漏洞利用代码
- 使用环境变量
4. 帮助和更新选项
- -h, --help
- 显示帮助屏幕,提供所有
searchsploit
选项的概览
- 显示帮助屏幕,提供所有
- -u, --update
- 检查并安装任何可用的 exploitdb 包更新
5. 自动化选项
- –nmap [file.xml]
- 检查 Nmap 的 XML 输出文件中所有结果的服务版本,并与 Exploit Database 中的漏洞利用进行匹配
五、搜索
1. 基本搜索
只需添加任意数量的关键词即可进行基本搜索:
searchsploit <关键词>
查找mysql相关的漏洞:
searchsploit mysql
查找mysql sql注入相关的漏洞:
searchsploit mysql sql injection
会匹配mysql、sql、injection三个关键词
searchsploit mysql "sql injection"
用引号引起来 ,就会匹配sql injection这个关键词,而不会被分开
2. 标题搜索
使用 -t
选项可以仅对漏洞利用脚本的标题进行搜索:
searchsploit -t <关键词>
搜索标题中包含 smb
、windows
和 remote
的漏洞信息:
searchsploit -t smb windows remote
3. CVE 搜索
使用 --cve
选项可以直接根据 CVE 编号搜索漏洞:
searchsploit --cve <CVE-ID>
搜索 CVE-2017-0146 的漏洞:
searchsploit --cve CVE-2017-0146
4. 区分大小写搜索
使用 -c
选项可以启用区分大小写的搜索:
searchsploit -c <关键词>
对漏洞标题中严格区分大小写的关键词 smb
、windows
和 remote
进行搜索:
searchsploit -c -t smb windows remote
查不到结果,因为限制了小写,但是数据库中的单词首字母都是大写
5. 完全匹配搜索
使用 -e
选项可以对漏洞利用脚本的标题进行完全匹配的搜索:
searchsploit -e "<完整关键词>"
查找完全匹配 wordpress 4.9
的漏洞:
searchsploit -e "wordpress 4.9"
启用-e选项
未启用时
6. 严格搜索
使用 -s
选项进行严格模式搜索,结果中只包含完全匹配的条目:
searchsploit -s <关键词>
严格搜索 openssl
的漏洞:
searchsploit -s "openssl < 0.9"
searchsploit -s openssl
暂时没看出有什么差别,说是禁用了版本范围的模糊搜索
7. 排除搜索
使用 --exclude
选项可以从搜索结果中排除不需要的内容。多个关键词可以用管道符 |
分隔,从而更精确地筛选结果:
searchsploit <关键词> --exclude="<关键词1>|<关键词2>"
搜索与 linux kernel 3.2
相关的漏洞,同时排除包含 (PoC)
或 /dos/
的条目:
searchsploit linux kernel 3.2 --exclude="(PoC)|/dos/"
六、输出
1. 查看漏洞详情
使用 -v
选项会在输出中显示更多信息:
searchsploit <关键词/漏洞编号> -v
搜索 OpenSSL 相关漏洞并查看详情:
searchsploit openssl -v
2. 以 JSON 文件格式输出结果
使用 -j
选项可以将搜索结果以 JSON 格式输出,便于进一步处理或与其他工具配合使用:
searchsploit <关键词/漏洞编号> -j
将 Apache 的漏洞以 JSON 格式输出:
searchsploit apache -j
看上去十分杂乱,通常会指定一个具体的漏洞编号来输出
searchsploit 21534 -j
3. 显示 EXP 文件完整路径
使用 -p
选项显示指定漏洞利用的完整路径:
searchsploit -p <漏洞编号id>
查看 ID 为 47832
的漏洞利用路径:
searchsploit -p 47832
4. 获取漏洞链接
使用 -w
选项生成一个包含漏洞链接的 URL,方便直接在浏览器中访问:
searchsploit <关键词> -w
示例:
获取 CVE-2021-44228(Log4j 漏洞)的链接:
searchsploit log4j -w
输出:
5. 复制 EXP 到当前目录
使用 -m
选项可以将指定的漏洞利用脚本复制到当前工作目录:
searchsploit -m <EXP-ID>
将 ID 为 21534
的漏洞利用脚本复制到当前目录:
searchsploit -m 21534
结果:
七、高级玩法
1. 管道输出
使用管道和其他命令(如 grep
)对搜索结果进行进一步筛选
searchsploit <关键词> | grep <筛选条件>
1)搜索所有针对 Linux Kernel 2.6 的提权漏洞:
searchsploit privilege | grep -i linux | grep -i kernel | grep 2.6
解释:
privilege
:搜索关键词,意为提权。grep -i linux
:筛选出包含 “linux” 的结果。grep -i kernel
:进一步筛选出包含 “kernel” 的结果。grep 2.6
:聚焦于 Linux Kernel 版本 2.6 的漏洞。
2)搜索 mysql 的漏洞并通过 grep 进一步过滤结果:
searchsploit mysql | grep -i exploit
3)使用 jq 处理 JSON 格式的输出:
sudo apt install jq
searchsploit mysql -j | jq '.RESULTS_EXPLOIT[] | {Title: .Title, Path: .Path}'
这就比searchsploit的-j选项默认输出的json格式更加可观
2. 定位 EXP 位置
如果想直接定位漏洞文件的具体存储位置,可以使用 locate
命令:
locate <exp-path>
定位 ID 为 8572 的漏洞文件:
先查看漏洞文件路径
再定位详细路径
locate linux/local/8572.c
3. 结合多个选项进行精准搜索
搜索标题中包含 smb、windows 和 remote 的漏洞,同时排除 PoC 脚本:
searchsploit -t smb windows remote --exclude="PoC"
4. 配合 Nmap 查询漏洞
1)生成 Nmap 的 XML 输出
首先,用 Nmap 扫描目标并保存结果为 XML 文件:
nmap -sV -oX output.xml <目标IP>
2)使用 Searchsploit 解析 Nmap 的 XML 输出
通过 Searchsploit 的 --nmap 参数分析 Nmap 的 XML 输出文件:
searchsploit --nmap output.xml
Searchsploit 将会读取 XML 文件中的服务信息,对比 Exploit-DB 数据库,查找对应的漏洞利用脚本,输出与目标服务相关的漏洞及漏洞利用脚本的详细信息
比如从xml读取到了openssh服务,就会输出与目标服务相关的漏洞及漏洞利用脚本的详细信息
还读取到apache服务
文章原创,欢迎转载,请注明文章出处