Nuclei
新版翻译请点击下列链接
Nuclei新版翻译- 前几周在 Github 上发现了一个很好用的渗透测试平台,虽然说不如 MSF 强大,但是胜在轻量,安装和使用相比较 MSF 更加方便。苦于没有中文使用方法,于是自己翻译了一下,同时已通过该项目 PR
以下为翻译正文:
Nuclei 是一个基于模板的、可配置攻击目标的扫描快速工具,同时还提供了强大的可扩展性和易用性。
基于模板的 nuclei 被用来发送请求给目标,有着实现零误报的优点,并且可以对已知的路径进行有效的扫描。nuclei 的主要用于在初期的探测阶段快速地对已知的且易于检测的漏洞或者 CVE 进行扫描。如果存在 WAF 的话,nuclei 使用retryablehttp-go库来处理各种错误,并且重新尝试攻击,这也是我们自定义功能的核心模块之一。
我们也维护一个具有各个类型的模板的开源库,我们希望你也能贡献一些模板,贡献的这些模板最好是有效的,并且能允许每个人基于你的模板重新构建。查看nuclei.projectdiscovery.io这个网站去学习制作模板的入门知识。
目录
功能
- 有着易于开发的、简单的、模块化的代码库
- 使用了基于模板的引擎,运行速度极快,可以修改所以配置
- 可以对特殊情况处理、重试、绕过等,可以绕过 WAF
- 智能匹配,零误报
安装
二进制文件安装
二进制文件安装很简单,你可以从Releases页面下载已经构建好的二进制文件压缩包,使用解压工具提取下载的压缩包,并将解压的文件夹移动到 $PATH 目录,就可以直接使用了。
Download latest binary from https://github.com/projectdiscovery/nuclei/releases
▶ tar -xzvf nuclei-linux-amd64.tar.gz
▶ mv nuclei /usr/local/bin/
▶ nuclei -version
源码安装
nuclei 需要go1.14+才能成功安装,运行以下命令获取 repo
▶ GO111MODULE=on go get -v github.com/projectdiscovery/nuclei/v2/cmd/nuclei
GitHub 安装
▶ git clone https://github.com/projectdiscovery/nuclei.git; cd nuclei/v2/cmd/nuclei/; go build; mv nuclei /usr/local/bin/; nuclei -version
Nuclei 模板
你可以使用update-templates
来下载和更新 nuclei 模板,该命令会从 unclei 的[模板库]()中下载最新版本,这个由社区来维护的库是可以随时使用的。
▶ nuclei -update-templates
此外您可以根据自己的工作情况或者需求编写模板,请参阅nuclei模板向导去编写自定义模板
用法
nuclei -h
这条命令会显示帮助,以下是 nuclei 支持的所有命令
命令 | 描述 | 例子 |
---|---|---|
bulk-size | 每个模板最大并行的主机数(默认25) | nuclei -bulk-size 25 |
burp-collaborator-biid | 使用burp-collaborator插件 | nuclei -burp-collaborator-biid XXXX |
c | 并行的最大模板数量(默认10) | nuclei -c 10 |
l | 对URL列表进行测试 | nuclei -l urls.txt |
target | 对目标进行测试 | nuclei -target hxxps://example.com |
t | 要检测的模板种类 | nuclei -t git-core.yaml -t cves/ |
no-color | 输出不显示颜色 | nuclei -no-color |
no-meta | 不显示匹配的元数据 | nuclei -no-meta |
json | 输出为json格式 | nuclei -json |
include-rr | json输出格式中包含请求和响应数据 | nuclei -json -include-rr |
o | 输出为文件 | nuclei -o output.txt |
project | 避免发送相同的请求 | nuclei -project |
stats | 使用进度条 | nuclei -stats |
silent | 只输出测试成功的结果 | nuclei -silent |
retries | 失败后的重试次数 | nuclei -retries 1 |
timeout | 超时时间(默认为5秒) | nuclei -timeout 5 |
trace-log | 输出日志到log文件 | nuclei -trace-log logs |
rate-limit | 每秒最大请求数(默认150) | nuclei -rate-limit 150 |
severity | 根据严重性选择模板 | nuclei -severity critical,high |
stop-at-first-match | 第一次匹配不要处理HTTP请求 | nuclei -stop-at-frst-match |
exclude | 排除的模板或文件夹 | nuclei -exclude panels -exclude tokens |
debug | 调试请求或者响应 | nuclei -debug |
update-templates | 下载或者升级模板 | nuclei -update-templates |
update-directory | 选择储存模板的目录(可选) | nuclei -update-directory templates |
tl | 列出可用的模板 | nuclei -tl |
templates-version | 显示已安装的模板版本 | nuclei -templates-version |
v | 显示发送请求的详细信息 | nuclei -v |
version | 显示nuclei的版本号 | nuclei -version |
proxy-url | 输入代理地址 | nuclei -proxy-url hxxp://127.0.0.1:8080 |
proxy-socks-url | 输入socks代理地址 | nuclei -proxy-socks-url socks5://127.0.0.1:8080 |
random-agent | 使用随机的UA | nuclei -random-agent |
H | 自定义请求头 | nuclei -H “x-bug-bounty:hacker” |
运行 Nuclei
运行单个模板
这将对urls.txt
中所有的主机运行git-core.yaml
并返回结果到results.txt
▶ nuclei -l urls.txt -t files/git-core.yaml -o results.txt
你可以轻松的通过管道使用标准的输入(STDIN)传递 URL 列表。
▶ cat urls.txt | nuclei -t files/git-core.yaml -o results.txt
?Nuclei 可以接受如下列表的 URL 作为输入,例如以下 URL:
https://test.some-site.com
http://vuls-testing.com
https://test.com
运行多个模板
这将会对urls.txt
中所有的URL运行cves
和files
模板检查,并返回输出到results.txt
▶ nuclei -l urls.txt -t cves/ -t files/ -o results.txt
使用 subfinder 运行
▶ subfinder -d hackerone.com -silent | httpx -silent | nuclei -t cves/ -o results.txt
在 docker 中运行
你需要使用nuclei的docker镜像来运行
▶ docker pull projectdiscovery/nuclei
下载并构建完成后,运行以下命令:
▶ docker run -it projectdiscovery/nuclei
这将会对urls.txt
中的 URL 通过 docker 中的 nuclei 进行检测,并将结果输出到本机的results.txt
文件的:
▶ cat urls.txt | docker run -v /path/to/nuclei-templates:/app/nuclei-templates -v /path/to/nuclei/config:/app/.nuclei-config.json -i projectdiscovery/nuclei -t /app/nuclei-templates/files/git-config.yaml > results.txt
记住更改的模板路径到本机
速率限制
Nuclei 有多种控制速率的方法,包括并行执行多个模板、并行检查多个主机,以及使 nuclei 限制全局的请求速率,下面就是示例。
-c
参数 => 限制并行的模板数-bulk-size
参数 => 限制并行的主机数-rate-limit
参数 => 全局速率限制
如果你想快速扫描或者控制扫描,请使用这些标志并输入限制数,速率限制
只保证控制传出的请求,与其他参数无关。
排除模板
Nuclei模板包含多种检查,其中有许多对攻击有用的检查,但并不是都有用的。如果您只希望扫描少数特定的模板或目录,则可以使用如下的参数筛选模板,或将某些模板排除。
排除模板运行
我们不建议同时运行所有的 nuclei 模板,如果要排除模板,可以使用exclude
参数来排除特定的目录或模板。
nuclei -l urls.txt -t nuclei-templates -exclude panels/ -exclude technologies -exclude files/wp-xmlrpc.yaml
注意:如上述示例中显示的那样,目录和特定模板都将不会扫描
基于严重性运行模板
您可以根据模板的严重性运行模板,扫描时可以选择单个严重性或多个严重性。
nuclei -l urls.txt -t cves/ -severity critical,medium
上面的例子将运行cves
目录下所有严重
和中等
的模板。
nuclei -l urls.txt -t panels/ -t technologies -severity info
上面的例子将运行panels
和technologies
目录下严重性标记为info
的模板
使用.nuclei-ignore
文件排除模板
自从 nuclei 的v2.1.1版本以来,我们添加了对.nuclei-ignore
文件的支持,该文件与update-templates
参数一起使用,在 .nuclei-ignore 文件中,您可以定义要从 nuclei 扫描中排除的所有模板目录或者模板路径,要开始使用此功能,请确保使用nuclei-update-templates
参数安装 nuclei 模板,现在可以根据.nuclei-ignore
的文件来添加、更新、删除模板文件。
nano ~/nuclei-templates/.nuclei-ignore
默认的nuclei 忽略列表可以访问这里,如果不想排除任何内容,只需要删除.nuclei-ignore
文件。
? 笔记
- 进度条是实验性功能,在某些情况下可能无法使用。
- 进度条不适用于工作流,因为是条件执行,所以不准确。
致谢
也要看看这些类似的好项目,或许它们也适合你:
Burp Suite, FFuF, Jaeles, Qsfuzz, Inception, Snallygaster, Gofingerprint, Sn1per, Google tsunami, ChopChop
Nuclei是由projectdiscovery团队用♥制作的,当然社区也贡献了很多,通过 Thanks.md文件以获取更多详细信息。
《Nuclei渗透工具用法》链接:https://xdym11235.com/archives/38.html
具体版权规定详见侧栏版权说明页面
佬,windows上装有教程嘛
github可以下载
我这边有点问题,go语言安装下载了,环境变量配置了,但是nuclei就是没办法运行,github下载下来解压也没法用,命令行中使用go install -v下载下来也不行,不知道那个地方出错了@(泪)
报错信息发一下
可以加你一个联系方式吗?我直接截图给你看,没有报错信息,就是运行nuclei.exe文件打开过个三四秒他就自动退出了
[WRN] Found 26 template[s] loaded with deprecated paths, update before v3 for continued support.
[WRN] Found 1 templates with runtime error (use -validate flag for further examination)
[INF] Current nuclei version: v3.2.4 (latest)
[INF] Current nuclei-templates version: v9.8.1 (latest)
[WRN] Scan results upload to cloud is disabled.
[INF] New templates added in latest release: 77
[INF] Templates loaded for current scan: 7841
[INF] Executing 7841 signed templates from projectdiscovery/nuclei-templates
这是正常的啊,nuclei是命令行工具,只能在终端运行,双击运行没用
非常感谢,我搞错了,我以为打开方式是双击,感谢
emmm确认了,是大佬
我不是哦